[Trace - 12:34:32 PM] Sending request 'initialize - (1)'. Params: { "processId": 29578, "rootPath": "/Users/s04407/OSS/flutter_compass/", "rootUri": "file:///Users/s04407/OSS/flutter_compass/", "capabilities": { "workspace": { "workspaceEdit": { "documentChanges": true, "resourceOperations": [ "create", "rename", "delete" ] }, "applyEdit": true, "symbol": { "symbolKind": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ] } }, "executeCommand": { "dynamicRegistration": false }, "didChangeWatchedFiles": { "dynamicRegistration": true }, "workspaceFolders": true, "configuration": true }, "textDocument": { "declaration": { "linkSupport": true }, "definition": { "linkSupport": true }, "implementation": { "linkSupport": true }, "typeDefinition": { "linkSupport": true }, "synchronization": { "willSave": true, "didSave": true, "willSaveWaitUntil": true }, "documentSymbol": { "symbolKind": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ] }, "hierarchicalDocumentSymbolSupport": true }, "formatting": { "dynamicRegistration": true }, "codeAction": { "dynamicRegistration": true, "codeActionLiteralSupport": { "codeActionKind": { "valueSet": [ "", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" ] } } }, "completion": { "completionItem": { "snippetSupport": true }, "contextSupport": true }, "signatureHelp": { "signatureInformation": { "parameterInformation": { "labelOffsetSupport": true } } }, "documentLink": { "dynamicRegistration": true }, "hover": { "contentFormat": [ "plaintext", "markdown" ] }, "foldingRange": { "dynamicRegistration": true, "rangeLimit": null, "lineFoldingOnly": null } } }, "initializationOptions": null } [Trace - 12:34:34 PM] Received response 'initialize - (1)' in 187ms. Result: { "capabilities": { "workspace": { "workspaceFolders": { "changeNotifications": true, "supported": true } }, "declarationProvider": { "commands": [ "edit.sortMembers", "edit.organizeImports", "edit.sendWorkspaceEdit" ] }, "foldingRangeProvider": true, "renameProvider": true, "documentOnTypeFormattingProvider": { "moreTriggerCharacter": [ ";" ], "firstTriggerCharacter": "}" }, "documentRangeFormattingProvider": null, "documentFormattingProvider": true, "codeActionProvider": { "codeActionKinds": [ "source", "source.organizeImports", "source.sortMembers", "quickfix" ] }, "workspaceSymbolProvider": true, "documentSymbolProvider": true, "documentHighlightProvider": true, "referencesProvider": true, "implementationProvider": true, "definitionProvider": true, "signatureHelpProvider": { "triggerCharacters": [] }, "completionProvider": { "triggerCharacters": [ ".", "=", "(", "$" ], "resolveProvider": true }, "hoverProvider": true, "textDocumentSync": { "willSaveWaitUntil": null, "willSave": null, "change": 2, "openClose": true } } } [Trace - 12:34:34 PM] Sending notification 'initialized'. Params: { } [Trace - 12:34:34 PM] Sending notification 'textDocument/didOpen'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "languageId": "dart", "version": 0, "text": "import 'dart:async';\nimport 'dart:convert';\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:sensors/sensors.dart';\nimport 'package:flutter_compass/flutter_compass.dart';\nimport 'package:flare_dart/math/mat2d.dart';\nimport 'package:flare_flutter/flare.dart';\nimport 'package:flare_flutter/flare_controller.dart';\nimport 'package:flare_flutter/flare_actor.dart';\nimport 'package:location/location.dart';\nimport 'package:http/http.dart' as http;\n\nvoid main() {\n SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);\n runApp(MaterialApp(\n title: 'Compass',\n theme: ThemeData.dark(),\n home: HomePage(),\n ));\n}\n\nclass Anim {\n String name;\n double _value = 0, pos = 0, min, max, speed;\n bool endless = false;\n ActorAnimation actor;\n Anim(this.name, this.min, this.max, this.speed, this.endless);\n get value => _value * (max - min) + min;\n set value(double v) => _value = (v - min) / (max - min);\n}\n\nclass AniControler implements FlareController {\n List items;\n AniControler(this.items);\n\n @override\n bool advance(FlutterActorArtboard board, double elapsed) {\n for (var a in items) {\n if (a.actor == null) continue;\n var d = (a.pos - a._value).abs();\n var m = a.pos > a._value ? -1 : 1;\n if (a.endless && d > 0.5) {\n m = -m;\n d = 1.0 - d;\n }\n var e = elapsed / a.actor.duration * (1 + d * a.speed);\n a.pos = e < d ? (a.pos + e * m) : a._value;\n if (a.endless) a.pos %= 1.0;\n a.actor.apply(a.actor.duration * a.pos, board, 1.0);\n }\n return true;\n }\n\n @override\n void initialize(FlutterActorArtboard board) {\n items.forEach((a) => a.actor = board.getAnimation(a.name));\n }\n\n @override\n void setViewTransform(Mat2D viewTransform) {}\n\n operator [](String name) {\n for (var a in items) if (a.name == name) return a;\n }\n}\n\nclass HomePage extends StatefulWidget {\n @override\n _HomePageState createState() => _HomePageState();\n}\n\nclass _HomePageState extends State {\n int mode = 0;\n AniControler compass;\n AniControler earth;\n double lat, lon;\n\n String city = '', weather = '', icon = '01d';\n double temp = 0, humidity = 0;\n\n void getWeather() async {\n var key = '7c5c03c8acacd8dea3abd517ae22af34';\n var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n var resp = await http.Client().get(url);\n var data = json.decode(resp.body);\n city = data['name'];\n var m = data['weather'][0];\n weather = m['main'];\n icon = m['icon'];\n m = data['main'];\n temp = m['temp'] - 273.15;\n humidity = m['humidity'] + 0.0;\n setState(() {});\n }\n\n void setLocation(double lati, double long, [bool weather = true]) {\n earth['lat'].value = lat = lati;\n earth['lon'].value = lon = long;\n if (weather) getWeather();\n setState(() {});\n }\n\n @override\n void initState() {\n super.initState();\n\n compass = AniControler([\n Anim('dir', 0, 360, 30, true),\n Anim('hor', -9.6, 9.6, 20, false),\n Anim('ver', -9.6, 9.6, 20, false),\n ]);\n\n earth = AniControler([\n Anim('dir', 0, 360, 20, true),\n Anim('lat', -90, 90, 1, false),\n Anim('lon', -180, 180, 1, true),\n ]);\n\n FlutterCompass.events.listen((angle) {\n compass['dir'].value = angle;\n earth['dir'].value = angle;\n });\n\n accelerometerEvents.listen((event) {\n compass['hor'].value = -event.x;\n compass['ver'].value = -event.y;\n });\n\n setLocation(0, 0);\n Timer.periodic(Duration(seconds: 15), (t) {\n Location().getLocation().then((p) => setLocation(p.latitude, p.longitude));\n });\n }\n\n Widget Compass() {\n return GestureDetector(\n onTap: () => setState(() => mode++),\n child: FlareActor(\"assets/compass.flr\", animation: 'mode${mode % 2}', controller: compass),\n );\n }\n\n Widget Earth() {\n return Column(mainAxisAlignment: MainAxisAlignment.center, children: [\n Text(city, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),\n Text('lat:${lat.toStringAsFixed(2)} lon:${lon.toStringAsFixed(2)}'),\n Expanded(\n child: GestureDetector(\n onPanUpdate: (pan) => setLocation((lat - pan.delta.dy).clamp(-90.0, 90.0), (lon - pan.delta.dx + 180) % 360 - 180, false),\n onPanEnd: (pan) => getWeather(),\n child: FlareActor(\"assets/earth.flr\", animation: \"pulse\", controller: earth),\n ),\n ),\n Row(mainAxisAlignment: MainAxisAlignment.center, children: [\n Container(width: 128, height: 128, child: FlareActor('assets/weather.flr', animation: icon)),\n Column(crossAxisAlignment: CrossAxisAlignment.start, children: [\n Text('${temp.toInt()}°', style: TextStyle(fontSize: 60)),\n Text(weather),\n Text('Humidity ${humidity.toInt()}%'),\n ]),\n ]),\n ]);\n }\n\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n body: PageView(\n controller: PageController(viewportFraction: 0.8),\n scrollDirection: Axis.vertical,\n children: [Compass(), Earth()],\n ),\n );\n }\n}\n" } } [Trace - 12:34:34 PM] Sending request 'textDocument/codeAction - (2)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 47, "character": 0 }, "end": { "line": 47, "character": 49 } }, "context": { "diagnostics": [] } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (3)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 6 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (4)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 8 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (5)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 12 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (6)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 14 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (7)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 16 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (8)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 18 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (9)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 23 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (10)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 25 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (11)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 29 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (12)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 31 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (13)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 35 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (14)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 40 } } [Trace - 12:34:34 PM] Sending request 'textDocument/hover - (15)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 47, "character": 42 } } [Trace - 12:34:36 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:34:36 PM] Sending request 'textDocument/codeAction - (16)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 80, "character": 0 }, "end": { "line": 80, "character": 0 } }, "context": { "diagnostics": [] } } [Trace - 12:34:36 PM] Sending request 'textDocument/documentHighlight - (17)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 80, "character": 0 } } [Trace - 12:34:36 PM] Sending request 'textDocument/hover - (18)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 80, "character": 0 } } [Trace - 12:34:36 PM] Sending request 'textDocument/signatureHelp - (19)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 80, "character": 0 } } [Trace - 12:34:38 PM] Sending request 'textDocument/codeAction - (20)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 64, "character": 0 }, "end": { "line": 64, "character": 3 } }, "context": { "diagnostics": [] } } [Trace - 12:34:38 PM] Sending request 'textDocument/documentHighlight - (21)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 64, "character": 2 } } [Trace - 12:34:38 PM] Sending request 'textDocument/hover - (22)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 64, "character": 2 } } [Trace - 12:34:38 PM] Sending request 'textDocument/signatureHelp - (23)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 64, "character": 2 } } [Trace - 12:34:39 PM] Sending request 'textDocument/codeAction - (24)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 65, "character": 0 }, "end": { "line": 65, "character": 1 } }, "context": { "diagnostics": [] } } [Trace - 12:34:39 PM] Sending request 'textDocument/hover - (25)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 65, "character": 0 } } [Trace - 12:34:39 PM] Sending request 'textDocument/signatureHelp - (26)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 65, "character": 0 } } [Trace - 12:34:45 PM] Sending notification 'textDocument/didOpen'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "languageId": "dart", "version": 0, "text": "import 'dart:async';\nimport 'dart:convert';\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:sensors/sensors.dart';\nimport 'package:flutter_compass/flutter_compass.dart';\nimport 'package:flare_dart/math/mat2d.dart';\nimport 'package:flare_flutter/flare.dart';\nimport 'package:flare_flutter/flare_controller.dart';\nimport 'package:flare_flutter/flare_actor.dart';\nimport 'package:location/location.dart';\nimport 'package:http/http.dart' as http;\n\nvoid main() {\n SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);\n runApp(MaterialApp(\n title: 'Compass',\n theme: ThemeData.dark(),\n home: HomePage(),\n ));\n}\n\nclass Anim {\n String name;\n double _value = 0, pos = 0, min, max, speed;\n bool endless = false;\n ActorAnimation actor;\n Anim(this.name, this.min, this.max, this.speed, this.endless);\n get value => _value * (max - min) + min;\n set value(double v) => _value = (v - min) / (max - min);\n}\n\nclass AniControler implements FlareController {\n List items;\n AniControler(this.items);\n\n @override\n bool advance(FlutterActorArtboard board, double elapsed) {\n for (var a in items) {\n if (a.actor == null) continue;\n var d = (a.pos - a._value).abs();\n var m = a.pos > a._value ? -1 : 1;\n if (a.endless && d > 0.5) {\n m = -m;\n d = 1.0 - d;\n }\n var e = elapsed / a.actor.duration * (1 + d * a.speed);\n a.pos = e < d ? (a.pos + e * m) : a._value;\n if (a.endless) a.pos %= 1.0;\n a.actor.apply(a.actor.duration * a.pos, board, 1.0);\n }\n return true;\n }\n\n @override\n void initialize(FlutterActorArtboard board) {\n items.forEach((a) => a.actor = board.getAnimation(a.name));\n }\n\n @override\n void setViewTransform(Mat2D viewTransform) {}\n\n operator [](String name) {\n for (var a in items) if (a.name == name) return a;\n }\n}\n\nclass HomePage extends StatefulWidget {\n @override\n _HomePageState createState() => _HomePageState();\n}\n\nclass _HomePageState extends State {\n int mode = 0;\n AniControler compass;\n AniControler earth;\n double lat, lon;\n\n String city = '', weather = '', icon = '01d';\n double temp = 0, humidity = 0;\n\n void getWeather() async {\n var key = '7c5c03c8acacd8dea3abd517ae22af34';\n var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n var resp = await http.Client().get(url);\n var data = json.decode(resp.body);\n city = data['name'];\n var m = data['weather'][0];\n weather = m['main'];\n icon = m['icon'];\n m = data['main'];\n temp = m['temp'] - 273.15;\n humidity = m['humidity'] + 0.0;\n setState(() {});\n }\n\n void setLocation(double lati, double long, [bool weather = true]) {\n earth['lat'].value = lat = lati;\n earth['lon'].value = lon = long;\n if (weather) getWeather();\n setState(() {});\n }\n\n @override\n void initState() {\n super.initState();\n\n compass = AniControler([\n Anim('dir', 0, 360, 30, true),\n Anim('hor', -9.6, 9.6, 20, false),\n Anim('ver', -9.6, 9.6, 20, false),\n ]);\n\n earth = AniControler([\n Anim('dir', 0, 360, 20, true),\n Anim('lat', -90, 90, 1, false),\n Anim('lon', -180, 180, 1, true),\n ]);\n\n FlutterCompass.events.listen((angle) {\n compass['dir'].value = angle;\n earth['dir'].value = angle;\n });\n\n accelerometerEvents.listen((event) {\n compass['hor'].value = -event.x;\n compass['ver'].value = -event.y;\n });\n\n setLocation(0, 0);\n Timer.periodic(Duration(seconds: 15), (t) {\n Location().getLocation().then((p) => setLocation(p.latitude, p.longitude));\n });\n }\n\n Widget Compass() {\n return GestureDetector(\n onTap: () => setState(() => mode++),\n child: FlareActor(\"assets/compass.flr\", animation: 'mode${mode % 2}', controller: compass),\n );\n }\n\n Widget Earth() {\n return Column(mainAxisAlignment: MainAxisAlignment.center, children: [\n Text(city, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),\n Text('lat:${lat.toStringAsFixed(2)} lon:${lon.toStringAsFixed(2)}'),\n Expanded(\n child: GestureDetector(\n onPanUpdate: (pan) => setLocation((lat - pan.delta.dy).clamp(-90.0, 90.0), (lon - pan.delta.dx + 180) % 360 - 180, false),\n onPanEnd: (pan) => getWeather(),\n child: FlareActor(\"assets/earth.flr\", animation: \"pulse\", controller: earth),\n ),\n ),\n Row(mainAxisAlignment: MainAxisAlignment.center, children: [\n Container(width: 128, height: 128, child: FlareActor('assets/weather.flr', animation: icon)),\n Column(crossAxisAlignment: CrossAxisAlignment.start, children: [\n Text('${temp.toInt()}°', style: TextStyle(fontSize: 60)),\n Text(weather),\n Text('Humidity ${humidity.toInt()}%'),\n ]),\n ]),\n ]);\n }\n\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n body: PageView(\n controller: PageController(viewportFraction: 0.8),\n scrollDirection: Axis.vertical,\n children: [Compass(), Earth()],\n ),\n );\n }\n}\n" } } [Trace - 12:34:47 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 135 }, "start": { "character": 9, "line": 135 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 142 }, "start": { "character": 9, "line": 142 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:34:47 PM] Sending request 'textDocument/codeAction - (27)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 66, "character": 0 }, "end": { "line": 66, "character": 0 } }, "context": { "diagnostics": [] } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (3)' in 975ms. Result: { "range": { "end": { "character": 7, "line": 47 }, "start": { "character": 6, "line": 47 } }, "contents": { "value": "```dart\nAnim a\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (4)' in 975ms. Result: { "range": { "end": { "character": 11, "line": 47 }, "start": { "character": 8, "line": 47 } }, "contents": { "value": "```dart\ndouble pos\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (5)' in 975ms. Result: { "range": { "end": { "character": 48, "line": 47 }, "start": { "character": 6, "line": 47 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (6)' in 975ms. Result: { "range": { "end": { "character": 15, "line": 47 }, "start": { "character": 14, "line": 47 } }, "contents": { "value": "```dart\ndouble e\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (7)' in 975ms. Result: { "range": { "end": { "character": 19, "line": 47 }, "start": { "character": 14, "line": 47 } }, "contents": { "value": "```dart\n<(num other) → bool\n```\n*dart.core*\n\n---\nRelational less than operator.", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (8)' in 975ms. Result: { "range": { "end": { "character": 19, "line": 47 }, "start": { "character": 18, "line": 47 } }, "contents": { "value": "```dart\ndouble d\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (9)' in 975ms. Result: { "range": { "end": { "character": 24, "line": 47 }, "start": { "character": 23, "line": 47 } }, "contents": { "value": "```dart\nAnim a\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (10)' in 975ms. Result: { "range": { "end": { "character": 28, "line": 47 }, "start": { "character": 25, "line": 47 } }, "contents": { "value": "```dart\ndouble pos\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (11)' in 975ms. Result: { "range": { "end": { "character": 36, "line": 47 }, "start": { "character": 23, "line": 47 } }, "contents": { "value": "```dart\n+(num other) → double\n```\n*dart.core*\n\n---\nAddition operator.", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (12)' in 975ms. Result: { "range": { "end": { "character": 32, "line": 47 }, "start": { "character": 31, "line": 47 } }, "contents": { "value": "```dart\ndouble e\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (13)' in 975ms. Result: { "range": { "end": { "character": 36, "line": 47 }, "start": { "character": 35, "line": 47 } }, "contents": { "value": "```dart\nint m\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (14)' in 975ms. Result: { "range": { "end": { "character": 41, "line": 47 }, "start": { "character": 40, "line": 47 } }, "contents": { "value": "```dart\nAnim a\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (15)' in 975ms. Result: { "range": { "end": { "character": 48, "line": 47 }, "start": { "character": 42, "line": 47 } }, "contents": { "value": "```dart\ndouble _value\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/codeAction - (2)' in 26ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " }\n", "range": { "end": { "character": 0, "line": 48 }, "start": { "character": 0, "line": 48 } } }, { "newText": " a.pos = e < d ? (a.pos + e * m) : a._value;\n", "range": { "end": { "character": 0, "line": 48 }, "start": { "character": 0, "line": 47 } } }, { "newText": " {\n", "range": { "end": { "character": 0, "line": 47 }, "start": { "character": 0, "line": 47 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with block" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " if (condition) {\n a.pos = e < d ? (a.pos + e * m) : a._value;\n }\n", "range": { "end": { "character": 0, "line": 48 }, "start": { "character": 0, "line": 47 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'if'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " while (condition) {\n a.pos = e < d ? (a.pos + e * m) : a._value;\n }\n", "range": { "end": { "character": 0, "line": 48 }, "start": { "character": 0, "line": 47 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var item in iterable) {\n a.pos = e < d ? (a.pos + e * m) : a._value;\n }\n", "range": { "end": { "character": 0, "line": 48 }, "start": { "character": 0, "line": 47 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for-in'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var v = init; condition; increment) {\n a.pos = e < d ? (a.pos + e * m) : a._value;\n }\n", "range": { "end": { "character": 0, "line": 48 }, "start": { "character": 0, "line": 47 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " do {\n a.pos = e < d ? (a.pos + e * m) : a._value;\n } while (condition);\n", "range": { "end": { "character": 0, "line": 48 }, "start": { "character": 0, "line": 47 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'do-while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n a.pos = e < d ? (a.pos + e * m) : a._value;\n } on Exception catch (e) {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 48 }, "start": { "character": 0, "line": 47 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-catch'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n a.pos = e < d ? (a.pos + e * m) : a._value;\n } finally {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 48 }, "start": { "character": 0, "line": 47 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-finally'" } ] [Trace - 12:34:48 PM] Received response 'textDocument/documentHighlight - (17)' in 185ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/hover - (18)' in 908ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/signatureHelp - (19)' in 906ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/documentHighlight - (21)' in 5ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/hover - (22)' in 739ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/signatureHelp - (23)' in 737ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/hover - (25)' in 914ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/signatureHelp - (26)' in 941ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/codeAction - (16)' in 218ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:34:48 PM] Received response 'textDocument/codeAction - (20)' in 39ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:34:48 PM] Received response 'textDocument/codeAction - (24)' in 247ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:34:48 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 135 }, "start": { "character": 9, "line": 135 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 142 }, "start": { "character": 9, "line": 142 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:34:48 PM] Received response 'textDocument/codeAction - (27)' in 897ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:34:48 PM] Sending request 'textDocument/codeAction - (28)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 91, "character": 0 }, "end": { "line": 91, "character": 30 } }, "context": { "diagnostics": [] } } [Trace - 12:34:48 PM] Sending request 'textDocument/hover - (29)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 91, "character": 4 } } [Trace - 12:34:48 PM] Sending request 'textDocument/hover - (30)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 91, "character": 9 } } [Trace - 12:34:48 PM] Sending request 'textDocument/hover - (31)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 91, "character": 11 } } [Trace - 12:34:48 PM] Sending request 'textDocument/hover - (32)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 91, "character": 21 } } [Trace - 12:34:48 PM] Sending request 'textDocument/hover - (33)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 91, "character": 23 } } [Trace - 12:34:48 PM] Sending request 'textDocument/hover - (34)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 91, "character": 27 } } [Trace - 12:34:48 PM] Sending request 'textDocument/documentHighlight - (35)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 91, "character": 0 } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (29)' in 94ms. Result: { "range": { "end": { "character": 8, "line": 91 }, "start": { "character": 4, "line": 91 } }, "contents": { "value": "```dart\ndouble temp\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (30)' in 98ms. Result: { "range": { "end": { "character": 29, "line": 91 }, "start": { "character": 4, "line": 91 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (31)' in 99ms. Result: { "range": { "end": { "character": 12, "line": 91 }, "start": { "character": 11, "line": 91 } }, "contents": { "value": "```dart\ndynamic m\n```", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (32)' in 100ms. Result: { "range": { "end": { "character": 29, "line": 91 }, "start": { "character": 11, "line": 91 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (33)' in 100ms. Result: { "range": { "end": { "character": 29, "line": 91 }, "start": { "character": 23, "line": 91 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (34)' in 101ms. Result: { "range": { "end": { "character": 29, "line": 91 }, "start": { "character": 23, "line": 91 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:34:48 PM] Received response 'textDocument/documentHighlight - (35)' in 101ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/codeAction - (28)' in 169ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " }\n", "range": { "end": { "character": 0, "line": 92 }, "start": { "character": 0, "line": 92 } } }, { "newText": " temp = m['temp'] - 273.15;\n", "range": { "end": { "character": 0, "line": 92 }, "start": { "character": 0, "line": 91 } } }, { "newText": " {\n", "range": { "end": { "character": 0, "line": 91 }, "start": { "character": 0, "line": 91 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with block" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " if (condition) {\n temp = m['temp'] - 273.15;\n }\n", "range": { "end": { "character": 0, "line": 92 }, "start": { "character": 0, "line": 91 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'if'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " while (condition) {\n temp = m['temp'] - 273.15;\n }\n", "range": { "end": { "character": 0, "line": 92 }, "start": { "character": 0, "line": 91 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var item in iterable) {\n temp = m['temp'] - 273.15;\n }\n", "range": { "end": { "character": 0, "line": 92 }, "start": { "character": 0, "line": 91 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for-in'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var v = init; condition; increment) {\n temp = m['temp'] - 273.15;\n }\n", "range": { "end": { "character": 0, "line": 92 }, "start": { "character": 0, "line": 91 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " do {\n temp = m['temp'] - 273.15;\n } while (condition);\n", "range": { "end": { "character": 0, "line": 92 }, "start": { "character": 0, "line": 91 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'do-while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n temp = m['temp'] - 273.15;\n } on Exception catch (e) {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 92 }, "start": { "character": 0, "line": 91 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-catch'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n temp = m['temp'] - 273.15;\n } finally {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 92 }, "start": { "character": 0, "line": 91 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-finally'" } ] [Trace - 12:34:48 PM] Sending request 'textDocument/hover - (36)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 91, "character": 0 } } [Trace - 12:34:48 PM] Sending request 'textDocument/signatureHelp - (37)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 91, "character": 0 } } [Trace - 12:34:48 PM] Received response 'textDocument/hover - (36)' in 50ms. Result: null [Trace - 12:34:48 PM] Received response 'textDocument/signatureHelp - (37)' in 49ms. Result: null [Trace - 12:34:49 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:34:51 PM] Sending request 'textDocument/codeAction - (38)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 83, "character": 0 }, "end": { "line": 83, "character": 92 } }, "context": { "diagnostics": [] } } [Trace - 12:34:51 PM] Sending request 'textDocument/hover - (39)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 83, "character": 4 } } [Trace - 12:34:51 PM] Sending request 'textDocument/hover - (40)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 83, "character": 8 } } [Trace - 12:34:51 PM] Sending request 'textDocument/hover - (41)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 83, "character": 12 } } [Trace - 12:34:51 PM] Received response 'textDocument/codeAction - (38)' in 38ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " }\n", "range": { "end": { "character": 0, "line": 84 }, "start": { "character": 0, "line": 84 } } }, { "newText": " var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n", "range": { "end": { "character": 0, "line": 84 }, "start": { "character": 0, "line": 83 } } }, { "newText": " {\n", "range": { "end": { "character": 0, "line": 83 }, "start": { "character": 0, "line": 83 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with block" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " if (condition) {\n var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n }\n", "range": { "end": { "character": 0, "line": 84 }, "start": { "character": 0, "line": 83 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'if'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " while (condition) {\n var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n }\n", "range": { "end": { "character": 0, "line": 84 }, "start": { "character": 0, "line": 83 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var item in iterable) {\n var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n }\n", "range": { "end": { "character": 0, "line": 84 }, "start": { "character": 0, "line": 83 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for-in'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var v = init; condition; increment) {\n var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n }\n", "range": { "end": { "character": 0, "line": 84 }, "start": { "character": 0, "line": 83 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " do {\n var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n } while (condition);\n", "range": { "end": { "character": 0, "line": 84 }, "start": { "character": 0, "line": 83 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'do-while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n } on Exception catch (e) {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 84 }, "start": { "character": 0, "line": 83 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-catch'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n var url = 'http://api.openweathermap.org/data/2.5/weather?lat=$lat&lon=$lon&appid=$key';\n } finally {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 84 }, "start": { "character": 0, "line": 83 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-finally'" } ] [Trace - 12:34:51 PM] Received response 'textDocument/hover - (39)' in 54ms. Result: null [Trace - 12:34:51 PM] Received response 'textDocument/hover - (40)' in 53ms. Result: { "range": { "end": { "character": 11, "line": 83 }, "start": { "character": 8, "line": 83 } }, "contents": { "value": "```dart\nString url\n```", "kind": "markdown" } } [Trace - 12:34:51 PM] Received response 'textDocument/hover - (41)' in 54ms. Result: null [Trace - 12:34:52 PM] Sending request 'textDocument/codeAction - (42)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 89, "character": 0 }, "end": { "line": 89, "character": 21 } }, "context": { "diagnostics": [] } } [Trace - 12:34:52 PM] Sending request 'textDocument/hover - (43)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 89, "character": 4 } } [Trace - 12:34:52 PM] Sending request 'textDocument/hover - (44)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 89, "character": 9 } } [Trace - 12:34:52 PM] Sending request 'textDocument/hover - (45)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 89, "character": 11 } } [Trace - 12:34:52 PM] Received response 'textDocument/codeAction - (42)' in 97ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " }\n", "range": { "end": { "character": 0, "line": 90 }, "start": { "character": 0, "line": 90 } } }, { "newText": " icon = m['icon'];\n", "range": { "end": { "character": 0, "line": 90 }, "start": { "character": 0, "line": 89 } } }, { "newText": " {\n", "range": { "end": { "character": 0, "line": 89 }, "start": { "character": 0, "line": 89 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with block" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " if (condition) {\n icon = m['icon'];\n }\n", "range": { "end": { "character": 0, "line": 90 }, "start": { "character": 0, "line": 89 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'if'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " while (condition) {\n icon = m['icon'];\n }\n", "range": { "end": { "character": 0, "line": 90 }, "start": { "character": 0, "line": 89 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var item in iterable) {\n icon = m['icon'];\n }\n", "range": { "end": { "character": 0, "line": 90 }, "start": { "character": 0, "line": 89 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for-in'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var v = init; condition; increment) {\n icon = m['icon'];\n }\n", "range": { "end": { "character": 0, "line": 90 }, "start": { "character": 0, "line": 89 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " do {\n icon = m['icon'];\n } while (condition);\n", "range": { "end": { "character": 0, "line": 90 }, "start": { "character": 0, "line": 89 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'do-while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n icon = m['icon'];\n } on Exception catch (e) {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 90 }, "start": { "character": 0, "line": 89 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-catch'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n icon = m['icon'];\n } finally {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 90 }, "start": { "character": 0, "line": 89 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-finally'" } ] [Trace - 12:34:52 PM] Received response 'textDocument/hover - (43)' in 115ms. Result: { "range": { "end": { "character": 8, "line": 89 }, "start": { "character": 4, "line": 89 } }, "contents": { "value": "```dart\nString icon\n```", "kind": "markdown" } } [Trace - 12:34:52 PM] Received response 'textDocument/hover - (44)' in 115ms. Result: { "range": { "end": { "character": 20, "line": 89 }, "start": { "character": 4, "line": 89 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:34:52 PM] Received response 'textDocument/hover - (45)' in 144ms. Result: { "range": { "end": { "character": 12, "line": 89 }, "start": { "character": 11, "line": 89 } }, "contents": { "value": "```dart\ndynamic m\n```", "kind": "markdown" } } [Trace - 12:34:52 PM] Sending request 'textDocument/codeAction - (46)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 99, "character": 0 }, "end": { "line": 99, "character": 30 } }, "context": { "diagnostics": [] } } [Trace - 12:34:52 PM] Sending request 'textDocument/hover - (47)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 99, "character": 4 } } [Trace - 12:34:52 PM] Sending request 'textDocument/hover - (48)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 99, "character": 8 } } [Trace - 12:34:52 PM] Sending request 'textDocument/hover - (49)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 99, "character": 17 } } [Trace - 12:34:53 PM] Received response 'textDocument/codeAction - (46)' in 39ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " }\n", "range": { "end": { "character": 0, "line": 100 }, "start": { "character": 0, "line": 100 } } }, { "newText": " if (weather) getWeather();\n", "range": { "end": { "character": 0, "line": 100 }, "start": { "character": 0, "line": 99 } } }, { "newText": " {\n", "range": { "end": { "character": 0, "line": 99 }, "start": { "character": 0, "line": 99 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with block" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " if (condition) {\n if (weather) getWeather();\n }\n", "range": { "end": { "character": 0, "line": 100 }, "start": { "character": 0, "line": 99 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'if'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " while (condition) {\n if (weather) getWeather();\n }\n", "range": { "end": { "character": 0, "line": 100 }, "start": { "character": 0, "line": 99 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var item in iterable) {\n if (weather) getWeather();\n }\n", "range": { "end": { "character": 0, "line": 100 }, "start": { "character": 0, "line": 99 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for-in'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " for (var v = init; condition; increment) {\n if (weather) getWeather();\n }\n", "range": { "end": { "character": 0, "line": 100 }, "start": { "character": 0, "line": 99 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'for'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " do {\n if (weather) getWeather();\n } while (condition);\n", "range": { "end": { "character": 0, "line": 100 }, "start": { "character": 0, "line": 99 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'do-while'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n if (weather) getWeather();\n } on Exception catch (e) {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 100 }, "start": { "character": 0, "line": 99 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-catch'" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": " try {\n if (weather) getWeather();\n } finally {\n // TODO\n }\n", "range": { "end": { "character": 0, "line": 100 }, "start": { "character": 0, "line": 99 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 0 } } ] }, "diagnostics": [], "kind": "refactor", "title": "Surround with 'try-finally'" } ] [Trace - 12:34:53 PM] Received response 'textDocument/hover - (47)' in 58ms. Result: null [Trace - 12:34:53 PM] Received response 'textDocument/hover - (48)' in 56ms. Result: { "range": { "end": { "character": 15, "line": 99 }, "start": { "character": 8, "line": 99 } }, "contents": { "value": "```dart\n[bool weather = true]\n```", "kind": "markdown" } } [Trace - 12:34:53 PM] Received response 'textDocument/hover - (49)' in 103ms. Result: { "range": { "end": { "character": 27, "line": 99 }, "start": { "character": 17, "line": 99 } }, "contents": { "value": "```dart\ngetWeather() → void\n```", "kind": "markdown" } } [Trace - 12:34:53 PM] Sending request 'textDocument/codeAction - (50)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 69 } }, "context": { "diagnostics": [] } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (51)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (52)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (53)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 19 } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (54)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 26 } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (55)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 32 } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (56)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 39 } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (57)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 46 } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (58)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 51 } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (59)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 59 } } [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (60)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 61 } } [Trace - 12:34:53 PM] Received response 'textDocument/codeAction - (50)' in 63ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:34:53 PM] Received response 'textDocument/hover - (51)' in 64ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:34:53 PM] Received response 'textDocument/hover - (52)' in 64ms. Result: { "range": { "end": { "character": 18, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nsetLocation(double lati, double long, [bool weather = true]) → void\n```", "kind": "markdown" } } [Trace - 12:34:53 PM] Received response 'textDocument/hover - (53)' in 66ms. Result: { "range": { "end": { "character": 25, "line": 96 }, "start": { "character": 19, "line": 96 } }, "contents": { "value": "```dart\nabstract class double extends num\n```\n*dart.core*\n\n---\nA double-precision floating point number.\n\nRepresentation of Dart doubles containing double specific constants\nand operations and specializations of operations inherited from\n[num]. Dart doubles are 64-bit floating-point numbers as specified in the\nIEEE 754 standard.\n\nThe [double] type is contagious. Operations on [double]s return\n[double] results.\n\nIt is a compile-time error for a class to attempt to extend or implement\ndouble.", "kind": "markdown" } } [Trace - 12:34:53 PM] Received response 'textDocument/hover - (54)' in 69ms. Result: { "range": { "end": { "character": 30, "line": 96 }, "start": { "character": 26, "line": 96 } }, "contents": { "value": "```dart\ndouble lati\n```", "kind": "markdown" } } [Trace - 12:34:53 PM] Received response 'textDocument/hover - (55)' in 230ms. Result: { "range": { "end": { "character": 38, "line": 96 }, "start": { "character": 32, "line": 96 } }, "contents": { "value": "```dart\nabstract class double extends num\n```\n*dart.core*\n\n---\nA double-precision floating point number.\n\nRepresentation of Dart doubles containing double specific constants\nand operations and specializations of operations inherited from\n[num]. Dart doubles are 64-bit floating-point numbers as specified in the\nIEEE 754 standard.\n\nThe [double] type is contagious. Operations on [double]s return\n[double] results.\n\nIt is a compile-time error for a class to attempt to extend or implement\ndouble.", "kind": "markdown" } } [Trace - 12:34:53 PM] Received response 'textDocument/hover - (56)' in 231ms. Result: { "range": { "end": { "character": 43, "line": 96 }, "start": { "character": 39, "line": 96 } }, "contents": { "value": "```dart\ndouble long\n```", "kind": "markdown" } } [Trace - 12:34:53 PM] Received response 'textDocument/hover - (57)' in 232ms. Result: { "range": { "end": { "character": 50, "line": 96 }, "start": { "character": 46, "line": 96 } }, "contents": { "value": "```dart\nclass bool\n```\n*dart.core*\n\n---\nThe reserved words `true` and `false` denote objects that are the only two\ninstances of this class.\n\nIt is a compile-time error for a class to attempt to extend or implement\nbool.", "kind": "markdown" } } [Trace - 12:34:53 PM] Received response 'textDocument/hover - (58)' in 233ms. Result: { "range": { "end": { "character": 58, "line": 96 }, "start": { "character": 51, "line": 96 } }, "contents": { "value": "```dart\n[bool weather = true]\n```", "kind": "markdown" } } [Trace - 12:34:53 PM] Received response 'textDocument/hover - (59)' in 233ms. Result: null [Trace - 12:34:53 PM] Sending request 'textDocument/hover - (61)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 0 } } [Trace - 12:34:53 PM] Sending request 'textDocument/signatureHelp - (62)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 0 } } [Trace - 12:34:54 PM] Received response 'textDocument/hover - (60)' in 337ms. Result: { "range": { "end": { "character": 65, "line": 96 }, "start": { "character": 61, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:34:54 PM] Received response 'textDocument/hover - (61)' in 52ms. Result: null [Trace - 12:34:54 PM] Received response 'textDocument/signatureHelp - (62)' in 51ms. Result: null [Trace - 12:34:54 PM] Sending request 'textDocument/codeAction - (63)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 95, "character": 0 }, "end": { "line": 95, "character": 0 } }, "context": { "diagnostics": [] } } [Trace - 12:34:54 PM] Received response 'textDocument/codeAction - (63)' in 42ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:34:54 PM] Sending request 'textDocument/hover - (64)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 95, "character": 0 } } [Trace - 12:34:54 PM] Sending request 'textDocument/signatureHelp - (65)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 95, "character": 0 } } [Trace - 12:34:54 PM] Received response 'textDocument/hover - (64)' in 91ms. Result: null [Trace - 12:34:54 PM] Received response 'textDocument/signatureHelp - (65)' in 89ms. Result: null [Trace - 12:34:54 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 1 }, "contentChanges": [ { "range": { "start": { "line": 94, "character": 3 }, "end": { "line": 94, "character": 3 } }, "rangeLength": 0, "text": "\n" } ] } [Trace - 12:34:54 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 2 }, "contentChanges": [ { "range": { "start": { "line": 95, "character": 0 }, "end": { "line": 95, "character": 0 } }, "rangeLength": 0, "text": " " } ] } [Trace - 12:34:54 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:34:55 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 143 }, "start": { "character": 9, "line": 143 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 136 }, "start": { "character": 9, "line": 136 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:34:55 PM] Sending request 'textDocument/codeAction - (66)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 95, "character": 0 }, "end": { "line": 95, "character": 2 } }, "context": { "diagnostics": [] } } [Trace - 12:34:55 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:34:55 PM] Received response 'textDocument/codeAction - (66)' in 54ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:34:55 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 3 }, "contentChanges": [ { "range": { "start": { "line": 95, "character": 0 }, "end": { "line": 95, "character": 2 } }, "rangeLength": 2, "text": "" } ] } [Trace - 12:34:55 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 4 }, "contentChanges": [ { "range": { "start": { "line": 95, "character": 0 }, "end": { "line": 95, "character": 0 } }, "rangeLength": 0, "text": "\n" } ] } [Trace - 12:34:55 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 5 }, "contentChanges": [ { "range": { "start": { "line": 95, "character": 0 }, "end": { "line": 95, "character": 0 } }, "rangeLength": 0, "text": " " } ] } [Trace - 12:34:55 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 6 }, "contentChanges": [ { "range": { "start": { "line": 95, "character": 0 }, "end": { "line": 95, "character": 2 } }, "rangeLength": 2, "text": "" } ] } [Trace - 12:34:55 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 7 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 0 } }, "rangeLength": 0, "text": " " } ] } [Trace - 12:34:55 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:34:55 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:34:55 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:34:55 PM] Sending request 'textDocument/codeAction - (67)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 2 } }, "context": { "diagnostics": [] } } [Trace - 12:34:55 PM] Received response 'textDocument/codeAction - (67)' in 36ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:34:55 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 8 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 2 }, "end": { "line": 96, "character": 2 } }, "rangeLength": 0, "text": "v" } ] } [Trace - 12:34:55 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:34:55 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 9 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 3 }, "end": { "line": 96, "character": 3 } }, "rangeLength": 0, "text": "o" } ] } [Trace - 12:34:55 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 10 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 4 }, "end": { "line": 96, "character": 4 } }, "rangeLength": 0, "text": "i" } ] } [Trace - 12:34:55 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Variables must be declared using the keywords 'const', 'final', 'var' or a type name.", "source": "dart", "code": "missing_const_final_var_or_type", "severity": 1, "range": { "end": { "character": 3, "line": 96 }, "start": { "character": 2, "line": 96 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 3, "line": 96 }, "start": { "character": 2, "line": 96 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:34:55 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Variables must be declared using the keywords 'const', 'final', 'var' or a type name.", "source": "dart", "code": "missing_const_final_var_or_type", "severity": 1, "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:34:55 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:34:56 PM] Sending request 'textDocument/completion - (68)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 5 }, "context": { "triggerKind": 1 } } [Trace - 12:34:56 PM] Sending request 'textDocument/codeAction - (69)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 5 } }, "context": { "diagnostics": [ { "message": "Variables must be declared using the keywords 'const', 'final', 'var' or a type name.", "source": "dart", "code": "missing_const_final_var_or_type", "severity": 1, "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } } ] } } [Trace - 12:34:56 PM] Sending request 'textDocument/hover - (70)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:34:56 PM] Sending request 'textDocument/documentHighlight - (71)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 5 } } [Trace - 12:34:56 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 11 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 5 }, "end": { "line": 96, "character": 5 } }, "rangeLength": 0, "text": "d" } ] } [Trace - 12:34:56 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 12 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 6 }, "end": { "line": 96, "character": 6 } }, "rangeLength": 0, "text": " " } ] } [Trace - 12:34:56 PM] Sending request 'textDocument/documentHighlight - (72)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:34:56 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 13 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 7 }, "end": { "line": 96, "character": 7 } }, "rangeLength": 0, "text": "c" } ] } [Trace - 12:34:56 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 14 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 8 }, "end": { "line": 96, "character": 8 } }, "rangeLength": 0, "text": "a" } ] } [Trace - 12:34:56 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 15 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 9 }, "end": { "line": 96, "character": 9 } }, "rangeLength": 0, "text": "l" } ] } [Trace - 12:34:57 PM] Received response 'textDocument/completion - (68)' in 759ms. Result: [ { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "const", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "const" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "covariant", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "covariant" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "dynamic", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "dynamic" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "factory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "factory" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "final", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "final" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "get", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "get" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "operator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "operator" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "set", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "set" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "static", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "static" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "var", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "var" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "void", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "void" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "http", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 9, "label": "http" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Anim", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "Anim" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AniControler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "AniControler" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HomePage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "HomePage" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "_HomePageState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "_HomePageState" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n void didUpdateWidget(HomePage oldWidget) {\n // TODO: implement didUpdateWidget\n super.didUpdateWidget(oldWidget);\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "(T oldWidget) → void", "kind": 2, "label": "didUpdateWidget(HomePage oldWidget) { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n void reassemble() {\n // TODO: implement reassemble\n super.reassemble();\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "() → void", "kind": 2, "label": "reassemble() { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n void setState(fn) {\n // TODO: implement setState\n super.setState(fn);\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "(() → void fn) → void", "kind": 2, "label": "setState(fn) { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n void deactivate() {\n // TODO: implement deactivate\n super.deactivate();\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "() → void", "kind": 2, "label": "deactivate() { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n void dispose() {\n // TODO: implement dispose\n super.dispose();\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "() → void", "kind": 2, "label": "dispose() { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n void didChangeDependencies() {\n // TODO: implement didChangeDependencies\n super.didChangeDependencies();\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "() → void", "kind": 2, "label": "didChangeDependencies() { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n // TODO: implement widget\n HomePage get widget => super.widget;", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "T", "kind": 10, "label": "widget => …" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n // TODO: implement context\n BuildContext get context => super.context;", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "BuildContext", "kind": 10, "label": "context => …" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n // TODO: implement mounted\n bool get mounted => super.mounted;", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "bool", "kind": 10, "label": "mounted => …" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n String toStringShort() {\n // TODO: implement toStringShort\n return super.toStringShort();\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "() → String", "kind": 2, "label": "toStringShort() { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n String toString({DiagnosticLevel minLevel = DiagnosticLevel.debug}) {\n // TODO: implement toString\n return super.toString(minLevel);\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "({DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String", "kind": 2, "label": "toString({DiagnosticLevel minLevel = DiagnosticLevel.debug}) { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n bool operator ==(other) {\n // TODO: implement ==\n return super.==(other);\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "(dynamic other) → bool", "kind": 2, "label": "==(other) { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n noSuchMethod(Invocation invocation) {\n // TODO: implement noSuchMethod\n return super.noSuchMethod(invocation);\n }", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "(Invocation invocation) → dynamic", "kind": 2, "label": "noSuchMethod(Invocation invocation) { … }" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n // TODO: implement hashCode\n int get hashCode => super.hashCode;", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "int", "kind": 10, "label": "hashCode => …" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "@override\n // TODO: implement runtimeType\n Type get runtimeType => super.runtimeType;", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998000", "preselect": null, "detail": "Type", "kind": 10, "label": "runtimeType => …" }, { "data": { "autoImportDisplayUri": "package:flutter_compass/flutter_compass.dart", "libraryId": 548, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterCompass", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[FlutterCompass] is a singleton class that provides assess to compass events\nThe heading varies from 0-360, 0 being north.", "detail": "", "kind": 7, "label": "FlutterCompass" }, { "data": { "autoImportDisplayUri": "package:location/location.dart", "libraryId": 547, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocationAccuracy", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest\nhttps://developer.apple.com/documentation/corelocation/cllocationaccuracy?language=objc\nPrecision of the Location", "detail": "", "kind": 13, "label": "LocationAccuracy" }, { "data": { "autoImportDisplayUri": "package:location/location.dart", "libraryId": 547, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocationData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A data class that contains various information about the user's location.\n\nspeedAccuracy cannot be provided on iOS and thus is always 0.", "detail": "", "kind": 7, "label": "LocationData" }, { "data": { "autoImportDisplayUri": "package:location/location.dart", "libraryId": 547, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Location", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "Location" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Theme] which automatically transitions the colors,\netc, over a given duration whenever the given theme changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].\n\nSee also:\n\n * [Theme], which [AnimatedTheme] uses to actually apply the interpolated\n theme.\n * [ThemeData], which describes the actual configuration of a theme.\n * [MaterialApp], which includes an [AnimatedTheme] widget configured via\n the [MaterialApp.theme] argument.", "detail": "", "kind": 7, "label": "AnimatedTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface that [Scrollable] widgets implement in order to use\n[ScrollPosition].\n\nSee also:\n\n * [ScrollableState], which is the most common implementation of this\n interface.\n * [ScrollPosition], which uses this interface to communicate with the\n scrollable widget.", "detail": "", "kind": 7, "label": "ScrollContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalTranslation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[FractionalTranslation], even if the contents are offset such that\nthey overflow.\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [new Transform.translate], which applies an absolute offset translation\n transformation instead of an offset scaled to the child.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbsorbPointer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this widget prevents its subtree from receiving\npointer events by terminating hit testing at itself. It still consumes space\nduring layout and paints its child as usual. It just prevents its children\nfrom being the target of located events, because it returns true from\n[RenderBox.hitTest].\n\n\nSee also:\n\n * [IgnorePointer], which also prevents its children from receiving pointer\n events but is itself invisible to hit testing.", "detail": "", "kind": 7, "label": "AbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State object for a [Scrollable] widget.\n\nTo manipulate a [Scrollable] widget's scroll position, use the object\nobtained from the [position] property.\n\nTo be informed of when a [Scrollable] widget is scrolling, use a\n[NotificationListener] to listen for [ScrollNotification] notifications.\n\nThis class is not intended to be subclassed. To specialize the behavior of a\n[Scrollable], provide it with a [ScrollPhysics].", "detail": "", "kind": 7, "label": "ScrollableState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativePositionedTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Positioned] which transitions the child's position\nbased on the value of [rect] relative to a bounding box with the\nspecified [size].\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [RelativePositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "RelativePositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Builds a [Widget] when given a concrete value of a [ValueListenable].\n\nIf the `child` parameter provided to the [ValueListenableBuilder] is not\nnull, the same `child` widget is passed back to this [ValueWidgetBuilder]\nand should typically be incorporated in the returned widget tree.\n\nSee also:\n\n * [ValueListenableBuilder], a widget which invokes this builder each time\n a [ValueListenable] changes value.", "detail": "(BuildContext context, T value, Widget child) → Widget", "kind": 7, "label": "ValueWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Texture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture widget refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture widgets are repainted autonomously as dictated by the backend (e.g.\non arrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by its parent widget, and the\ntexture is automatically scaled to fit.\n\nSee also:\n\n * \n for how to create and manage backend textures on Android.\n * \n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "Texture" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePredicate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the [Navigator.popUntil] predicate argument.", "detail": "(Route route) → bool", "kind": 7, "label": "RoutePredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Associates a [ScrollController] with a subtree.\n\nWhen a [ScrollView] has [ScrollView.primary] set to true and is not given\nan explicit [ScrollController], the [ScrollView] uses [of] to find the\n[ScrollController] associated with its subtree.\n\nThis mechanism can be used to provide default behavior for scroll views in a\nsubtree. For example, the [Scaffold] uses this mechanism to implement the\nscroll-to-top gesture on iOS.", "detail": "", "kind": 7, "label": "PrimaryScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MetaData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "MetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HourFormat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes how hours are formatted.", "detail": "", "kind": 13, "label": "HourFormat" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultMaterialLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "US English strings for the material widgets.\n\nSee also:\n\n * [GlobalMaterialLocalizations], which provides material localizations for\n many languages.\n * [MaterialApp.delegates], which automatically includes\n [DefaultMaterialLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultMaterialLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Element", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An instantiation of a [Widget] at a particular location in the tree.\n\nWidgets describe how to configure a subtree but the same widget can be used\nto configure multiple subtrees simultaneously because widgets are immutable.\nAn [Element] represents the use of a widget to configure a specific location\nin the tree. Over time, the widget associated with a given element can\nchange, for example, if the parent widget rebuilds and creates a new widget\nfor this location.\n\nElements form a tree. Most elements have a unique child, but some widgets\n(e.g., subclasses of [RenderObjectElement]) can have multiple children.\n\nElements have the following lifecycle:\n\n * The framework creates an element by calling [Widget.createElement] on the\n widget that will be used as the element's initial configuration.\n * The framework calls [mount] to add the newly created element to the tree\n at a given slot in a given parent. The [mount] method is responsible for\n inflating any child widgets and calling [attachRenderObject] as\n necessary to attach any associated render objects to the render tree.\n * At this point, the element is considered \"active\" and might appear on\n screen.\n * At some point, the parent might decide to change the widget used to\n configure this element, for example because the parent rebuilt with new\n state. When this happens, the framework will call [update] with the new\n widget. The new widget will always have the same [runtimeType] and key as\n old widget. If the parent wishes to change the [runtimeType] or key of\n the widget at this location in the tree, can do so by unmounting this\n element and inflating the new widget at this location.\n * At some point, an ancestor might decide to remove this element (or an\n intermediate ancestor) from the tree, which the ancestor does by calling\n [deactivateChild] on itself. Deactivating the intermediate ancestor will\n remove that element's render object from the render tree and add this\n element to the [owner]'s list of inactive elements, causing the framework\n to call [deactivate] on this element.\n * At this point, the element is considered \"inactive\" and will not appear\n on screen. An element can remain in the inactive state only until\n the end of the current animation frame. At the end of the animation\n frame, any elements that are still inactive will be unmounted.\n * If the element gets reincorporated into the tree (e.g., because it or one\n of its ancestors has a global key that is reused), the framework will\n remove the element from the [owner]'s list of inactive elements, call\n [activate] on the element, and reattach the element's render object to\n the render tree. (At this point, the element is again considered \"active\"\n and might appear on screen.)\n * If the element does not get reincorporated into the tree by the end of\n the current animation frame, the framework will call [unmount] on the\n element.\n * At this point, the element is considered \"defunct\" and will not be\n incorporated into the tree in the future.", "detail": "", "kind": 7, "label": "Element" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Mutable selection state of the inspector.", "detail": "", "kind": 7, "label": "InspectorSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State associated with a [Form] widget.\n\nA [FormState] object can be used to [save], [reset], and [validate] every\n[FormField] that is a descendant of the associated [Form].\n\nTypically obtained via [Form.of].", "detail": "", "kind": 7, "label": "FormState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OutlineInputBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Draws a rounded rectangle around an [InputDecorator]'s container.\n\nWhen the input decorator's label is floating, for example because its\ninput child has the focus, the label appears in a gap in the border outline.\n\nThe input decorator's \"container\" is the optionally filled area above the\ndecorator's helper, error, and counter.\n\nSee also:\n\n * [UnderlineInputBorder], the default [InputDecorator] border which\n draws a horizontal line at the bottom of the input decorator's container.\n * [InputDecoration], which is used to configure an [InputDecorator].", "detail": "", "kind": 7, "label": "OutlineInputBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeaderDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Delegate for configuring a [SliverPersistentHeader].", "detail": "", "kind": 7, "label": "SliverPersistentHeaderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A leaf node in the focus tree that can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nTo request focus, find the [FocusScopeNode] for the current [BuildContext]\nand call the [FocusScopeNode.requestFocus] method:\n\n```dart\nFocusScope.of(context).requestFocus(focusNode);\n```\n\nIf your widget requests focus, be sure to call\n`FocusScope.of(context).reparentIfNeeded(focusNode);` in your `build`\nmethod to reparent your [FocusNode] if your widget moves from one\nlocation in the tree to another.\n\n## Lifetime\n\nFocus nodes are long-lived objects. For example, if a stateful widget has a\nfocusable child widget, it should create a [FocusNode] in the\n[State.initState] method, and [dispose] it in the [State.dispose] method,\nproviding the same [FocusNode] to the focusable child each time the\n[State.build] method is run. In particular, creating a [FocusNode] each time\n[State.build] is invoked will cause the focus to be lost each time the\nwidget is built.\n\nSee also:\n\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusNode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterChip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design filter chip.\n\nFilter chips use tags or descriptive words as a way to filter content.\n\nFilter chips are a good alternative to [Checkbox] or [Switch] widgets.\nUnlike these alternatives, filter chips allow for clearly delineated and\nexposed options in a compact area.\n\nRequires one of its ancestors to be a [Material] widget.\n\n\n```dart\nclass ActorFilterEntry {\n const ActorFilterEntry(this.name, this.initials);\n final String name;\n final String initials;\n}\n\nclass CastFilter extends StatefulWidget {\n @override\n State createState() => CastFilterState();\n}\n\nclass CastFilterState extends State {\n final List _cast = [\n const ActorFilterEntry('Aaron Burr', 'AB'),\n const ActorFilterEntry('Alexander Hamilton', 'AH'),\n const ActorFilterEntry('Eliza Hamilton', 'EH'),\n const ActorFilterEntry('James Madison', 'JM'),\n ];\n List _filters = [];\n\n Iterable get actorWidgets sync* {\n for (ActorFilterEntry actor in _cast) {\n yield Padding(\n padding: const EdgeInsets.all(4.0),\n child: FilterChip(\n avatar: CircleAvatar(child: Text(actor.initials)),\n label: Text(actor.name),\n selected: _filters.contains(actor.name),\n onSelected: (bool value) {\n setState(() {\n if (value) {\n _filters.add(actor.name);\n } else {\n _filters.removeWhere((String name) {\n return name == actor.name;\n });\n }\n });\n },\n ),\n );\n }\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n Wrap(\n children: actorWidgets.toList(),\n ),\n Text('Look for: ${_filters.join(', ')}'),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * ", "detail": "", "kind": 7, "label": "FilterChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegion", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Annotates a region of the layer tree with a value.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer pushed into the layer tree.", "detail": "", "kind": 7, "label": "AnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the scale of a transformed widget.\n\nHere's an illustration of the [ScaleTransition] widget, with it's [alignment]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "ScaleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeableMaterial", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a list of [MergeableMaterialItem] children. The list contains\n[MaterialSlice] items whose boundaries are either \"merged\" with adjacent\nitems or separated by a [MaterialGap]. The [children] are distributed along\nthe given [mainAxis] in the same way as the children of a [ListBody]. When\nthe list of children changes, gaps are automatically animated open or closed\nas needed.\n\nTo enable this widget to correlate its list of children with the previous\none, each child must specify a key.\n\nWhen a new gap is added to the list of children the adjacent items are\nanimated apart. Similarly when a gap is removed the adjacent items are\nbrought back together.\n\nWhen a new slice is added or removed, the app is responsible for animating\nthe transition of the slices, while the gaps will be animated automatically.\n\nSee also:\n\n * [Card], a piece of material that does not support splitting and merging\n but otherwise looks the same.", "detail": "", "kind": 7, "label": "MergeableMaterial" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines the physics of a [Scrollable] widget.\n\nFor example, determines how the [Scrollable] will behave when the user\nreaches the maximum scroll extent or when the user stops scrolling.\n\nWhen starting a physics [Simulation], the current scroll position and\nvelocity are used as the initial conditions for the particle in the\nsimulation. The movement of the particle in the simulation is then used to\ndetermine the scroll position for the widget.", "detail": "", "kind": 7, "label": "ScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates that the size of one of the descendants of the object receiving\nthis notification has changed, and that therefore any assumptions about that\nlayout are no longer valid.\n\nFor example, sent by the [SizeChangedLayoutNotifier] widget whenever that\nwidget changes size.\n\nThis notification can be used for triggering repaints, but if you use this\nnotification to trigger rebuilds or relayouts, you'll create a backwards\ndependency in the frame pipeline because [SizeChangedLayoutNotification]s\nare generated during layout, which is after the build phase and in the\nmiddle of the layout phase. This backwards dependency can lead to visual\ncorruption or lags.\n\nSee [LayoutChangedNotification] for additional discussion of layout\nnotifications such as this one.\n\nSee also:\n\n * [SizeChangedLayoutNotifier], which sends this notification.\n * [LayoutChangedNotification], of which this is a subclass.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "State", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The logic and internal state for a [StatefulWidget].\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\n[State] objects are created by the framework by calling the\n[StatefulWidget.createState] method when inflating a [StatefulWidget] to\ninsert it into the tree. Because a given [StatefulWidget] instance can be\ninflated multiple times (e.g., the widget is incorporated into the tree in\nmultiple places at once), there might be more than one [State] object\nassociated with a given [StatefulWidget] instance. Similarly, if a\n[StatefulWidget] is removed from the tree and later inserted in to the tree\nagain, the framework will call [StatefulWidget.createState] again to create\na fresh [State] object, simplifying the lifecycle of [State] objects.\n\n[State] objects have the following lifecycle:\n\n * The framework creates a [State] object by calling\n [StatefulWidget.createState].\n * The newly created [State] object is associated with a [BuildContext].\n This association is permanent: the [State] object will never change its\n [BuildContext]. However, the [BuildContext] itself can be moved around\n the tree along with its subtree. At this point, the [State] object is\n considered [mounted].\n * The framework calls [initState]. Subclasses of [State] should override\n [initState] to perform one-time initialization that depends on the\n [BuildContext] or the widget, which are available as the [context] and\n [widget] properties, respectively, when the [initState] method is\n called.\n * The framework calls [didChangeDependencies]. Subclasses of [State] should\n override [didChangeDependencies] to perform initialization involving\n [InheritedWidget]s. If [BuildContext.inheritFromWidgetOfExactType] is\n called, the [didChangeDependencies] method will be called again if the\n inherited widgets subsequently change or if the widget moves in the tree.\n * At this point, the [State] object is fully initialized and the framework\n might call its [build] method any number of times to obtain a\n description of the user interface for this subtree. [State] objects can\n spontaneously request to rebuild their subtree by callings their\n [setState] method, which indicates that some of their internal state\n has changed in a way that might impact the user interface in this\n subtree.\n * During this time, a parent widget might rebuild and request that this\n location in the tree update to display a new widget with the same\n [runtimeType] and [Widget.key]. When this happens, the framework will\n update the [widget] property to refer to the new widget and then call the\n [didUpdateWidget] method with the previous widget as an argument. [State]\n objects should override [didUpdateWidget] to respond to changes in their\n associated widget (e.g., to start implicit animations). The framework\n always calls [build] after calling [didUpdateWidget], which means any\n calls to [setState] in [didUpdateWidget] are redundant.\n * During development, if a hot reload occurs (whether initiated from the\n command line `flutter` tool by pressing `r`, or from an IDE), the\n [reassemble] method is called. This provides an opportunity to\n reinitialize any data that was prepared in the [initState] method.\n * If the subtree containing the [State] object is removed from the tree\n (e.g., because the parent built a widget with a different [runtimeType]\n or [Widget.key]), the framework calls the [deactivate] method. Subclasses\n should override this method to clean up any links between this object\n and other elements in the tree (e.g. if you have provided an ancestor\n with a pointer to a descendant's [RenderObject]).\n * At this point, the framework might reinsert this subtree into another\n part of the tree. If that happens, the framework will ensure that it\n calls [build] to give the [State] object a chance to adapt to its new\n location in the tree. If the framework does reinsert this subtree, it\n will do so before the end of the animation frame in which the subtree was\n removed from the tree. For this reason, [State] objects can defer\n releasing most resources until the framework calls their [dispose]\n method.\n * If the framework does not reinsert this subtree by the end of the current\n animation frame, the framework will call [dispose], which indicates that\n this [State] object will never build again. Subclasses should override\n this method to release any resources retained by this object (e.g.,\n stop any active animations).\n * After the framework calls [dispose], the [State] object is considered\n unmounted and the [mounted] property is false. It is an error to call\n [setState] at this point. This stage of the lifecycle is terminal: there\n is no way to remount a [State] object that has been disposed.\n\nSee also:\n\n * [StatefulWidget], where the current configuration of a [State] is hosted,\n and whose documentation has sample code for [State].\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "State" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls a scrollable widget.\n\nScroll controllers are typically stored as member variables in [State]\nobjects and are reused in each [State.build]. A single scroll controller can\nbe used to control multiple scrollable widgets, but some operations, such\nas reading the scroll [offset], require the controller to be used with a\nsingle scrollable widget.\n\nA scroll controller creates a [ScrollPosition] to manage the state specific\nto an individual [Scrollable] widget. To use a custom [ScrollPosition],\nsubclass [ScrollController] and override [createScrollPosition].\n\nA [ScrollController] is a [Listenable]. It notifies its listeners whenever\nany of the attached [ScrollPosition]s notify _their_ listeners (i.e.\nwhenever any of them scroll). It does not notify its listeners when the list\nof attached [ScrollPosition]s changes.\n\nTypically used with [ListView], [GridView], [CustomScrollView].\n\nSee also:\n\n * [ListView], [GridView], [CustomScrollView], which can be controlled by a\n [ScrollController].\n * [Scrollable], which is the lower-level widget that creates and associates\n [ScrollPosition] objects with [ScrollController] objects.\n * [PageController], which is an analogous object for controlling a\n [PageView].\n * [ScrollPosition], which manages the scroll offset for an individual\n scrolling widget.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScrollView] that uses a single child layout model.\n\nSee also:\n\n * [ListView], which is a [BoxScrollView] that uses a linear layout model.\n * [GridView], which is a [BoxScrollView] that uses a 2D layout model.\n * [CustomScrollView], which can combine multiple child layout models into a\n single scroll view.", "detail": "", "kind": 7, "label": "BoxScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialSlice", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that can be used as a child to [MergeableMaterial]. It is a slice\nof [Material] that animates merging with other slices.\n\nAll [MaterialSlice] objects need a [LocalKey].", "detail": "", "kind": 7, "label": "MaterialSlice" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Slider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A Material Design slider.\n\nUsed to select from a range of values.\n\nA slider can be used to select from either a continuous or a discrete set of\nvalues. The default is to use a continuous range of values from [min] to\n[max]. To use discrete values, use a non-null value for [divisions], which\nindicates the number of discrete intervals. For example, if [min] is 0.0 and\n[max] is 50.0 and [divisions] is 5, then the slider can take on the\ndiscrete values 0.0, 10.0, 20.0, 30.0, 40.0, and 50.0.\n\nThe terms for the parts of a slider are:\n\n * The \"thumb\", which is a shape that slides horizontally when the user\n drags it.\n * The \"track\", which is the line that the slider thumb slides along.\n * The \"value indicator\", which is a shape that pops up when the user\n is dragging the thumb to indicate the value being selected.\n * The \"active\" side of the slider is the side between the thumb and the\n minimum value.\n * The \"inactive\" side of the slider is the side between the thumb and the\n maximum value.\n\nThe slider will be disabled if [onChanged] is null or if the range given by\n[min]..[max] is empty (i.e. if [min] is equal to [max]).\n\nThe slider widget itself does not maintain any state. Instead, when the state\nof the slider changes, the widget calls the [onChanged] callback. Most\nwidgets that use a slider will listen for the [onChanged] callback and\nrebuild the slider with a new [value] to update the visual appearance of the\nslider. To know when the value starts to change, or when it is done\nchanging, set the optional callbacks [onChangeStart] and/or [onChangeEnd].\n\nBy default, a slider will be as wide as possible, centered vertically. When\ngiven unbounded constraints, it will attempt to make the track 144 pixels\nwide (with margins on each side) and will shrink-wrap vertically.\n\nRequires one of its ancestors to be a [Material] widget.\n\nRequires one of its ancestors to be a [MediaQuery] widget. Typically, these\nare introduced by the [MaterialApp] or [WidgetsApp] widget at the top of\nyour application widget tree.\n\nTo determine how it should be displayed (e.g. colors, thumb shape, etc.),\na slider uses the [SliderThemeData] available from either a [SliderTheme]\nwidget or the [ThemeData.sliderTheme] a [Theme] widget above it in the\nwidget tree. You can also override some of the colors with the [activeColor]\nand [inactiveColor] properties, although more fine-grained control of the\nlook is achieved using a [SliderThemeData].\n\nSee also:\n\n * [SliderTheme] and [SliderThemeData] for information about controlling\n the visual appearance of the slider.\n * [Radio], for selecting among a set of explicit values.\n * [Checkbox] and [Switch], for toggling a particular value on or off.\n * \n * [MediaQuery], from which the text scale factor is obtained.", "detail": "", "kind": 7, "label": "Slider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The text style to apply to descendant [Text] widgets without explicit style.", "detail": "", "kind": 7, "label": "DefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SnackBarClosedReason", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specify how a [SnackBar] was closed.\n\nThe [ScaffoldState.showSnackBar] function returns a\n[ScaffoldFeatureController]. The value of the controller's closed property\nis a Future that resolves to a SnackBarClosedReason. Applications that need\nto know how a snackbar was closed can use this value.\n\nExample:\n\n```dart\nScaffold.of(context).showSnackBar(\n SnackBar( ... )\n).closed.then((SnackBarClosedReason reason) {\n ...\n});\n```", "detail": "", "kind": 13, "label": "SnackBarClosedReason" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundSliderOverlayShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s thumb overlay.\n\nThe shape of the overlay is a circle with the same center as the thumb, but\nwith a larger radius. It animates to full size when the thumb is pressed,\nand animates back down to size 0 when it is released. It is painted behind\nthe thumb, and is expected to extend beyond the bounds of the thumb so that\nit is visible.\n\nThe overlay color is defined by [SliderThemeData.overlayColor].\n\nSee also:\n\n * [Slider], which includes an overlay defined by this shape.\n * [SliderTheme], which can be used to configure the overlay shape of all\n sliders in a widget subtree.", "detail": "", "kind": 7, "label": "RoundSliderOverlayShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Paints a [Banner].", "detail": "", "kind": 7, "label": "BannerPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget with a preferred size.\n\nThis widget does not impose any constraints on its child, and it doesn't\naffect the child's layout in any way. It just advertises a preferred size\nwhich can be used by the parent.\n\nSee also:\n\n * [AppBar.bottom] and [Scaffold.appBar], which require preferred size widgets.\n * [PreferredSizeWidget], the interface which this widget implements to expose\n its preferred size.\n * [AppBar] and [TabBar], which implement PreferredSizeWidget.", "detail": "", "kind": 7, "label": "PreferredSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [InheritedWidget] that's intended to be used as the base class for\nmodels whose dependents may only depend on one part or \"aspect\" of the\noverall model.\n\nAn inherited widget's dependents are unconditionally rebuilt when the\ninherited widget changes per [InheritedWidget.updateShouldNotify].\nThis widget is similar except that dependents aren't rebuilt\nunconditionally.\n\nWidgets that depend on an [InheritedModel] qualify their dependence\nwith a value that indicates what \"aspect\" of the model they depend\non. When the model is rebuilt, dependents will also be rebuilt, but\nonly if there was a change in the model that corresponds to the aspect\nthey provided.\n\nThe type parameter `T` is the type of the model aspect objects.\n\n\nWidgets create a dependency on an [InheritedModel] with a static method:\n[InheritedModel.inheritFrom]. This method's `context` parameter\ndefines the subtree that will be rebuilt when the model changes.\nTypically the `inheritFrom` method is called from a model-specific\nstatic `of` method. For example:\n\n```dart\nclass MyModel extends InheritedModel {\n // ...\n static MyModel of(BuildContext context, String aspect) {\n return InheritedModel.inheritFrom(context, aspect: aspect);\n }\n}\n```\n\nCalling `MyModel.of(context, 'foo')` means that `context` should only\nbe rebuilt when the `foo` aspect of `MyModel` changes. If the aspect\nis null, then the model supports all aspects.\n\nWhen the inherited model is rebuilt the [updateShouldNotify] and\n[updateShouldNotifyDependent] methods are used to decide what\nshould be rebuilt. If [updateShouldNotify] returns true, then the\ninherited model's [updateShouldNotifyDependent] method is tested for\neach dependent and the set of aspect objects it depends on.\nThe [updateShouldNotifyDependent] method must compare the set of aspect\ndependencies with the changes in the model itself.\n\nFor example:\n\n```dart\nclass ABModel extends InheritedModel {\n ABModel({ this.a, this.b, Widget child }) : super(child: child);\n\n final int a;\n final int b;\n\n @override\n bool updateShouldNotify(ABModel old) {\n return a != old.a || b != old.b;\n }\n\n @override\n bool updateShouldNotifyDependent(ABModel old, Set aspects) {\n return (a != old.a && aspects.contains('a'))\n || (b != old.b && aspects.contains('b'))\n }\n\n // ...\n}\n```\n\nIn the previous example the dependencies checked by\n[updateShouldNotifyDependent] are just the aspect strings passed to\n`inheritFromWidgetOfExactType`. They're represented as a [Set] because\none Widget can depend on more than one aspect of the model.\nIf a widget depends on the model but doesn't specify an aspect,\nthen changes in the model will cause the widget to be rebuilt\nunconditionally.\n\nSee also:\n\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.", "detail": "", "kind": 7, "label": "InheritedModel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The border, labels, icons, and styles used to decorate a Material\nDesign text field.\n\nThe [TextField] and [InputDecorator] classes use [InputDecoration] objects\nto describe their decoration. (In fact, this class is merely the\nconfiguration of an [InputDecorator], which does all the heavy lifting.)\n\nSee also:\n\n * [TextField], which is a text input widget that uses an\n [InputDecoration].\n * [InputDecorator], which is a widget that draws an [InputDecoration]\n around an input child widget.\n * [Decoration] and [DecoratedBox], for drawing borders and backgrounds\n around a child widget.", "detail": "", "kind": 7, "label": "InputDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A route that displays widgets in the [Navigator]'s [Overlay].", "detail": "", "kind": 7, "label": "OverlayRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const [\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const [0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that establishes a page storage bucket for this widget subtree.", "detail": "", "kind": 7, "label": "PageStorage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPadding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Padding] which automatically transitions the\nindentation over a given duration whenever the given inset changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.", "detail": "", "kind": 7, "label": "AnimatedPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for localized resource values for the lowest levels of the Flutter\nframework.\n\nIn particular, this maps locales to a specific [Directionality] using the\n[textDirection] property.\n\nSee also:\n\n * [DefaultWidgetsLocalizations], which implements this interface and\n supports a variety of locales.", "detail": "", "kind": 7, "label": "WidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Orientation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether in portrait or landscape.", "detail": "", "kind": 13, "label": "Orientation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Factory for creating gesture recognizers.\n\n`T` is the type of gesture recognizer this class manages.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the appearance of an [InputDecorator]'s border.\n\nAn input decorator's border is specified by [InputDecoration.border].\n\nThe border is drawn relative to the input decorator's \"container\" which\nis the optionally filled area above the decorator's helper, error,\nand counter.\n\nInput border's are decorated with a line whose weight and color are defined\nby [borderSide]. The input decorator's renderer animates the input border's\nappearance in response to state changes, like gaining or losing the focus,\nby creating new copies of its input border with [copyWith].\n\nSee also:\n\n * [UnderlineInputBorder], the default [InputDecorator] border which\n draws a horizontal line at the bottom of the input decorator's container.\n * [OutlineInputBorder], an [InputDecorator] border which draws a\n rounded rectangle around the input decorator's container.\n * [InputDecoration], which is used to configure an [InputDecorator].", "detail": "", "kind": 7, "label": "InputBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A horizontal group of cells in a [Table].\n\nEvery row in a table must have the same number of children.\n\nThe alignment of individual cells in a row can be controlled using a\n[TableCell].", "detail": "", "kind": 7, "label": "TableRow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollUpdateNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has changed its scroll position.\n\nSee also:\n\n * [OverscrollNotification], which indicates that a [Scrollable] widget\n has not changed its scroll position because the change would have caused\n its scroll position to go outside its scroll bounds.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollUpdateNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The various kinds of material in material design. Used to\nconfigure the default behavior of [Material] widgets.\n\nSee also:\n\n * [Material], in particular [Material.type].\n * [kMaterialEdges]", "detail": "", "kind": 13, "label": "MaterialType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that renders an exception's message.\n\nThis widget is used when a build method fails, to help with determining\nwhere the problem lies. Exceptions are also logged to the console, which you\ncan read using `flutter logs`. The console will also include additional\ninformation such as the stack trace for the exception.", "detail": "", "kind": 7, "label": "ErrorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ThemeDataTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [ThemeData]s.\n\nThis class specializes the interpolation of [Tween] to call the\n[ThemeData.lerp] method.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ThemeDataTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Material", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A piece of material.\n\nThe Material widget is responsible for:\n\n1. Clipping: If [clipBehavior] is not [Clip.none], Material clips its widget\n sub-tree to the shape specified by [shape], [type], and [borderRadius].\n By default, [clipBehavior] is [Clip.none] for performance considerations.\n2. Elevation: Material elevates its widget sub-tree on the Z axis by\n [elevation] pixels, and draws the appropriate shadow.\n3. Ink effects: Material shows ink effects implemented by [InkFeature]s\n like [InkSplash] and [InkHighlight] below its children.\n\n## The Material Metaphor\n\nMaterial is the central metaphor in material design. Each piece of material\nexists at a given elevation, which influences how that piece of material\nvisually relates to other pieces of material and how that material casts\nshadows.\n\nMost user interface elements are either conceptually printed on a piece of\nmaterial or themselves made of material. Material reacts to user input using\n[InkSplash] and [InkHighlight] effects. To trigger a reaction on the\nmaterial, use a [MaterialInkController] obtained via [Material.of].\n\nIn general, the features of a [Material] should not change over time (e.g. a\n[Material] should not change its [color], [shadowColor] or [type]).\nChanges to [elevation] and [shadowColor] are animated for [animationDuration].\nChanges to [shape] are animated if [type] is not [MaterialType.transparency]\nand [ShapeBorder.lerp] between the previous and next [shape] values is\nsupported. Shape changes are also animated for [animationDuration].\n\n\n## Shape\n\nThe shape for material is determined by [shape], [type], and [borderRadius].\n\n - If [shape] is non null, it determines the shape.\n - If [shape] is null and [borderRadius] is non null, the shape is a\n rounded rectangle, with corners specified by [borderRadius].\n - If [shape] and [borderRadius] are null, [type] determines the\n shape as follows:\n - [MaterialType.canvas]: the default material shape is a rectangle.\n - [MaterialType.card]: the default material shape is a rectangle with\n rounded edges. The edge radii is specified by [kMaterialEdges].\n - [MaterialType.circle]: the default material shape is a circle.\n - [MaterialType.button]: the default material shape is a rectangle with\n rounded edges. The edge radii is specified by [kMaterialEdges].\n - [MaterialType.transparency]: the default material shape is a rectangle.\n\n## Border\n\nIf [shape] is not null, then its border will also be painted (if any).\n\n## Layout change notifications\n\nIf the layout changes (e.g. because there's a list on the material, and it's\nbeen scrolled), a [LayoutChangedNotification] must be dispatched at the\nrelevant subtree. This in particular means that transitions (e.g.\n[SlideTransition]) should not be placed inside [Material] widgets so as to\nmove subtrees that contain [InkResponse]s, [InkWell]s, [Ink]s, or other\nwidgets that use the [InkFeature] mechanism. Otherwise, in-progress ink\nfeatures (e.g., ink splashes and ink highlights) won't move to account for\nthe new layout.\n\nSee also:\n\n * [MergeableMaterial], a piece of material that can split and re-merge.\n * [Card], a wrapper for a [Material] of [type] [MaterialType.card].\n * ", "detail": "", "kind": 7, "label": "Material" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RaisedButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design \"raised button\".\n\nA raised button is based on a [Material] widget whose [Material.elevation]\nincreases when the button is pressed.\n\nUse raised buttons to add dimension to otherwise mostly flat layouts, e.g.\nin long busy lists of content, or in wide spaces. Avoid using raised buttons\non already-raised content such as dialogs or cards.\n\nIf the [onPressed] callback is null, then the button will be disabled and by\ndefault will resemble a flat button in the [disabledColor]. If you are\ntrying to change the button's [color] and it is not having any effect, check\nthat you are passing a non-null [onPressed] handler.\n\nIf you want an ink-splash effect for taps, but don't want to use a button,\nconsider using [InkWell] directly.\n\nRaised buttons have a minimum size of 88.0 by 36.0 which can be overridden\nwith [ButtonTheme].\n\n\nThis sample shows how to render a disabled RaisedButton, an enabled RaisedButton\nand lastly a RaisedButton with gradient background.\n\n![Three raised buttons, one enabled, another disabled, and the last one\nstyled with a blue gradient background](https://flutter.github.io/assets-for-api-docs/assets/material/raised_button.png)\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Column(\n mainAxisSize: MainAxisSize.min,\n children: [\n const RaisedButton(\n onPressed: null,\n child: Text(\n 'Disabled Button',\n style: TextStyle(fontSize: 20)\n ),\n ),\n const SizedBox(height: 30),\n RaisedButton(\n onPressed: () {},\n child: const Text(\n 'Enabled Button',\n style: TextStyle(fontSize: 20)\n ),\n ),\n const SizedBox(height: 30),\n RaisedButton(\n onPressed: () {},\n textColor: Colors.white,\n padding: const EdgeInsets.all(0.0),\n child: Container(\n decoration: const BoxDecoration(\n gradient: LinearGradient(\n colors: [\n Color(0xFF0D47A1),\n Color(0xFF1976D2),\n Color(0xFF42A5F5),\n ],\n ),\n ),\n padding: const EdgeInsets.all(10.0),\n child: const Text(\n 'Gradient Button',\n style: TextStyle(fontSize: 20)\n ),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [FlatButton], a material design button without a shadow.\n * [DropdownButton], a button that shows options to select from.\n * [FloatingActionButton], the round button in material applications.\n * [IconButton], to create buttons that just contain icons.\n * [InkWell], which implements the ink splash part of a flat button.\n * [RawMaterialButton], the widget this widget is based on.\n * ", "detail": "", "kind": 7, "label": "RaisedButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flexible", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls how a child of a [Row], [Column], or [Flex] flexes.\n\nUsing a [Flexible] widget gives a child of a [Row], [Column], or [Flex]\nthe flexibility to expand to fill the available space in the main axis\n(e.g., horizontally for a [Row] or vertically for a [Column]), but, unlike\n[Expanded], [Flexible] does not require the child to fill the available\nspace.\n\nA [Flexible] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Flexible] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\nSee also:\n\n * [Expanded], which forces the child to expand to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flexible" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AboutListTile", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] that shows an about box.\n\nThis widget is often added to an app's [Drawer]. When tapped it shows\nan about box dialog with [showAboutDialog].\n\nThe about box will include a button that shows licenses for software used by\nthe application. The licenses shown are those returned by the\n[LicenseRegistry] API, which can be used to add more licenses to the list.\n\nIf your application does not have a [Drawer], you should provide an\naffordance to call [showAboutDialog] or (at least) [showLicensePage].", "detail": "", "kind": 7, "label": "AboutListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [Viewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "NestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Row", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in a horizontal array.\n\nTo cause a child to expand to fill the available horizontal space, wrap the\nchild in an [Expanded] widget.\n\nThe [Row] widget does not scroll (and in general it is considered an error\nto have more children in a [Row] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a vertical variant, see [Column].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example divides the available space into three (horizontally), and\nplaces text centered in the first two cells and the Flutter logo centered in\nthe third:\n\n```dart\nRow(\n children: [\n Expanded(\n child: Text('Deliver features faster', textAlign: TextAlign.center),\n ),\n Expanded(\n child: Text('Craft beautiful UIs', textAlign: TextAlign.center),\n ),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\n## Troubleshooting\n\n### Why does my row have a yellow and black warning stripe?\n\nIf the non-flexible contents of the row (those that are not wrapped in\n[Expanded] or [Flexible] widgets) are together wider than the row itself,\nthen the row is said to have overflowed. When a row overflows, the row does\nnot have any remaining space to share between its [Expanded] and [Flexible]\nchildren. The row reports this by drawing a yellow and black striped\nwarning box on the edge that is overflowing. If there is room on the outside\nof the row, the amount of overflow is printed in red lettering.\n\n\n#### Story time\n\nSuppose, for instance, that you had this code:\n\n```dart\nRow(\n children: [\n const FlutterLogo(),\n const Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nThe row first asks its first child, the [FlutterLogo], to lay out, at\nwhatever size the logo would like. The logo is friendly and happily decides\nto be 24 pixels to a side. This leaves lots of room for the next child. The\nrow then asks that next child, the text, to lay out, at whatever size it\nthinks is best.\n\nAt this point, the text, not knowing how wide is too wide, says \"Ok, I will\nbe thiiiiiiiiiiiiiiiiiiiis wide.\", and goes well beyond the space that the\nrow has available, not wrapping. The row responds, \"That's not fair, now I\nhave no more room available for my other children!\", and gets angry and\nsprouts a yellow and black strip.\n\nThe fix is to wrap the second child in an [Expanded] widget, which tells the\nrow that the child should be given the remaining room:\n\n```dart\nRow(\n children: [\n const FlutterLogo(),\n const Expanded(\n child: Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n ),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nNow, the row first asks the logo to lay out, and then asks the _icon_ to lay\nout. The [Icon], like the logo, is happy to take on a reasonable size (also\n24 pixels, not coincidentally, since both [FlutterLogo] and [Icon] honor the\nambient [IconTheme]). This leaves some room left over, and now the row tells\nthe text exactly how wide to be: the exact width of the remaining space. The\ntext, now happy to comply to a reasonable request, wraps the text within\nthat width, and you end up with a paragraph split over several lines.\n\n## Layout algorithm\n\n_This section describes how a [Row] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Row] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded horizontal constraints and the incoming\n vertical constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight vertical constraints that\n match the incoming max height.\n2. Divide the remaining horizontal space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of horizontal space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same vertical constraints\n as in step 1, but instead of using unbounded horizontal constraints, use\n horizontal constraints based on the amount of space allocated in step 2.\n Children with [Flexible.fit] properties that are [FlexFit.tight] are\n given tight constraints (i.e., forced to fill the allocated space), and\n children with [Flexible.fit] properties that are [FlexFit.loose] are\n given loose constraints (i.e., not forced to fill the allocated space).\n4. The height of the [Row] is the maximum height of the children (which will\n always satisfy the incoming vertical constraints).\n5. The width of the [Row] is determined by the [mainAxisSize] property. If\n the [mainAxisSize] property is [MainAxisSize.max], then the width of the\n [Row] is the max width of the incoming constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the width of the [Row] is the sum\n of widths of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any horizontal\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Column], for a vertical equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may by sized smaller (leaving some remaining room unused).\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Row" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A snapping physics that always lands directly on items instead of anywhere\nwithin the scroll extent.\n\nBehaves similarly to a slot machine wheel except the ballistics simulation\nnever overshoots and rolls back within a single item if it's to settle on\nthat item.\n\nMust be used with a scrollable that uses a [FixedExtentScrollController].\n\nDefers back to the parent beyond the scroll extents.", "detail": "", "kind": 7, "label": "FixedExtentScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OutlineButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Similar to a [FlatButton] with a thin grey rounded rectangle border.\n\nThe outline button's border shape is defined by [shape]\nand its appearance is defined by [borderSide], [disabledBorderColor],\nand [highlightedBorderColor]. By default the border is a one pixel\nwide grey rounded rectangle that does not change when the button is\npressed or disabled. By default the button's background is transparent.\n\nIf the [onPressed] callback is null, then the button will be disabled and by\ndefault will resemble a flat button in the [disabledColor].\n\nThe button's [highlightElevation], which defines the size of the\ndrop shadow when the button is pressed, is 0.0 (no shadow) by default.\nIf [highlightElevation] is given a value greater than 0.0 then the button\nbecomes a cross between [RaisedButton] and [FlatButton]: a bordered\nbutton whose elevation increases and whose background becomes opaque\nwhen the button is pressed.\n\nIf you want an ink-splash effect for taps, but don't want to use a button,\nconsider using [InkWell] directly.\n\nOutline buttons have a minimum size of 88.0 by 36.0 which can be overridden\nwith [ButtonTheme].\n\nSee also:\n\n * [RaisedButton], a filled material design button with a shadow.\n * [FlatButton], a material design button without a shadow.\n * [DropdownButton], a button that shows options to select from.\n * [FloatingActionButton], the round button in material applications.\n * [IconButton], to create buttons that just contain icons.\n * [InkWell], which implements the ink splash part of a flat button.\n * ", "detail": "", "kind": 7, "label": "OutlineButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedOpacity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Opacity] which automatically transitions the child's\nopacity over a given duration whenever the given opacity changes.\n\nAnimating an opacity is relatively expensive because it requires painting\nthe child into an intermediate buffer.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\n\n```dart\nclass LogoFade extends StatefulWidget {\n @override\n createState() => LogoFadeState();\n}\n\nclass LogoFadeState extends State {\n double opacityLevel = 1.0;\n\n void _changeOpacity() {\n setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedOpacity(\n opacity: opacityLevel,\n duration: Duration(seconds: 3),\n child: FlutterLogo(),\n ),\n RaisedButton(\n child: Text('Fade Logo'),\n onPressed: _changeOpacity,\n ),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [FadeTransition], an explicitly animated version of this widget, where\n an [Animation] is provided by the caller instead of being built in.", "detail": "", "kind": 7, "label": "AnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButtonThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [FloatingActionButton]\nwidgets.\n\nDescendant widgets obtain the current [FloatingActionButtonThemeData] object\nusing `Theme.of(context).floatingActionButtonTheme`. Instances of\n[FloatingActionButtonThemeData] can be customized with\n[FloatingActionButtonThemeData.copyWith].\n\nTypically a [FloatingActionButtonThemeData] is specified as part of the\noverall [Theme] with [ThemeData.floatingActionButtonTheme].\n\nAll [FloatingActionButtonThemeData] properties are `null` by default.\nWhen null, the [FloatingActionButton] will use the values from [ThemeData]\nif they exist, otherwise it will provide its own defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "FloatingActionButtonThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboardListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that calls a callback whenever the user presses or releases a key\non a keyboard.\n\nA [RawKeyboardListener] is useful for listening to raw key events and\nhardware buttons that are represented as keys. Typically used by games and\nother apps that use keyboards for purposes other than text entry.\n\nFor text entry, consider using a [EditableText], which integrates with\non-screen keyboards and input method editors (IMEs).\n\nSee also:\n\n * [EditableText], which should be used instead of this widget for text\n entry.", "detail": "", "kind": 7, "label": "RawKeyboardListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownButtonFormField", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience widget that wraps a [DropdownButton] in a [FormField].", "detail": "", "kind": 7, "label": "DropdownButtonFormField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A place in an [Overlay] that can contain a widget.\n\nOverlay entries are inserted into an [Overlay] using the\n[OverlayState.insert] or [OverlayState.insertAll] functions. To find the\nclosest enclosing overlay for a given [BuildContext], use the [Overlay.of]\nfunction.\n\nAn overlay entry can be in at most one overlay at a time. To remove an entry\nfrom its overlay, call the [remove] function on the overlay entry.\n\nBecause an [Overlay] uses a [Stack] layout, overlay entries can use\n[Positioned] and [AnimatedPositioned] to position themselves within the\noverlay.\n\nFor example, [Draggable] uses an [OverlayEntry] to show the drag avatar that\nfollows the user's finger across the screen after the drag begins. Using the\noverlay to display the drag avatar lets the avatar float over the other\nwidgets in the app. As the user's finger moves, draggable calls\n[markNeedsBuild] on the overlay entry to cause it to rebuild. It its build,\nthe entry includes a [Positioned] with its top and left property set to\nposition the drag avatar near the user's finger. When the drag is over,\n[Draggable] removes the entry from the overlay to remove the drag avatar\nfrom view.\n\nBy default, if there is an entirely [opaque] entry over this one, then this\none will not be included in the widget tree (in particular, stateful widgets\nwithin the overlay entry will not be instantiated). To ensure that your\noverlay entry is still built even if it is not visible, set [maintainState]\nto true. This is more expensive, so should be done with care. In particular,\nif widgets in an overlay entry with [maintainState] set to true repeatedly\ncall [State.setState], the user's battery will be drained unnecessarily.\n\nSee also:\n\n * [Overlay]\n * [OverlayState]\n * [WidgetsApp]\n * [MaterialApp]", "detail": "", "kind": 7, "label": "OverlayEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HoldScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scroll activity that does nothing but can be released to resume\nnormal idle behavior.\n\nThis is used while the user is touching the [Scrollable] but before the\ntouch has become a [Drag].\n\nFor the purposes of [ScrollNotification]s, this activity does not constitute\nscrolling, and does not prevent the user from interacting with the contents\nof the [Scrollable] (unlike when a drag has begun or there is a scroll\nanimation underway).", "detail": "", "kind": 7, "label": "HoldScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material expansion panel list that lays out its children and animates\nexpansions.\n\n\nHere is a simple example of how to implement ExpansionPanelList.\n\n```dart\n// stores ExpansionPanel state information\nclass Item {\n Item({\n this.expandedValue,\n this.headerValue,\n this.isExpanded = false,\n });\n\n String expandedValue;\n String headerValue;\n bool isExpanded;\n}\n\nList generateItems(int numberOfItems) {\n return List.generate(numberOfItems, (int index) {\n return Item(\n headerValue: 'Panel $index',\n expandedValue: 'This is item number $index',\n );\n });\n}\n```\n\n```dart\nList _data = generateItems(8);\n\n@override\nWidget build(BuildContext context) {\n return SingleChildScrollView(\n child: Container(\n child: _buildPanel(),\n ),\n );\n}\n\nWidget _buildPanel() {\n return ExpansionPanelList(\n expansionCallback: (int index, bool isExpanded) {\n setState(() {\n _data[index].isExpanded = !isExpanded;\n });\n },\n children: _data.map((Item item) {\n return ExpansionPanel(\n headerBuilder: (BuildContext context, bool isExpanded) {\n return ListTile(\n title: Text(item.headerValue),\n );\n },\n body: ListTile(\n title: Text(item.expandedValue),\n subtitle: Text('To delete this panel, tap the trash can icon'),\n trailing: Icon(Icons.delete),\n onTap: () {\n setState(() {\n _data.removeWhere((currentItem) => item == currentItem);\n });\n }\n ),\n isExpanded: item.isExpanded,\n );\n }).toList(),\n );\n}\n```\n\nSee also:\n\n * [ExpansionPanel]\n * [ExpansionPanelList.radio]\n * ", "detail": "", "kind": 7, "label": "ExpansionPanelList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a slider theme to descendant [Slider] widgets.\n\nA slider theme describes the colors and shape choices of the slider\ncomponents.\n\nDescendant widgets obtain the current theme's [SliderThemeData] object using\n[SliderTheme.of]. When a widget uses [SliderTheme.of], it is automatically\nrebuilt if the theme later changes.\n\nThe slider is as big as the largest of\nthe [SliderComponentShape.getPreferredSize] of the thumb shape,\nthe [SliderComponentShape.getPreferredSize] of the overlay shape,\nand the [SliderTickMarkShape.getPreferredSize] of the tick mark shape\n\nSee also:\n\n * [SliderThemeData], which describes the actual configuration of a slider\n theme.\n * [SliderComponentShape], which can be used to create custom shapes for\n the slider thumb, overlay, and value indicator.\n * [SliderTrackShape], which can be used to create custom shapes for the\n slider track.\n * [SliderTickMarkShape], which can be used to create custom shapes for the\n slider tick marks.", "detail": "", "kind": 7, "label": "SliderTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenableBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget whose content stays synced with a [ValueListenable].\n\nGiven a [ValueListenable] and a [builder] which builds widgets from\nconcrete values of `T`, this class will automatically register itself as a\nlistener of the [ValueListenable] and call the [builder] with updated values\nwhen the value changes.\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nvalue of the [ValueListenable], it's more efficient to build that subtree\nonce instead of rebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\n[ValueListenableBuilder] will pass it back to your [builder] function so\nthat you can incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis sample shows how you could use a [ValueListenableBuilder] instead of\nsetting state on the whole [Scaffold] in the default `flutter create` app.\n\n```dart\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State {\n final ValueNotifier _counter = ValueNotifier(0);\n final Widget goodJob = const Text('Good job!');\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title)\n ),\n body: Center(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n Text('You have pushed the button this many times:'),\n ValueListenableBuilder(\n builder: (BuildContext context, int value, Widget child) {\n // This builder will only get called when the _counter\n // is updated.\n return Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: [\n Text('$value'),\n child,\n ],\n );\n },\n valueListenable: _counter,\n // The child parameter is most helpful if the child is\n // expensive to build and does not depend on the value from\n // the notifier.\n child: goodJob,\n )\n ],\n ),\n ),\n floatingActionButton: FloatingActionButton(\n child: Icon(Icons.plus_one),\n onPressed: () => _counter.value += 1,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedBuilder], which also triggers rebuilds from a [Listenable]\n without passing back a specific value from a [ValueListenable].\n * [NotificationListener], which lets you rebuild based on [Notification]\n coming from its descendant widgets rather than a [ValueListenable] that\n you have a direct reference to.\n * [StreamBuilder], where a builder can depend on a [Stream] rather than\n a [ValueListenable] for more advanced use cases.", "detail": "", "kind": 7, "label": "ValueListenableBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A route with entrance and exit transitions.", "detail": "", "kind": 7, "label": "TransitionRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePageBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the function that builds a route's primary contents.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildPage] for complete definition of the parameters.", "detail": "(BuildContext context, Animation animation, Animation secondaryAnimation) → Widget", "kind": 7, "label": "RoutePageBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of a method that provides a [BuildContext] and\n[ScrollController] for building a widget that may overflow the draggable\n[Axis] of the containing [DraggableScrollSheet].\n\nUsers should apply the [scrollController] to a [ScrollView] subclass, such\nas a [SingleChildScrollView], [ListView] or [GridView], to have the whole\nsheet be draggable.", "detail": "(BuildContext context, ScrollController scrollController) → Widget", "kind": 7, "label": "ScrollableWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that builds a widget given an [Orientation].\n\nUsed by [OrientationBuilder.builder].", "detail": "(BuildContext context, Orientation orientation) → Widget", "kind": 7, "label": "OrientationWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the constructor that is called when an error occurs while\nbuilding a widget.\n\nThe argument provides information regarding the cause of the error.\n\nSee also:\n\n * [ErrorWidget.builder], which can be set to override the default\n [ErrorWidget] builder.\n * [FlutterError.reportError], which is typically called with the same\n [FlutterErrorDetails] object immediately prior to [ErrorWidget.builder]\n being called.", "detail": "(FlutterErrorDetails details) → Widget", "kind": 7, "label": "ErrorWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes how [Scrollable] widgets should behave.\n\nUsed by [ScrollConfiguration] to configure the [Scrollable] widgets in a\nsubtree.", "detail": "", "kind": 7, "label": "ScrollBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetAccept", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for causing a [DragTarget] to accept the given data.\n\nUsed by [DragTarget.onAccept].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItemSelected", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback invoked when a menu item is selected. The\nargument is the value of the [PopupMenuItem] that caused its menu to be\ndismissed.\n\nUsed by [PopupMenuButton.onSelected].", "detail": "(T value) → void", "kind": 7, "label": "PopupMenuItemSelected" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that has a child widget provided to it, instead of building a new\nwidget.\n\nUseful as a base class for other widgets, such as [InheritedWidget] and\n[ParentDataWidget].\n\nSee also:\n\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [ParentDataWidget], for widgets that populate the\n [RenderObject.parentData] slot of their child's [RenderObject] to\n configure the parent widget's layout.\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "ProxyWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleTickerProviderStateMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides a single [Ticker] that is configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create the [AnimationController] in a [State] that only uses a single\n[AnimationController], mix in this class, then pass `vsync: this`\nto the animation controller constructor.\n\nThis mixin only supports vending a single ticker. If you might have multiple\n[AnimationController] objects over the lifetime of the [State], use a full\n[TickerProviderStateMixin] instead.", "detail": "", "kind": 7, "label": "SingleTickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpandIcon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget representing a rotating expand/collapse button. The icon rotates\n180 degrees when pressed, then reverts the animation on a second press.\nThe underlying icon is [Icons.expand_more].\n\nThe expand icon does not include a semantic label for accessibility. In\norder to be accessible it should be combined with a label using\n[MergeSemantics]. This is done automatically by the [ExpansionPanel] widget.\n\nSee [IconButton] for a more general implementation of a pressable button\nwith an icon.", "detail": "", "kind": 7, "label": "ExpandIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NeverScrollableScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics that does not allow the user to scroll.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "NeverScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectionChangedCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the selection change callback used by\n[WidgetInspectorService.selectionChangedCallback].", "detail": "() → void", "kind": 7, "label": "InspectorSelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: [\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: [\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: [\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback used by ink effects to obtain the rectangle for the effect.\n\nUsed by [InkHighlight] and [InkSplash], for example.", "detail": "() → Rect", "kind": 7, "label": "RectCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearProgressIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design linear progress indicator, also known as a progress bar.\n\nA widget that shows progress along a line. There are two kinds of linear\nprogress indicators:\n\n * _Determinate_. Determinate progress indicators have a specific value at\n each point in time, and the value should increase monotonically from 0.0\n to 1.0, at which time the indicator is complete. To create a determinate\n progress indicator, use a non-null [value] between 0.0 and 1.0.\n * _Indeterminate_. Indeterminate progress indicators do not have a specific\n value at each point in time and instead indicate that progress is being\n made without indicating how much progress remains. To create an\n indeterminate progress indicator, use a null [value].\n\nThe indicator line is displayed with [valueColor], an animated value. To\nspecify a constant color value use: `AlwaysStoppedAnimation(color)`.\n\nSee also:\n\n * [CircularProgressIndicator], which shows progress along a circular arc.\n * [RefreshIndicator], which automatically displays a [CircularProgressIndicator]\n when the underlying vertical scrollable is overscrolled.\n * ", "detail": "", "kind": 7, "label": "LinearProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcher", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that by default does a [FadeTransition] between a new widget and\nthe widget previously set on the [AnimatedSwitcher] as a child.\n\nIf they are swapped fast enough (i.e. before [duration] elapses), more than\none previous child can exist and be transitioning out while the newest one\nis transitioning in.\n\nIf the \"new\" child is the same widget type and key as the \"old\" child, but\nwith different parameters, then [AnimatedSwitcher] will *not* do a\ntransition between them, since as far as the framework is concerned, they\nare the same widget and the existing widget can be updated with the new\nparameters. To force the transition to occur, set a [Key] on each child\nwidget that you wish to be considered unique (typically a [ValueKey] on the\nwidget data that distinguishes this child from the others).\n\nThe same key can be used for a new child as was used for an already-outgoing\nchild; the two will not be considered related. (For example, if a progress\nindicator with key A is first shown, then an image with key B, then another\nprogress indicator with key A again, all in rapid succession, then the old\nprogress indicator and the image will be fading out while a new progress\nindicator is fading in.)\n\n\n```dart\nclass ClickCounter extends StatefulWidget {\n const ClickCounter({Key key}) : super(key: key);\n\n @override\n _ClickCounterState createState() => _ClickCounterState();\n}\n\nclass _ClickCounterState extends State {\n int _count = 0;\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Material(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedSwitcher(\n duration: const Duration(milliseconds: 500),\n transitionBuilder: (Widget child, Animation animation) {\n return ScaleTransition(child: child, scale: animation);\n },\n child: Text(\n '$_count',\n // This key causes the AnimatedSwitcher to interpret this as a \"new\"\n // child each time the count changes, so that it will begin its animation\n // when the count changes.\n key: ValueKey(_count),\n style: Theme.of(context).textTheme.display1,\n ),\n ),\n RaisedButton(\n child: const Text('Increment'),\n onPressed: () {\n setState(() {\n _count += 1;\n });\n },\n ),\n ],\n ),\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedCrossFade], which only fades between two children, but also\n interpolates their sizes, and is reversible.\n * [FadeTransition] which [AnimatedSwitcher] uses to perform the transition.", "detail": "", "kind": 7, "label": "AnimatedSwitcher" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPrototypeExtentList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places its box children in a linear array and constrains them\nto have the same extent as a prototype item along the main axis.\n\n[SliverPrototypeExtentList] arranges its children in a line along\nthe main axis starting at offset zero and without gaps. Each child is\nconstrained to the same extent as the [prototypeItem] along the main axis\nand the [SliverConstraints.crossAxisExtent] along the cross axis.\n\n[SliverPrototypeExtentList] is more efficient than [SliverList] because\n[SliverPrototypeExtentList] does not need to lay out its children to obtain\ntheir extent along the main axis. It's a little more flexible than\n[SliverFixedExtentList] because there's no need to determine the appropriate\nitem extent in pixels.\n\nSee also:\n\n * [SliverFixedExtentList], whose itemExtent is a pixel value.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverPrototypeExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedIcons", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Identifier for the supported material design animated icons.\n\nUse with [AnimatedIcon] class to show specific animated icons.", "detail": "", "kind": 7, "label": "AnimatedIcons" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivityDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A backend for a [ScrollActivity].\n\nUsed by subclasses of [ScrollActivity] to manipulate the scroll view that\nthey are acting upon.\n\nSee also:\n\n * [ScrollActivity], which uses this class as its delegate.\n * [ScrollPositionWithSingleContext], the main implementation of this interface.", "detail": "", "kind": 7, "label": "ScrollActivityDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkRipple", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual reaction on a piece of [Material] to user input.\n\nA circular ink feature whose origin starts at the input touch point and\nwhose radius expands from 60% of the final radius. The splash origin\nanimates to the center of its [referenceBox].\n\nThis object is rarely created directly. Instead of creating an ink ripple,\nconsider using an [InkResponse] or [InkWell] widget, which uses\ngestures (such as tap and long-press) to trigger ink splashes. This class\nis used when the [Theme]'s [ThemeData.splashFactory] is [InkRipple.splashFactory].\n\nSee also:\n\n * [InkSplash], which is an ink splash feature that expands less\n aggressively than the ripple.\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink splash is painted.\n * [InkHighlight], which is an ink feature that emphasizes a part of a\n [Material].", "detail": "", "kind": 7, "label": "InkRipple" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using a rectangle.\n\nBy default, [ClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].\n\n[ClipRect] is commonly used with these widgets, which commonly paint outside\ntheir bounds:\n\n * [CustomPaint]\n * [CustomSingleChildLayout]\n * [CustomMultiChildLayout]\n * [Align] and [Center] (e.g., if [Align.widthFactor] or\n [Align.heightFactor] is less than 1.0).\n * [OverflowBox]\n * [SizedOverflowBox]\n\n\nFor example, by combining a [ClipRect] with an [Align], one can show just\nthe top half of an [Image]:\n\n```dart\nClipRect(\n child: Align(\n alignment: Alignment.topCenter,\n heightFactor: 0.5,\n child: Image.network(userAvatarUrl),\n ),\n)\n```\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutId", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Metadata for identifying children in a [CustomMultiChildLayout].\n\nThe [MultiChildLayoutDelegate.hasChild],\n[MultiChildLayoutDelegate.layoutChild], and\n[MultiChildLayoutDelegate.positionChild] methods use these identifiers.", "detail": "", "kind": 7, "label": "LayoutId" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Placeholder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that draws a box that represents where other widgets will one day\nbe added.\n\nThis widget is useful during development to indicate that the interface is\nnot yet complete.\n\nBy default, the placeholder is sized to fit its container. If the\nplaceholder is in an unbounded space, it will size itself according to the\ngiven [fallbackWidth] and [fallbackHeight].", "detail": "", "kind": 7, "label": "Placeholder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RebuildDirtyWidgetCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for [debugOnRebuildDirtyWidget] implementations.", "detail": "(Element e, bool builtOnce) → void", "kind": 7, "label": "RebuildDirtyWidgetCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConfirmDismissCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [Dismissible] to give the application an opportunity to\nconfirm or veto a dismiss gesture.\n\nUsed by [Dismissible.confirmDismiss].", "detail": "(DismissDirection direction) → Future", "kind": 7, "label": "ConfirmDismissCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that contains a multiple box children that each fill the viewport.\n\n[SliverFillViewport] places its children in a linear array along the main\naxis. Each child is sized to fill the viewport, both in the main and cross\naxis.\n\nSee also:\n\n * [SliverFixedExtentList], which has a configurable\n [SliverFixedExtentList.itemExtent].\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Step", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material step used in [Stepper]. The step can have a title and subtitle,\nan icon within its circle, some content and a state that governs its\nstyling.\n\nSee also:\n\n * [Stepper]\n * ", "detail": "", "kind": 7, "label": "Step" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextField", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design text field.\n\nA text field lets the user enter text, either with hardware keyboard or with\nan onscreen keyboard.\n\nThe text field calls the [onChanged] callback whenever the user changes the\ntext in the field. If the user indicates that they are done typing in the\nfield (e.g., by pressing a button on the soft keyboard), the text field\ncalls the [onSubmitted] callback.\n\nTo control the text that is displayed in the text field, use the\n[controller]. For example, to set the initial value of the text field, use\na [controller] that already contains some text. The [controller] can also\ncontrol the selection and composing region (and to observe changes to the\ntext, selection, and composing region).\n\nBy default, a text field has a [decoration] that draws a divider below the\ntext field. You can use the [decoration] property to control the decoration,\nfor example by adding a label or an icon. If you set the [decoration]\nproperty to null, the decoration will be removed entirely, including the\nextra padding introduced by the decoration to save space for the labels.\n\nIf [decoration] is non-null (which is the default), the text field requires\none of its ancestors to be a [Material] widget. When the [TextField] is\ntapped an ink splash that paints on the material is triggered, see\n[ThemeData.splashFactory].\n\nTo integrate the [TextField] into a [Form] with other [FormField] widgets,\nconsider using [TextFormField].\n\nThis example shows how to create a [TextField] that will obscure input. The\n[InputDecoration] surrounds the field in a border using [OutlineInputBorder]\nand adds a label.\n\n```dart\nTextField(\n obscureText: true,\n decoration: InputDecoration(\n border: OutlineInputBorder(),\n labelText: 'Password',\n ),\n)\n```\n\nSee also:\n\n * \n * [TextFormField], which integrates with the [Form] widget.\n * [InputDecorator], which shows the labels and other visual elements that\n surround the actual text editing widget.\n * [EditableText], which is the raw text editing control at the heart of a\n [TextField]. The [EditableText] widget is rarely used directly unless\n you are implementing an entirely different design language, such as\n Cupertino.", "detail": "", "kind": 7, "label": "TextField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChipAttributes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface defining the base attributes for a material design chip.\n\nChips are compact elements that represent an attribute, text, entity, or\naction.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * ", "detail": "", "kind": 7, "label": "ChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material widget that's displayed at the bottom of an app for selecting\namong a small number of views, typically between three and five.\n\nThe bottom navigation bar consists of multiple items in the form of\ntext labels, icons, or both, laid out on top of a piece of material. It\nprovides quick navigation between the top-level views of an app. For larger\nscreens, side navigation may be a better fit.\n\nA bottom navigation bar is usually used in conjunction with a [Scaffold],\nwhere it is provided as the [Scaffold.bottomNavigationBar] argument.\n\nThe bottom navigation bar's [type] changes how its [items] are displayed.\nIf not specified, then it's automatically set to\n[BottomNavigationBarType.fixed] when there are less than four items, and\n[BottomNavigationBarType.shifting] otherwise.\n\n * [BottomNavigationBarType.fixed], the default when there are less than\n four [items]. The selected item is rendered with the\n [selectedItemColor] if it's non-null, otherwise the theme's\n [ThemeData.primaryColor] is used. If [backgroundColor] is null, The\n navigation bar's background color defaults to the [Material] background\n color, [ThemeData.canvasColor] (essentially opaque white).\n * [BottomNavigationBarType.shifting], the default when there are four\n or more [items]. If [selectedItemColor] is null, all items are rendered\n in white. The navigation bar's background color is the same as the\n [BottomNavigationBarItem.backgroundColor] of the selected item. In this\n case it's assumed that each item will have a different background color\n and that background color will contrast well with white.\n\nThis example shows a [BottomNavigationBar] as it is used within a [Scaffold]\nwidget. The [BottomNavigationBar] has three [BottomNavigationBarItem]\nwidgets and the [currentIndex] is set to index 0. The selected item is\namber. The `_onItemTapped` function changes the selected item's index\nand displays a corresponding message in the center of the [Scaffold].\n\n![A scaffold with a bottom navigation bar containing three bottom navigation\nbar items. The first one is selected.](https://flutter.github.io/assets-for-api-docs/assets/material/bottom_navigation_bar.png)\n\n```dart\nint _selectedIndex = 0;\nstatic const TextStyle optionStyle = TextStyle(fontSize: 30, fontWeight: FontWeight.bold);\nstatic const List _widgetOptions = [\n Text(\n 'Index 0: Home',\n style: optionStyle,\n ),\n Text(\n 'Index 1: Business',\n style: optionStyle,\n ),\n Text(\n 'Index 2: School',\n style: optionStyle,\n ),\n];\n\nvoid _onItemTapped(int index) {\n setState(() {\n _selectedIndex = index;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('BottomNavigationBar Sample'),\n ),\n body: Center(\n child: _widgetOptions.elementAt(_selectedIndex),\n ),\n bottomNavigationBar: BottomNavigationBar(\n items: const [\n BottomNavigationBarItem(\n icon: Icon(Icons.home),\n title: Text('Home'),\n ),\n BottomNavigationBarItem(\n icon: Icon(Icons.business),\n title: Text('Business'),\n ),\n BottomNavigationBarItem(\n icon: Icon(Icons.school),\n title: Text('School'),\n ),\n ],\n currentIndex: _selectedIndex,\n selectedItemColor: Colors.amber[800],\n onTap: _onItemTapped,\n ),\n );\n}\n```\n\nSee also:\n\n * [BottomNavigationBarItem]\n * [Scaffold]\n * ", "detail": "", "kind": 7, "label": "BottomNavigationBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay show two time series. The first shows how much time was required\non this thread to produce each frame. The second shows how much time was\nrequired on the GPU thread to produce each frame. Ideally, both these values\nwould be less than the total frame budget for the hardware on which the app\nis running. For example, if the hardware has a screen that updates at 60 Hz,\neach thread should ideally spend less than 16ms producing each frame. This\nideal condition is indicated by a green vertical line for each thread.\nOtherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "PerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildListDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for slivers using an explicit list.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[SliverChildBuilderDelegate] or by subclassing [SliverChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.\n\nThe widgets in the given [children] list are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\nSee [SliverChildBuilderDelegate] for sample code using\n`semanticIndexOffset` and `semanticIndexCallback`.\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.", "detail": "", "kind": 7, "label": "SliverChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "YearPicker", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list of years to allow picking a year.\n\nThe year picker widget is rarely used directly. Instead, consider using\n[showDatePicker], which creates a date picker dialog.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.\n * [showTimePicker], which shows a dialog that contains a material design\n time picker.", "detail": "", "kind": 7, "label": "YearPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkSplash", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual reaction on a piece of [Material] to user input.\n\nA circular ink feature whose origin starts at the input touch point\nand whose radius expands from zero.\n\nThis object is rarely created directly. Instead of creating an ink splash\ndirectly, consider using an [InkResponse] or [InkWell] widget, which uses\ngestures (such as tap and long-press) to trigger ink splashes.\n\nSee also:\n\n * [InkRipple], which is an ink splash feature that expands more\n aggressively than this class does.\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink splash is painted.\n * [InkHighlight], which is an ink feature that emphasizes a part of a\n [Material].", "detail": "", "kind": 7, "label": "InkSplash" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrolling view inside of which can be nested other scrolling views, with\ntheir scroll positions being intrinsically linked.\n\nThe most common use case for this widget is a scrollable view with a\nflexible [SliverAppBar] containing a [TabBar] in the header (build by\n[headerSliverBuilder], and with a [TabBarView] in the [body], such that the\nscrollable view's contents vary based on which tab is visible.\n\n## Motivation\n\nIn a normal [ScrollView], there is one set of slivers (the components of the\nscrolling view). If one of those slivers hosted a [TabBarView] which scrolls\nin the opposite direction (e.g. allowing the user to swipe horizontally\nbetween the pages represented by the tabs, while the list scrolls\nvertically), then any list inside that [TabBarView] would not interact with\nthe outer [ScrollView]. For example, flinging the inner list to scroll to\nthe top would not cause a collapsed [SliverAppBar] in the outer [ScrollView]\nto expand.\n\n[NestedScrollView] solves this problem by providing custom\n[ScrollController]s for the outer [ScrollView] and the inner [ScrollView]s\n(those inside the [TabBarView], hooking them together so that they appear,\nto the user, as one coherent scroll view.\n\n\nThis example shows a [NestedScrollView] whose header is the combination of a\n[TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a\n[SliverOverlapAbsorber]/[SliverOverlapInjector] pair to make the inner lists\nalign correctly, and it uses [SafeArea] to avoid any horizontal disturbances\n(e.g. the \"notch\" on iOS when the phone is horizontal). In addition,\n[PageStorageKey]s are used to remember the scroll position of each tab's\nlist.\n\nIn the example below, `_tabs` is a list of strings, one for each tab, giving\nthe tab labels. In a real application, it would be replaced by the actual\ndata model being represented.\n\n```dart\nDefaultTabController(\n length: _tabs.length, // This is the number of tabs.\n child: NestedScrollView(\n headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {\n // These are the slivers that show up in the \"outer\" scroll view.\n return [\n SliverOverlapAbsorber(\n // This widget takes the overlapping behavior of the SliverAppBar,\n // and redirects it to the SliverOverlapInjector below. If it is\n // missing, then it is possible for the nested \"inner\" scroll view\n // below to end up under the SliverAppBar even when the inner\n // scroll view thinks it has not been scrolled.\n // This is not necessary if the \"headerSliverBuilder\" only builds\n // widgets that do not overlap the next sliver.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n child: SliverAppBar(\n title: const Text('Books'), // This is the title in the app bar.\n pinned: true,\n expandedHeight: 150.0,\n // The \"forceElevated\" property causes the SliverAppBar to show\n // a shadow. The \"innerBoxIsScrolled\" parameter is true when the\n // inner scroll view is scrolled beyond its \"zero\" point, i.e.\n // when it appears to be scrolled below the SliverAppBar.\n // Without this, there are cases where the shadow would appear\n // or not appear inappropriately, because the SliverAppBar is\n // not actually aware of the precise position of the inner\n // scroll views.\n forceElevated: innerBoxIsScrolled,\n bottom: TabBar(\n // These are the widgets to put in each tab in the tab bar.\n tabs: _tabs.map((String name) => Tab(text: name)).toList(),\n ),\n ),\n ),\n ];\n },\n body: TabBarView(\n // These are the contents of the tab views, below the tabs.\n children: _tabs.map((String name) {\n return SafeArea(\n top: false,\n bottom: false,\n child: Builder(\n // This Builder is needed to provide a BuildContext that is \"inside\"\n // the NestedScrollView, so that sliverOverlapAbsorberHandleFor() can\n // find the NestedScrollView.\n builder: (BuildContext context) {\n return CustomScrollView(\n // The \"controller\" and \"primary\" members should be left\n // unset, so that the NestedScrollView can control this\n // inner scroll view.\n // If the \"controller\" property is set, then this scroll\n // view will not be associated with the NestedScrollView.\n // The PageStorageKey should be unique to this ScrollView;\n // it allows the list to remember its scroll position when\n // the tab view is not on the screen.\n key: PageStorageKey(name),\n slivers: [\n SliverOverlapInjector(\n // This is the flip side of the SliverOverlapAbsorber above.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n ),\n SliverPadding(\n padding: const EdgeInsets.all(8.0),\n // In this example, the inner scroll view has\n // fixed-height list items, hence the use of\n // SliverFixedExtentList. However, one could use any\n // sliver widget here, e.g. SliverList or SliverGrid.\n sliver: SliverFixedExtentList(\n // The items in this example are fixed to 48 pixels\n // high. This matches the Material Design spec for\n // ListTile widgets.\n itemExtent: 48.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n // This builder is called for each child.\n // In this example, we just number each list item.\n return ListTile(\n title: Text('Item $index'),\n );\n },\n // The childCount of the SliverChildBuilderDelegate\n // specifies how many children this inner list\n // has. In this example, each tab has a list of\n // exactly 30 items, but this is arbitrary.\n childCount: 30,\n ),\n ),\n ),\n ],\n );\n },\n ),\n );\n }).toList(),\n ),\n ),\n)\n```", "detail": "", "kind": 7, "label": "NestedScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SearchDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Delegate for [showSearch] to define the content of the search page.\n\nThe search page always shows an [AppBar] at the top where users can\nenter their search queries. The buttons shown before and after the search\nquery text field can be customized via [SearchDelegate.leading] and\n[SearchDelegate.actions].\n\nThe body below the [AppBar] can either show suggested queries (returned by\n[SearchDelegate.buildSuggestions]) or - once the user submits a search - the\nresults of the search as returned by [SearchDelegate.buildResults].\n\n[SearchDelegate.query] always contains the current query entered by the user\nand should be used to build the suggestions and results.\n\nThe results can be brought on screen by calling [SearchDelegate.showResults]\nand you can go back to showing the suggestions by calling\n[SearchDelegate.showSuggestions].\n\nOnce the user has selected a search result, [SearchDelegate.close] should be\ncalled to remove the search page from the top of the navigation stack and\nto notify the caller of [showSearch] about the selected search result.\n\nA given [SearchDelegate] can only be associated with one active [showSearch]\ncall. Call [SearchDelegate.close] before re-using the same delegate instance\nfor another [showSearch] call.", "detail": "", "kind": 7, "label": "SearchDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list that works page by page.\n\nEach child of a page view is forced to be the same size as the viewport.\n\nYou can use a [PageController] to control which page is visible in the view.\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nThe [PageController] can also be used to control the\n[PageController.initialPage], which determines which page is shown when the\n[PageView] is first constructed, and the [PageController.viewportFraction],\nwhich determines the size of the pages as a fraction of the viewport size.\n\n\nSee also:\n\n * [PageController], which controls which page is visible in the view.\n * [SingleChildScrollView], when you need to make a single child scrollable.\n * [ListView], for a scrollable list of boxes.\n * [GridView], for a scrollable grid of boxes.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "PageView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBoxTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of a [DecoratedBox] that animates the different properties\nof its [Decoration].\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [DecoratedBox], which also draws a [Decoration] but is not animated.\n * [AnimatedContainer], a more full-featured container that also animates on\n decoration using an internal animation.", "detail": "", "kind": 7, "label": "DecoratedBoxTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuDivider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A horizontal divider in a material design popup menu.\n\nThis widget adapts the [Divider] for use in popup menus.\n\nSee also:\n\n * [PopupMenuItem], for the kinds of items that this widget divides.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "PopupMenuDivider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [Decoration]s.\n\nThis class specializes the interpolation of [Tween] to use\n[Decoration.lerp].\n\nFor [ShapeDecoration]s which know how to [ShapeDecoration.lerpTo] or\n[ShapeDecoration.lerpFrom] each other, this will produce a smooth\ninterpolation between decorations.\n\nSee also:\n\n * [Tween] for a discussion on how to use interpolation objects.\n * [ShapeDecoration], [RoundedRectangleBorder], [CircleBorder], and\n [StadiumBorder] for examples of shape borders that can be smoothly\n interpolated.\n * [BoxBorder] for a border that can only be smoothly interpolated between other\n [BoxBorder]s.", "detail": "", "kind": 7, "label": "DecorationTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [RenderObjectWidget] as its configuration.\n\n[RenderObjectElement] objects have an associated [RenderObject] widget in\nthe render tree, which handles concrete operations like laying out,\npainting, and hit testing.\n\nContrast with [ComponentElement].\n\nFor details on the lifecycle of an element, see the discussion at [Element].\n\n## Writing a RenderObjectElement subclass\n\nThere are three common child models used by most [RenderObject]s:\n\n* Leaf render objects, with no children: The [LeafRenderObjectElement] class\n handles this case.\n\n* A single child: The [SingleChildRenderObjectElement] class handles this\n case.\n\n* A linked list of children: The [MultiChildRenderObjectElement] class\n handles this case.\n\nSometimes, however, a render object's child model is more complicated. Maybe\nit has a two-dimensional array of children. Maybe it constructs children on\ndemand. Maybe it features multiple lists. In such situations, the\ncorresponding [Element] for the [Widget] that configures that [RenderObject]\nwill be a new subclass of [RenderObjectElement].\n\nSuch a subclass is responsible for managing children, specifically the\n[Element] children of this object, and the [RenderObject] children of its\ncorresponding [RenderObject].\n\n### Specializing the getters\n\n[RenderObjectElement] objects spend much of their time acting as\nintermediaries between their [widget] and their [renderObject]. To make this\nmore tractable, most [RenderObjectElement] subclasses override these getters\nso that they return the specific type that the element expects, e.g.:\n\n```dart\nclass FooElement extends RenderObjectElement {\n\n @override\n Foo get widget => super.widget;\n\n @override\n RenderFoo get renderObject => super.renderObject;\n\n // ...\n}\n```\n\n### Slots\n\nEach child [Element] corresponds to a [RenderObject] which should be\nattached to this element's render object as a child.\n\nHowever, the immediate children of the element may not be the ones that\neventually produce the actual [RenderObject] that they correspond to. For\nexample a [StatelessElement] (the element of a [StatelessWidget]) simply\ncorresponds to whatever [RenderObject] its child (the element returned by\nits [StatelessWidget.build] method) corresponds to.\n\nEach child is therefore assigned a _slot_ token. This is an identifier whose\nmeaning is private to this [RenderObjectElement] node. When the descendant\nthat finally produces the [RenderObject] is ready to attach it to this\nnode's render object, it passes that slot token back to this node, and that\nallows this node to cheaply identify where to put the child render object\nrelative to the others in the parent render object.\n\n### Updating children\n\nEarly in the lifecycle of an element, the framework calls the [mount]\nmethod. This method should call [updateChild] for each child, passing in\nthe widget for that child, and the slot for that child, thus obtaining a\nlist of child [Element]s.\n\nSubsequently, the framework will call the [update] method. In this method,\nthe [RenderObjectElement] should call [updateChild] for each child, passing\nin the [Element] that was obtained during [mount] or the last time [update]\nwas run (whichever happened most recently), the new [Widget], and the slot.\nThis provides the object with a new list of [Element] objects.\n\nWhere possible, the [update] method should attempt to map the elements from\nthe last pass to the widgets in the new pass. For example, if one of the\nelements from the last pass was configured with a particular [Key], and one\nof the widgets in this new pass has that same key, they should be paired up,\nand the old element should be updated with the widget (and the slot\ncorresponding to the new widget's new position, also). The [updateChildren]\nmethod may be useful in this regard.\n\n[updateChild] should be called for children in their logical order. The\norder can matter; for example, if two of the children use [PageStorage]'s\n`writeState` feature in their build method (and neither has a [Widget.key]),\nthen the state written by the first will be overwritten by the second.\n\n#### Dynamically determining the children during the build phase\n\nThe child widgets need not necessarily come from this element's widget\nverbatim. They could be generated dynamically from a callback, or generated\nin other more creative ways.\n\n#### Dynamically determining the children during layout\n\nIf the widgets are to be generated at layout time, then generating them when\nthe [update] method won't work: layout of this element's render object\nhasn't started yet at that point. Instead, the [update] method can mark the\nrender object as needing layout (see [RenderObject.markNeedsLayout]), and\nthen the render object's [RenderObject.performLayout] method can call back\nto the element to have it generate the widgets and call [updateChild]\naccordingly.\n\nFor a render object to call an element during layout, it must use\n[RenderObject.invokeLayoutCallback]. For an element to call [updateChild]\noutside of its [update] method, it must use [BuildOwner.buildScope].\n\nThe framework provides many more checks in normal operation than it does\nwhen doing a build during layout. For this reason, creating widgets with\nlayout-time build semantics should be done with great care.\n\n#### Handling errors when building\n\nIf an element calls a builder function to obtain widgets for its children,\nit may find that the build throws an exception. Such exceptions should be\ncaught and reported using [FlutterError.reportError]. If a child is needed\nbut a builder has failed in this way, an instance of [ErrorWidget] can be\nused instead.\n\n### Detaching children\n\nIt is possible, when using [GlobalKey]s, for a child to be proactively\nremoved by another element before this element has been updated.\n(Specifically, this happens when the subtree rooted at a widget with a\nparticular [GlobalKey] is being moved from this element to an element\nprocessed earlier in the build phase.) When this happens, this element's\n[forgetChild] method will be called with a reference to the affected child\nelement.\n\nThe [forgetChild] method of a [RenderObjectElement] subclass must remove the\nchild element from its child list, so that when it next [update]s its\nchildren, the removed child is not considered.\n\nFor performance reasons, if there are many elements, it may be quicker to\ntrack which elements were forgotten by storing them in a [Set], rather than\nproactively mutating the local record of the child list and the identities\nof all the slots. For example, see the implementation of\n[MultiChildRenderObjectElement].\n\n### Maintaining the render object tree\n\nOnce a descendant produces a render object, it will call\n[insertChildRenderObject]. If the descendant's slot changes identity, it\nwill call [moveChildRenderObject]. If a descendant goes away, it will call\n[removeChildRenderObject].\n\nThese three methods should update the render tree accordingly, attaching,\nmoving, and detaching the given child render object from this element's own\nrender object respectively.\n\n### Walking the children\n\nIf a [RenderObjectElement] object has any children [Element]s, it must\nexpose them in its implementation of the [visitChildren] method. This method\nis used by many of the framework's internal mechanisms, and so should be\nfast. It is also used by the test framework and [debugDumpApp].", "detail": "", "kind": 7, "label": "RenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldFeatureController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for controlling a feature of a [Scaffold].\n\nCommonly obtained from [ScaffoldState.showSnackBar] or [ScaffoldState.showBottomSheet].", "detail": "", "kind": 7, "label": "ScaffoldFeatureController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Positioned] which takes a specific\n[Animation] to transition the child's position from a start\nposition to an end position over the lifetime of the animation.\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [PositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "PositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlockSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that drops the semantics of all widget that were painted before it\nin the same semantic container.\n\nThis is useful to hide widgets from accessibility tools that are painted\nbehind a certain widget, e.g. an alert should usually disallow interaction\nwith any widget located \"behind\" the alert (even when they are still\npartially visible). Similarly, an open [Drawer] blocks interactions with\nany widget outside the drawer.\n\nSee also:\n\n * [ExcludeSemantics] which drops all semantics of its descendants.", "detail": "", "kind": 7, "label": "BlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[SliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [SliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children.\n\n\nIf the children have a fixed extent in the main axis, consider using\n[SliverFixedExtentList] rather than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis and is therefore more efficient.\n\n\nSee also:\n\n * [SliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDetector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that detects gestures.\n\nAttempts to recognize gestures that correspond to its non-null callbacks.\n\nIf this widget has a child, it defers to that child for its sizing behavior.\nIf it does not have a child, it grows to fit the parent instead.\n\nBy default a GestureDetector with an invisible child ignores touches;\nthis behavior can be controlled with [behavior].\n\nGestureDetector also listens for accessibility events and maps\nthem to the callbacks. To ignore accessibility events, set\n[excludeFromSemantics] to true.\n\nSee for additional information.\n\nMaterial design applications typically react to touches with ink splash\neffects. The [InkWell] class implements this effect and can be used in place\nof a [GestureDetector] for handling taps.\n\n\nThis example makes a rectangle react to being tapped by setting the\n`_lights` field:\n\n```dart\nGestureDetector(\n onTap: () {\n setState(() { _lights = true; });\n },\n child: Container(\n color: Colors.yellow,\n child: Text('TURN LIGHTS ON'),\n ),\n)\n```\n\n## Debugging\n\nTo see how large the hit test box of a [GestureDetector] is for debugging\npurposes, set [debugPaintPointersEnabled] to true.", "detail": "", "kind": 7, "label": "GestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalizationsDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A factory for a set of localized resources of type `T`, to be loaded by a\n[Localizations] widget.\n\nTypical applications have one [Localizations] widget which is created by the\n[WidgetsApp] and configured with the app's `localizationsDelegates`\nparameter (a list of delegates). The delegate's [type] is used to identify\nthe object created by an individual delegate's [load] method.", "detail": "", "kind": 7, "label": "LocalizationsDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature for a function that's called when the user has dragged a\n[RefreshIndicator] far enough to demonstrate that they want the app to\nrefresh. The returned [Future] must complete when the refresh operation is\nfinished.\n\nUsed by [RefreshIndicator.onRefresh].", "detail": "() → Future", "kind": 7, "label": "RefreshCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProviderStateMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides [Ticker] objects that are configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create an [AnimationController] in a class that uses this mixin, pass\n`vsync: this` to the animation controller constructor whenever you\ncreate a new animation controller.\n\nIf you only have a single [Ticker] (for example only a single\n[AnimationController]) for the lifetime of your [State], then using a\n[SingleTickerProviderStateMixin] is more efficient. This is the common case.", "detail": "", "kind": 7, "label": "TickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for widgets that hook [ParentData] information to children of\n[RenderObjectWidget]s.\n\nThis can be used to provide per-child configuration for\n[RenderObjectWidget]s with more than one child. For example, [Stack] uses\nthe [Positioned] parent data widget to position each child.\n\nA [ParentDataWidget] is specific to a particular kind of [RenderObject], and\nthus also to a particular [RenderObjectWidget] class. That class is `T`, the\n[ParentDataWidget] type argument.\n\n\nThis example shows how you would build a [ParentDataWidget] to configure a\n`FrogJar` widget's children by specifying a [Size] for each one.\n\n```dart\nclass FrogSize extends ParentDataWidget {\n FrogSize({\n Key key,\n @required this.size,\n @required Widget child,\n }) : assert(child != null),\n assert(size != null),\n super(key: key, child: child);\n\n final Size size;\n\n @override\n void applyParentData(RenderObject renderObject) {\n final FrogJarParentData parentData = renderObject.parentData;\n if (parentData.size != size) {\n parentData.size = size;\n final RenderFrogJar targetParent = renderObject.parent;\n targetParent.markNeedsLayout();\n }\n }\n}\n```\n\nSee also:\n\n * [RenderObject], the superclass for layout algorithms.\n * [RenderObject.parentData], the slot that this class configures.\n * [ParentData], the superclass of the data that will be placed in\n [RenderObject.parentData] slots.\n * [RenderObjectWidget], the class for widgets that wrap [RenderObject]s.\n The `T` type parameter for [ParentDataWidget] is a [RenderObjectWidget].\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.", "detail": "", "kind": 7, "label": "ParentDataWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetToRenderBoxAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An adapter for placing a specific [RenderBox] in the widget tree.\n\nA given render object can be placed at most once in the widget tree. This\nwidget enforces that restriction by keying itself using a [GlobalObjectKey]\nfor the given render object.", "detail": "", "kind": 7, "label": "WidgetToRenderBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ValueKey] that defines where [PageStorage] values will be saved.\n\n[Scrollable]s ([ScrollPosition]s really) use [PageStorage] to save their\nscroll offset. Each time a scroll completes, the scrollable's page\nstorage is updated.\n\n[PageStorage] is used to save and restore values that can outlive the widget.\nThe values are stored in a per-route [Map] whose keys are defined by the\n[PageStorageKey]s for the widget and its ancestors. To make it possible\nfor a saved value to be found when a widget is recreated, the key's values\nmust not be objects whose identity will change each time the widget is created.\n\nFor example, to ensure that the scroll offsets for the scrollable within\neach `MyScrollableTabView` below are restored when the [TabBarView]\nis recreated, we've specified [PageStorageKey]s whose values are the\ntabs' string labels.\n\n```dart\nTabBarView(\n children: myTabs.map((Tab tab) {\n MyScrollableTabView(\n key: PageStorageKey(tab.text), // like 'Tab 1'\n tab: tab,\n ),\n }),\n)\n```", "detail": "", "kind": 7, "label": "PageStorageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the color and typography values for a material design theme.\n\nUse this class to configure a [Theme] widget.\n\nTo obtain the current theme, use [Theme.of].", "detail": "", "kind": 7, "label": "ThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SimpleDialogOption", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An option used in a [SimpleDialog].\n\nA simple dialog offers the user a choice between several options. This\nwidget is commonly used to represent each of the options. If the user\nselects this option, the widget will call the [onPressed] callback, which\ntypically uses [Navigator.pop] to close the dialog.\n\nThe padding on a [SimpleDialogOption] is configured to combine with the\ndefault [SimpleDialog.contentPadding] so that each option ends up 8 pixels\nfrom the other vertically, with 20 pixels of spacing between the dialog's\ntitle and the first option, and 24 pixels of spacing between the last option\nand the bottom of the dialog.\n\n\n```dart\nSimpleDialogOption(\n onPressed: () { Navigator.pop(context, Department.treasury); },\n child: const Text('Treasury department'),\n)\n```\n\nSee also:\n\n * [SimpleDialog], for a dialog in which to use this widget.\n * [showDialog], which actually displays the dialog and returns its result.\n * [FlatButton], which are commonly used as actions in other kinds of\n dialogs, such as [AlertDialog]s.\n * ", "detail": "", "kind": 7, "label": "SimpleDialogOption" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelHeaderBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that's called when the header of the\n[ExpansionPanel] needs to rebuild.", "detail": "(BuildContext context, bool isExpanded) → Widget", "kind": 7, "label": "ExpansionPanelHeaderBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DatePickerMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Initial display mode of the date picker dialog.\n\nDate picker UI mode for either showing a list of available years or a\nmonthly calendar initially in the dialog shown by calling [showDatePicker].\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.", "detail": "", "kind": 13, "label": "DatePickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [StatelessWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatelessElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeableMaterialItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base type for [MaterialSlice] and [MaterialGap].\n\nAll [MergeableMaterialItem] objects need a [LocalKey].", "detail": "", "kind": 7, "label": "MergeableMaterialItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenConstructor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a [Tween] factory.\n\nThis is the type of one of the arguments of [TweenVisitor], the signature\nused by [AnimatedWidgetBaseState.forEachTween].", "detail": "(T targetValue) → Tween", "kind": 7, "label": "TweenConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigationToolbar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[NavigationToolbar] is a layout helper to position 3 widgets or groups of\nwidgets along a horizontal axis that's sensible for an application's\nnavigation bar such as in Material Design and in iOS.\n\nThe [leading] and [trailing] widgets occupy the edges of the widget with\nreasonable size constraints while the [middle] widget occupies the remaining\nspace in either a center aligned or start aligned fashion.\n\nEither directly use the themed app bars such as the Material [AppBar] or\nthe iOS [CupertinoNavigationBar] or wrap this widget with more theming\nspecifications for your own custom app bar.", "detail": "", "kind": 7, "label": "NavigationToolbar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines which portion of the content is visible in a scroll view.\n\nThe [pixels] value determines the scroll offset that the scroll view uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThe [ScrollPosition] applies [physics] to scrolling, and stores the\n[minScrollExtent] and [maxScrollExtent].\n\nScrolling is controlled by the current [activity], which is set by\n[beginActivity]. [ScrollPosition] itself does not start any activities.\nInstead, concrete subclasses, such as [ScrollPositionWithSingleContext],\ntypically start activities in response to user input or instructions from a\n[ScrollController].\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\n## Subclassing ScrollPosition\n\nOver time, a [Scrollable] might have many different [ScrollPosition]\nobjects. For example, if [Scrollable.physics] changes type, [Scrollable]\ncreates a new [ScrollPosition] with the new physics. To transfer state from\nthe old instance to the new instance, subclasses implement [absorb]. See\n[absorb] for more details.\n\nSubclasses also need to call [didUpdateScrollDirection] whenever\n[userScrollDirection] changes values.\n\nSee also:\n\n * [Scrollable], which uses a [ScrollPosition] to determine which portion of\n its content to display.\n * [ScrollController], which can be used with [ListView], [GridView] and\n other scrollable widgets to control a [ScrollPosition].\n * [ScrollPositionWithSingleContext], which is the most commonly used\n concrete subclass of [ScrollPosition].\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeMatcher", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This class is a work-around for the \"is\" operator not accepting a variable value as its right operand", "detail": "", "kind": 7, "label": "TypeMatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that rebuilds when the given [Listenable] changes value.\n\n[AnimatedWidget] is most commonly used with [Animation] objects, which are\n[Listenable], but it can be used with any [Listenable], including\n[ChangeNotifier] and [ValueNotifier].\n\n[AnimatedWidget] is most useful for widgets that are otherwise stateless. To\nuse [AnimatedWidget], simply subclass it and implement the build function.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedWidget].\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State with TickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return SpinningContainer(controller: _controller);\n }\n}\n\nclass SpinningContainer extends AnimatedWidget {\n const SpinningContainer({Key key, AnimationController controller})\n : super(key: key, listenable: controller);\n\n Animation get _progress => listenable;\n\n @override\n Widget build(BuildContext context) {\n return Transform.rotate(\n angle: _progress.value * 2.0 * math.pi,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n );\n }\n}\n```\n\nFor more complex case involving additional state, consider using\n[AnimatedBuilder].\n\nSee also:\n\n * [AnimatedBuilder], which is useful for more complex use cases.\n * [Animation], which is a [Listenable] object that can be used for\n [listenable].\n * [ChangeNotifier], which is another [Listenable] object that can be used\n for [listenable].", "detail": "", "kind": 7, "label": "AnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformTarget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that can be targeted by a [CompositedTransformFollower].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\nupdates the [link] object so that any [CompositedTransformFollower] widgets\nthat are subsequently composited in the same frame and were given the same\n[LayerLink] can position themselves at the same screen location.\n\nA single [CompositedTransformTarget] can be followed by multiple\n[CompositedTransformFollower] widgets.\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nany linked [CompositedTransformFollower]s.\n\nSee also:\n\n * [CompositedTransformFollower], the widget that can target this one.\n * [LeaderLayer], the layer that implements this widget's logic.", "detail": "", "kind": 7, "label": "CompositedTransformTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for being notified when a form field changes value.\n\nUsed by [FormField.onSaved].", "detail": "(T newValue) → void", "kind": 7, "label": "FormFieldSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataCell", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The data for a cell of a [DataTable].\n\nOne list of [DataCell] objects must be provided for each [DataRow]\nin the [DataTable], in the [new DataRow] constructor's `cells`\nargument.", "detail": "", "kind": 7, "label": "DataCell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides interactive behavior for [Drawer] widgets.\n\nRarely used directly. Drawer controllers are typically created automatically\nby [Scaffold] widgets.\n\nThe draw controller provides the ability to open and close a drawer, either\nvia an animation or via user interaction. When closed, the drawer collapses\nto a translucent gesture detector that can be used to listen for edge\nswipes.\n\nSee also:\n\n * [Drawer], a container with the default width of a drawer.\n * [Scaffold.drawer], the [Scaffold] slot for showing a drawer.", "detail": "", "kind": 7, "label": "DrawerController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.pageRouteBuilder].\n\nCreates a [PageRoute] using the given [RouteSettings] and [WidgetBuilder].", "detail": "(RouteSettings settings, WidgetBuilder builder) → PageRoute", "kind": 7, "label": "PageRouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderComponentShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for slider thumb, thumb overlay, and value indicator shapes.\n\nCreate a subclass of this if you would like a custom shape.\n\nAll shapes are painted to the same canvas and ordering is important.\nThe overlay is painted first, then the value indicator, then the thumb.\n\nThe thumb painting can be skipped by specifying [noThumb] for\n[SliderThemeData.thumbShape].\n\nThe overlay painting can be skipped by specifying [noOverlay] for\n[SliderThemeData.overlayShape].\n\nSee also:\n\n * [RoundSliderThumbShape], which is the the default thumb shape.\n * [RoundSliderOverlayShape], which is the the default overlay shape.\n * [PaddleSliderValueIndicatorShape], which is the the default value\n indicator shape.", "detail": "", "kind": 7, "label": "SliderComponentShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverToBoxAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that contains a single box widget.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverToBoxAdapter]\nis a basic sliver that creates a bridge back to one of the usual box-based\nwidgets.\n\nRather than using multiple [SliverToBoxAdapter] widgets to display multiple\nbox widgets in a [CustomScrollView], consider using [SliverList],\n[SliverFixedExtentList], [SliverPrototypeExtentList], or [SliverGrid],\nwhich are more efficient because they instantiate only those children that\nare actually visible through the scroll view's viewport.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.\n * [SliverList], which displays multiple box widgets in a linear array.\n * [SliverFixedExtentList], which displays multiple box widgets with the\n same main-axis extent in a linear array.\n * [SliverPrototypeExtentList], which displays multiple box widgets with the\n same main-axis extent as a prototype item, in a linear array.\n * [SliverGrid], which displays multiple box widgets in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GenerateAppTitle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.onGenerateTitle].\n\nUsed to generate a value for the app's [Title.title], which the device uses\nto identify the app for the user. The `context` includes the [WidgetsApp]'s\n[Localizations] widget so that this method can be used to produce a\nlocalized title.\n\nThis function must not return null.", "detail": "(BuildContext context) → String", "kind": 7, "label": "GenerateAppTitle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An end-aligned row of buttons.\n\nPlaces the buttons horizontally according to the padding in the current\n[ButtonTheme]. The children are laid out in a [Row] with\n[MainAxisAlignment.end]. When the [Directionality] is [TextDirection.ltr],\nthe button bar's children are right justified and the last child becomes\nthe rightmost child. When the [Directionality] [TextDirection.rtl] the\nchildren are left justified and the last child becomes the leftmost child.\n\nUsed by [Dialog] to arrange the actions at the bottom of the dialog.\n\nSee also:\n\n * [RaisedButton], a kind of button.\n * [FlatButton], another kind of button.\n * [Card], at the bottom of which it is common to place a [ButtonBar].\n * [Dialog], which uses a [ButtonBar] for its actions.\n * [ButtonTheme], which configures the [ButtonBar].", "detail": "", "kind": 7, "label": "ButtonBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChipThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the color, shape, and text styles for a material design chip theme.\n\nUse this class to configure a [ChipTheme] widget, or to set the\n[ThemeData.chipTheme] for a [Theme] widget.\n\nTo obtain the current ambient chip theme, use [ChipTheme.of].\n\nThe parts of a chip are:\n\n * The \"avatar\", which is a widget that appears at the beginning of the\n chip. This is typically a [CircleAvatar] widget.\n * The \"label\", which is the widget displayed in the center of the chip.\n Typically this is a [Text] widget.\n * The \"delete icon\", which is a widget that appears at the end of the chip.\n * The chip is disabled when it is not accepting user input. Only some chips\n have a disabled state: [InputChip], [ChoiceChip], and [FilterChip].\n\nThe simplest way to create a ChipThemeData is to use [copyWith] on the one\nyou get from [ChipTheme.of], or create an entirely new one with\n[ChipThemeData..fromDefaults].\n\n\n```dart\nclass CarColor extends StatefulWidget {\n @override\n State createState() => _CarColorState();\n}\n\nclass _CarColorState extends State {\n Color _color = Colors.red;\n\n @override\n Widget build(BuildContext context) {\n return ChipTheme(\n data: ChipTheme.of(context).copyWith(backgroundColor: Colors.lightBlue),\n child: ChoiceChip(\n label: Text('Light Blue'),\n onSelected: (bool value) {\n setState(() {\n _color = value ? Colors.lightBlue : Colors.red;\n });\n },\n selected: _color == Colors.lightBlue,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of entities.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * [ChipTheme] widget, which can override the chip theme of its\n children.\n * [Theme] widget, which performs a similar function to [ChipTheme],\n but for overall themes.\n * [ThemeData], which has a default [ChipThemeData].", "detail": "", "kind": 7, "label": "ChipThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextCapitalization", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures how the platform keyboard will select an uppercase or\nlowercase keyboard.\n\nOnly supports text keyboards, other keyboard types will ignore this\nconfiguration. Capitalization is locale-aware.", "detail": "", "kind": 13, "label": "TextCapitalization" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlayChanged", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for reporting changes to the selection component of a\n[TextEditingValue] for the purposes of a [TextSelectionOverlay]. The\n[caretRect] argument gives the location of the caret in the coordinate space\nof the [RenderBox] given by the [TextSelectionOverlay.renderObject].\n\nUsed by [TextSelectionOverlay.onSelectionOverlayChanged].", "detail": "(TextEditingValue value, Rect caretRect) → void", "kind": 7, "label": "TextSelectionOverlayChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of the [LayoutBuilder] builder function.", "detail": "(BuildContext context, BoxConstraints constraints) → Widget", "kind": 7, "label": "LayoutWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImagePhase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The phases a [FadeInImage] goes through.", "detail": "", "kind": 13, "label": "FadeInImagePhase" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SlideTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the position of a widget relative to its normal position.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nBy default, the offsets are applied in the coordinate system of the canvas\n(so positive x offsets move the child towards the right). If a\n[textDirection] is provided, then the offsets are applied in the reading\ndirection, so in right-to-left text, positive x offsets move towards the\nleft, and in left-to-right text, positive x offsets move towards the right.\n\nHere's an illustration of the [SlideTransition] widget, with it's [position]\nanimated by a [CurvedAnimation] set to [Curves.elasticIn]:\n\nSee also:\n\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SlideTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyleTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [TextStyle]s.\n\nThis class specializes the interpolation of [Tween] to use\n[TextStyle.lerp].\n\nThis will not work well if the styles don't set the same fields.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "TextStyleTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollbar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design scrollbar.\n\nA scrollbar indicates which portion of a [Scrollable] widget is actually\nvisible.\n\nDynamically changes to an iOS style scrollbar that looks like\n[CupertinoScrollbar] on the iOS platform.\n\nTo add a scrollbar to a [ScrollView], simply wrap the scroll view widget in\na [Scrollbar] widget.\n\nSee also:\n\n * [ListView], which display a linear, scrollable list of children.\n * [GridView], which display a 2 dimensional, scrollable array of children.", "detail": "", "kind": 7, "label": "Scrollbar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTabController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [TabController] for descendant widgets that don't specify one\nexplicitly.\n\n[DefaultTabController] is an inherited widget that is used to share a\n[TabController] with a [TabBar] or a [TabBarView]. It's used when sharing an\nexplicitly created [TabController] isn't convenient because the tab bar\nwidgets are created by a stateless parent widget or by different parent\nwidgets.\n\n```dart\nclass MyDemo extends StatelessWidget {\n final List myTabs = [\n Tab(text: 'LEFT'),\n Tab(text: 'RIGHT'),\n ];\n\n @override\n Widget build(BuildContext context) {\n return DefaultTabController(\n length: myTabs.length,\n child: Scaffold(\n appBar: AppBar(\n bottom: TabBar(\n tabs: myTabs,\n ),\n ),\n body: TabBarView(\n children: myTabs.map((Tab tab) {\n return Center(child: Text(tab.text));\n }).toList(),\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DefaultTabController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildLoopingListDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies infinite children for [ListWheelScrollView] by\nlooping an explicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildLoopingListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates its own size and clips and aligns its child.\n\n[SizeTransition] acts as a [ClipRect] that animates either its width or its\nheight, depending upon the value of [axis]. The alignment of the child along\nthe [axis] is specified by the [axisAlignment].\n\nLike most widgets, [SizeTransition] will conform to the constraints it is\ngiven, so be sure to put it in a context where it can change size. For\ninstance, if you place it into a [Container] with a fixed size, then the\n[SizeTransition] will not be able to change size, and will appear to do\nnothing.\n\nHere's an illustration of the [SizeTransition] widget, with it's [sizeFactor]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [AnimatedCrossFade], for a widget that automatically animates between\n the sizes of two children, fading between them.\n * [ScaleTransition], a widget that scales the size of the child instead of\n clipping it.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SizeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IdleScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scroll activity that does nothing.\n\nWhen a scroll view is not scrolling, it is performing the idle activity.\n\nIf the [Scrollable] changes dimensions, this activity triggers a ballistic\nactivity to restore the view.", "detail": "", "kind": 7, "label": "IdleScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for building children of a [DragTarget].\n\nThe `candidateData` argument contains the list of drag data that is hovering\nover this [DragTarget] and that has passed [DragTarget.onWillAccept]. The\n`rejectedData` argument contains the list of drag data that is hovering over\nthis [DragTarget] and that will not be accepted by the [DragTarget].\n\nUsed by [DragTarget.builder].", "detail": "(BuildContext context, List candidateData, List rejectedData) → Widget", "kind": 7, "label": "DragTargetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticIndexCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A callback which produces a semantic index given a widget and the local index.\n\nReturn a null value to prevent a widget from receiving an index.\n\nA semantic index is used to tag child semantic nodes for accessibility\nannouncements in scroll view.\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.\n * [SliverChildBuilderDelegate], for an explanation of how this is used to\n generate indexes.", "detail": "(Widget widget, int localIndex) → int", "kind": 7, "label": "SemanticIndexCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotificationPredicate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A predicate for [ScrollNotification], used to customize widgets that\nlisten to notifications from their children.", "detail": "(ScrollNotification notification) → bool", "kind": 7, "label": "ScrollNotificationPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated widget that automatically transitions its size over a given\nduration whenever the given child's size changes.", "detail": "", "kind": 7, "label": "AnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tab", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design [TabBar] tab. If both [icon] and [text] are\nprovided, the text is displayed below the icon.\n\nSee also:\n\n * [TabBar], which displays a row of tabs.\n * [TabBarView], which displays a widget for the currently selected tab.\n * [TabController], which coordinates tab selection between a [TabBar] and a [TabBarView].\n * ", "detail": "", "kind": 7, "label": "Tab" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataRow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Row configuration and cell data for a [DataTable].\n\nOne row configuration must be provided for each row to\ndisplay in the table. The list of [DataRow] objects is passed\nas the `rows` argument to the [new DataTable] constructor.\n\nThe data for this row of the table is provided in the [cells]\nproperty of the [DataRow] object.", "detail": "", "kind": 7, "label": "DataRow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IgnorePointer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is invisible during hit testing.\n\nWhen [ignoring] is true, this widget (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because it returns\nfalse from [RenderBox.hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [AbsorbPointer], which also prevents its children from receiving pointer\n events but is itself visible to hit testing.", "detail": "", "kind": 7, "label": "IgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChoiceChip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design choice chip.\n\n[ChoiceChip]s represent a single choice from a set. Choice chips contain\nrelated descriptive text or categories.\n\nRequires one of its ancestors to be a [Material] widget. The [selected] and\n[label] arguments must not be null.\n\n\n```dart\nclass MyThreeOptions extends StatefulWidget {\n @override\n _MyThreeOptionsState createState() => _MyThreeOptionsState();\n}\n\nclass _MyThreeOptionsState extends State {\n int _value = 1;\n\n @override\n Widget build(BuildContext context) {\n return Wrap(\n children: List.generate(\n 3,\n (int index) {\n return ChoiceChip(\n label: Text('Item $index'),\n selected: _value == index,\n onSelected: (bool selected) {\n setState(() {\n _value = selected ? index : null;\n });\n },\n );\n },\n ).toList(),\n );\n }\n}\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * ", "detail": "", "kind": 7, "label": "ChoiceChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteObserver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Navigator] observer that notifies [RouteAware]s of changes to the\nstate of their [Route].\n\n[RouteObserver] informs subscribers whenever a route of type `R` is pushed\non top of their own route of type `R` or popped from it. This is for example\nuseful to keep track of page transitions, e.g. a `RouteObserver`\nwill inform subscribed [RouteAware]s whenever the user navigates away from\nthe current page route to another page route.\n\nTo be informed about route changes of any type, consider instantiating a\n`RouteObserver`.\n\n## Type arguments\n\nWhen using more aggressive\n[lints](http://dart-lang.github.io/linter/lints/), in particular lints such\nas `always_specify_types`, the Dart analyzer will require that certain types\nbe given with their type arguments. Since the [Route] class and its\nsubclasses have a type argument, this includes the arguments passed to this\nclass. Consider using `dynamic` to specify the entire class of routes rather\nthan only specific subtypes. For example, to watch for all [PageRoute]\nvariants, the `RouteObserver>` type may be used.\n\n\nTo make a [StatefulWidget] aware of its current [Route] state, implement\n[RouteAware] in its [State] and subscribe it to a [RouteObserver]:\n\n```dart\n// Register the RouteObserver as a navigation observer.\nfinal RouteObserver routeObserver = RouteObserver();\nvoid main() {\n runApp(MaterialApp(\n home: Container(),\n navigatorObservers: [routeObserver],\n ));\n}\n\nclass RouteAwareWidget extends StatefulWidget {\n State createState() => RouteAwareWidgetState();\n}\n\n// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.\nclass RouteAwareWidgetState extends State with RouteAware {\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n routeObserver.subscribe(this, ModalRoute.of(context));\n }\n\n @override\n void dispose() {\n routeObserver.unsubscribe(this);\n super.dispose();\n }\n\n @override\n void didPush() {\n // Route was pushed onto navigator and is now topmost route.\n }\n\n @override\n void didPopNext() {\n // Covering route was popped off the navigator.\n }\n\n @override\n Widget build(BuildContext context) => Container();\n\n}\n```", "detail": "", "kind": 7, "label": "RouteObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Future].\n\nThe [future] must have been obtained earlier, e.g. during [State.initState],\n[State.didUpdateConfig], or [State.didChangeDependencies]. It must not be\ncreated during the [State.build] or [StatelessWidget.build] method call when\nconstructing the [FutureBuilder]. If the [future] is created at the same\ntime as the [FutureBuilder], then every time the [FutureBuilder]'s parent is\nrebuilt, the asynchronous task will be restarted.\n\nA general guideline is to assume that every `build` method could get called\nevery frame, and to treat omitted calls as an optimization.\n\n\n## Timing\n\nWidget rebuilding is scheduled by the completion of the future, using\n[State.setState], but is otherwise decoupled from the timing of the future.\nThe [builder] callback is called at the discretion of the Flutter pipeline, and\nwill thus receive a timing-dependent sub-sequence of the snapshots that\nrepresent the interaction with the future.\n\nA side-effect of this is that providing a new but already-completed future\nto a [FutureBuilder] will result in a single frame in the\n[ConnectionState.waiting] state. This is because there is no way to\nsynchronously determine that a [Future] has already completed.\n\n## Builder contract\n\nFor a future that completes successfully with data, assuming [initialData]\nis null, the [builder] will be called with either both or only the latter of\nthe following snapshots:\n\n* `new AsyncSnapshot.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot.withData(ConnectionState.done, 'some data')`\n\nIf that same future instead completed with an error, the [builder] would be\ncalled with either both or only the latter of:\n\n* `new AsyncSnapshot.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot.withError(ConnectionState.done, 'some error')`\n\nThe initial snapshot data can be controlled by specifying [initialData]. You\nwould use this facility to ensure that if the [builder] is invoked before\nthe future completes, the snapshot carries data of your choice rather than\nthe default null value.\n\nThe data and error fields of the snapshot change only as the connection\nstate field transitions from `waiting` to `done`, and they will be retained\nwhen changing the [FutureBuilder] configuration to another future. If the\nold future has already completed successfully with data as above, changing\nconfiguration to a new future results in snapshot pairs of the form:\n\n* `new AsyncSnapshot.withData(ConnectionState.none, 'data of first future')`\n* `new AsyncSnapshot.withData(ConnectionState.waiting, 'data of second future')`\n\nIn general, the latter will be produced only when the new future is\nnon-null, and the former only when the old future is non-null.\n\nA [FutureBuilder] behaves identically to a [StreamBuilder] configured with\n`future?.asStream()`, except that snapshots with `ConnectionState.active`\nmay appear for the latter, depending on how the stream is implemented.\n\n\nThis sample shows a [FutureBuilder] configuring a text label to show the\nstate of an asynchronous calculation returning a string. Assume the\n`_calculation` field is set by pressing a button elsewhere in the UI.\n\n```dart\nFutureBuilder(\n future: _calculation, // a previously-obtained Future or null\n builder: (BuildContext context, AsyncSnapshot snapshot) {\n switch (snapshot.connectionState) {\n case ConnectionState.none:\n return Text('Press button to start.');\n case ConnectionState.active:\n case ConnectionState.waiting:\n return Text('Awaiting result...');\n case ConnectionState.done:\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n return Text('Result: ${snapshot.data}');\n }\n return null; // unreachable\n },\n)\n```", "detail": "", "kind": 7, "label": "FutureBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design icon button.\n\nAn icon button is a picture printed on a [Material] widget that reacts to\ntouches by filling with color (ink).\n\nIcon buttons are commonly used in the [AppBar.actions] field, but they can\nbe used in many other places as well.\n\nIf the [onPressed] callback is null, then the button will be disabled and\nwill not react to touch.\n\nRequires one of its ancestors to be a [Material] widget.\n\nThe hit region of an icon button will, if possible, be at least 48.0 pixels\nin size, regardless of the actual [iconSize], to satisfy the [touch target\nsize](https://material.io/guidelines/layout/metrics-keylines.html#metrics-keylines-touch-target-size)\nrequirements in the Material Design specification. The [alignment] controls\nhow the icon itself is positioned within the hit region.\n\n\nThis sample shows an `IconButton` that uses the Material icon \"volume_up\" to\nincrease the volume.\n\n```dart\ndouble _volume = 0.0;\n```\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n body: Center(\n child: Column(\n mainAxisSize: MainAxisSize.min,\n children: [\n IconButton(\n icon: Icon(Icons.volume_up),\n tooltip: 'Increase volume by 10',\n onPressed: () {\n setState(() {\n _volume += 10;\n });\n },\n ),\n Text('Volume : $_volume')\n ],\n ),\n ),\n );\n}\n```\n\n### Adding a filled background\n\nIcon buttons don't support specifying a background color or other\nbackground decoration because typically the icon is just displayed\non top of the parent widget's background. Icon buttons that appear\nin [AppBar.actions] are an example of this.\n\nIt's easy enough to create an icon button with a filled background\nusing the [Ink] widget. The [Ink] widget renders a decoration on\nthe underlying [Material] along with the splash and highlight\n[InkResponse] contributed by descendant widgets.\n\n\nIn this sample the icon button's background color is defined with an [Ink]\nwidget whose child is an [IconButton]. The icon button's filled background\nis a light shade of blue, it's a filled circle, and it's as big as the\nbutton is.\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Container(\n child: Ink(\n decoration: ShapeDecoration(\n color: Colors.lightBlue,\n shape: CircleBorder(),\n ),\n child: IconButton(\n icon: Icon(Icons.android),\n color: Colors.white,\n onPressed: () {\n print(\"filled background\");\n },\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Icons], a library of predefined icons.\n * [BackButton], an icon button for a \"back\" affordance which adapts to the\n current platform's conventions.\n * [CloseButton], an icon button for closing pages.\n * [AppBar], to show a toolbar at the top of an application.\n * [RaisedButton] and [FlatButton], for buttons with text in them.\n * [InkResponse] and [InkWell], for the ink splash effect itself.", "detail": "", "kind": 7, "label": "IconButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimeOfDayFormat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines how the time picker invoked using [showTimePicker] formats and\nlays out the time controls.\n\nThe time picker provides layout configurations optimized for each of the\nenum values.", "detail": "", "kind": 13, "label": "TimeOfDayFormat" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of an [Align] that animates its [Align.alignment] property.\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "AlignTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherLayoutBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for builders used to generate custom layouts for\n[AnimatedSwitcher].\n\nThe builder should return a widget which contains the given children, laid\nout as desired. It must not return null. The builder should be able to\nhandle an empty list of `previousChildren`, or a null `currentChild`.\n\nThe `previousChildren` list is an unmodifiable list, sorted with the oldest\nat the beginning and the newest at the end. It does not include the\n`currentChild`.", "detail": "(Widget currentChild, List previousChildren) → Widget", "kind": 7, "label": "AnimatedSwitcherLayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositionedDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [PositionedDirectional] which automatically transitions\nthe child's position over a given duration whenever the given position\nchanges.\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositionedDirectional] will trigger\na relayout as well. ([SlideTransition] is also text-direction-aware.)\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositioned], which specifies the widget's position visually (the\n same as this widget, but for animating [Positioned]).", "detail": "", "kind": 7, "label": "AnimatedPositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadioListTile", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] with a [Radio]. In other words, a radio button with a label.\n\nThe entire list tile is interactive: tapping anywhere in the tile selects\nthe radio button.\n\nThe [value], [groupValue], [onChanged], and [activeColor] properties of this\nwidget are identical to the similarly-named properties on the [Radio]\nwidget. The type parameter `T` serves the same purpose as that of the\n[Radio] class' type parameter.\n\nThe [title], [subtitle], [isThreeLine], and [dense] properties are like\nthose of the same name on [ListTile].\n\nThe [selected] property on this widget is similar to the [ListTile.selected]\nproperty, but the color used is that described by [activeColor], if any,\ndefaulting to the accent color of the current [Theme]. No effort is made to\ncoordinate the [selected] state and the [checked] state; to have the list\ntile appear selected when the radio button is the selected radio button, set\n[selected] to true when [value] matches [groupValue].\n\nThe radio button is shown on the left by default in left-to-right languages\n(i.e. the leading edge). This can be changed using [controlAffinity]. The\n[secondary] widget is placed on the opposite side. This maps to the\n[ListTile.leading] and [ListTile.trailing] properties of [ListTile].\n\nTo show the [RadioListTile] as disabled, pass null as the [onChanged]\ncallback.\n\n\nThis widget shows a pair of radio buttons that control the `_character`\nfield. The field is of the type `SingingCharacter`, an enum.\n\n```dart\n// At the top level:\nenum SingingCharacter { lafayette, jefferson }\n\n// In the State of a stateful widget:\nSingingCharacter _character = SingingCharacter.lafayette;\n\n// In the build function of that State:\nColumn(\n children: [\n RadioListTile(\n title: const Text('Lafayette'),\n value: SingingCharacter.lafayette,\n groupValue: _character,\n onChanged: (SingingCharacter value) { setState(() { _character = value; }); },\n ),\n RadioListTile(\n title: const Text('Thomas Jefferson'),\n value: SingingCharacter.jefferson,\n groupValue: _character,\n onChanged: (SingingCharacter value) { setState(() { _character = value; }); },\n ),\n ],\n)\n```\n\nSee also:\n\n * [ListTileTheme], which can be used to affect the style of list tiles,\n including radio list tiles.\n * [CheckboxListTile], a similar widget for checkboxes.\n * [SwitchListTile], a similar widget for switches.\n * [ListTile] and [Radio], the widgets from which this widget is made.", "detail": "", "kind": 7, "label": "RadioListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCell", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls how a child of a [Table] is aligned.\n\nA [TableCell] widget must be a descendant of a [Table], and the path from\nthe [TableCell] widget to its enclosing [Table] must contain only\n[TableRow]s, [StatelessWidget]s, or [StatefulWidget]s (not\nother kinds of widgets, like [RenderObjectWidget]s).", "detail": "", "kind": 7, "label": "TableCell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteAware", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for objects that are aware of their current [Route].\n\nThis is used with [RouteObserver] to make a widget aware of changes to the\n[Navigator]'s session history.", "detail": "", "kind": 7, "label": "RouteAware" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [LeafRenderObjectWidget] as its configuration.", "detail": "", "kind": 7, "label": "LeafRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [Scaffold].\n\nCan display [SnackBar]s and [BottomSheet]s. Retrieve a [ScaffoldState] from\nthe current [BuildContext] using [Scaffold.of].", "detail": "", "kind": 7, "label": "ScaffoldState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorObserver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for observing the behavior of a [Navigator].", "detail": "", "kind": 7, "label": "NavigatorObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldPrelayoutGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The geometry of the [Scaffold] after all its contents have been laid out\nexcept the [FloatingActionButton].\n\nThe [Scaffold] passes this pre-layout geometry to its\n[FloatingActionButtonLocation], which produces an [Offset] that the\n[Scaffold] uses to position the [FloatingActionButton].\n\nFor a description of the [Scaffold]'s geometry after it has\nfinished laying out, see the [ScaffoldGeometry].", "detail": "", "kind": 7, "label": "ScaffoldPrelayoutGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBarTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a theme for [TabBar] widgets.\n\nA tab bar theme describes the color of the tab label and the size/shape of\nthe [TabBar.indicator].\n\nDescendant widgets obtain the current theme's [TabBarTheme] object using\n`TabBarTheme.of(context)`. Instances of [TabBarTheme] can be customized with\n[TabBarTheme.copyWith].\n\nSee also:\n\n * [TabBar], a widget that displays a horizontal row of tabs.\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "TabBarTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [State.setState] functions.", "detail": "(VoidCallback fn) → void", "kind": 7, "label": "StateSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that merges the semantics of its descendants.\n\nCauses all the semantics of the subtree rooted at this node to be\nmerged into one node in the semantics tree. For example, if you\nhave a widget with a Text node next to a checkbox widget, this\ncould be used to merge the label from the Text node with the\n\"checked\" semantic state of the checkbox into a single node that\nhad both the label and the checked state. Otherwise, the label\nwould be presented as a separate feature than the checkbox, and\nthe user would not be able to be sure that they were related.\n\nBe aware that if two nodes in the subtree have conflicting\nsemantics, the result may be nonsensical. For example, a subtree\nwith a checked checkbox and an unchecked checkbox will be\npresented as checked. All the labels will be merged into a single\nstring (with newlines separating each label from the other). If\nmultiple nodes in the merged subtree can handle semantic gestures,\nthe first one in tree order will be the one to receive the\ncallbacks.", "detail": "", "kind": 7, "label": "MergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomSheet", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design bottom sheet.\n\nThere are two kinds of bottom sheets in material design:\n\n * _Persistent_. A persistent bottom sheet shows information that\n supplements the primary content of the app. A persistent bottom sheet\n remains visible even when the user interacts with other parts of the app.\n Persistent bottom sheets can be created and displayed with the\n [ScaffoldState.showBottomSheet] function or by specifying the\n [Scaffold.bottomSheet] constructor parameter.\n\n * _Modal_. A modal bottom sheet is an alternative to a menu or a dialog and\n prevents the user from interacting with the rest of the app. Modal bottom\n sheets can be created and displayed with the [showModalBottomSheet]\n function.\n\nThe [BottomSheet] widget itself is rarely used directly. Instead, prefer to\ncreate a persistent bottom sheet with [ScaffoldState.showBottomSheet] or\n[Scaffold.bottomSheet], and a modal bottom sheet with [showModalBottomSheet].\n\nSee also:\n\n * [showBottomSheet] and [ScaffoldState.showBottomSheet], for showing\n non-modal \"persistent\" bottom sheets.\n * [showModalBottomSheet], which can be used to display a modal bottom\n sheet.\n * ", "detail": "", "kind": 7, "label": "BottomSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that automatically dispatches a [SizeChangedLayoutNotification]\nwhen the layout dimensions of its child change.\n\nThe notification is not sent for the initial layout (since the size doesn't\nchange in that case, it's just established).\n\nTo listen for the notification dispatched by this widget, use a\n[NotificationListener].\n\nThe [Material] class listens for [LayoutChangedNotification]s, including\n[SizeChangedLayoutNotification]s, to repaint [InkResponse] and [InkWell] ink\neffects. When a widget is likely to change size, wrapping it in a\n[SizeChangedLayoutNotifier] will cause the ink effects to correctly repaint\nwhen the child changes size.\n\nSee also:\n\n * [Notification], the base class for notifications that bubble through the\n widget tree.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Notification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that can bubble up the widget tree.\n\nYou can determine the type of a notification using the `is` operator to\ncheck the [runtimeType] of the notification.\n\nTo listen for notifications in a subtree, use a [NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].", "detail": "", "kind": 7, "label": "Notification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for entries in a material design popup menu.\n\nThe popup menu widget uses this interface to interact with the menu items.\nTo show a popup menu, use the [showMenu] function. To create a button that\nshows a popup menu, consider using [PopupMenuButton].\n\nThe type `T` is the type of the value(s) the entry represents. All the\nentries in a given menu must represent values with consistent types.\n\nA [PopupMenuEntry] may represent multiple values, for example a row with\nseveral icons, or a single entry, for example a menu item with an icon (see\n[PopupMenuItem]), or no value at all (for example, [PopupMenuDivider]).\n\nSee also:\n\n * [PopupMenuItem], a popup menu entry for a single value.\n * [PopupMenuDivider], a popup menu entry that is just a horizontal line.\n * [CheckedPopupMenuItem], a popup menu item with a checkmark.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "PopupMenuEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBindingObserver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for classes that register with the Widgets layer binding.\n\nWhen used as a mixin, provides no-op method implementations.\n\nSee [WidgetsBinding.addObserver] and [WidgetsBinding.removeObserver].\n\nThis class can be extended directly, to get default behaviors for all of the\nhandlers, or can used with the `implements` keyword, in which case all the\nhandlers must be implemented (and the analyzer will list those that have\nbeen omitted).\n\n\nThis [StatefulWidget] implements the parts of the [State] and\n[WidgetsBindingObserver] protocols necessary to react to application\nlifecycle messages. See [didChangeAppLifecycleState].\n\n```dart\nclass AppLifecycleReactor extends StatefulWidget {\n const AppLifecycleReactor({ Key key }) : super(key: key);\n\n @override\n _AppLifecycleReactorState createState() => _AppLifecycleReactorState();\n}\n\nclass _AppLifecycleReactorState extends State with WidgetsBindingObserver {\n @override\n void initState() {\n super.initState();\n WidgetsBinding.instance.addObserver(this);\n }\n\n @override\n void dispose() {\n WidgetsBinding.instance.removeObserver(this);\n super.dispose();\n }\n\n AppLifecycleState _notification;\n\n @override\n void didChangeAppLifecycleState(AppLifecycleState state) {\n setState(() { _notification = state; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Text('Last notification: $_notification');\n }\n}\n```\n\nTo respond to other notifications, replace the [didChangeAppLifecycleState]\nmethod above with other methods from this class.", "detail": "", "kind": 7, "label": "WidgetsBindingObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material expansion panel. It has a header and a body and can be either\nexpanded or collapsed. The body of the panel is only visible when it is\nexpanded.\n\nExpansion panels are only intended to be used as children for\n[ExpansionPanelList].\n\nSee [ExpansionPanelList] for a sample implementation.\n\nSee also:\n\n * [ExpansionPanelList]\n * ", "detail": "", "kind": 7, "label": "ExpansionPanel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTileTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An inherited widget that defines color and style parameters for [ListTile]s\nin this widget's subtree.\n\nValues specified here are used for [ListTile] properties that are not given\nan explicit non-null value.\n\nThe [Drawer] widget specifies a tile theme for its children which sets\n[style] to [ListTileStyle.drawer].", "detail": "", "kind": 7, "label": "ListTileTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the localized resource values used by the Material widgets.\n\nSee also:\n\n * [DefaultMaterialLocalizations], the default, English-only, implementation\n of this interface.\n * [GlobalMaterialLocalizations], which provides material localizations for\n many languages.", "detail": "", "kind": 7, "label": "MaterialLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuCanceled", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback invoked when a [PopupMenuButton] is dismissed\nwithout selecting an item.\n\nUsed by [PopupMenuButton.onCanceled].", "detail": "() → void", "kind": 7, "label": "PopupMenuCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls how [Scrollable] widgets behave in a subtree.\n\nThe scroll configuration determines the [ScrollPhysics] and viewport\ndecorations used by descendants of [child].", "detail": "", "kind": 7, "label": "ScrollConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interactive button within either material's [BottomNavigationBar]\nor the iOS themed [CupertinoTabBar] with an icon and title.\n\nThis class is rarely used in isolation. It is typically embedded in one of\nthe bottom navigation widgets above.\n\nSee also:\n\n * [BottomNavigationBar]\n * \n * [CupertinoTabBar]\n * ", "detail": "", "kind": 7, "label": "BottomNavigationBarItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that enables inspecting the child widget's structure.\n\nSelect a location on your device or emulator and view what widgets and\nrender object that best matches the location. An outline of the selected\nwidget and terse summary information is shown on device with detailed\ninformation is shown in the observatory or in IntelliJ when using the\nFlutter Plugin.\n\nThe inspector has a select mode and a view mode.\n\nIn the select mode, tapping the device selects the widget that best matches\nthe location of the touch and switches to view mode. Dragging a finger on\nthe device selects the widget under the drag location but does not switch\nmodes. Touching the very edge of the bounding box of a widget triggers\nselecting the widget even if another widget that also overlaps that\nlocation would otherwise have priority.\n\nIn the view mode, the previously selected widget is outlined, however,\ntouching the device has the same effect it would have if the inspector\nwasn't present. This allows interacting with the application and viewing how\nthe selected widget changes position. Clicking on the select icon in the\nbottom left corner of the application switches back to select mode.", "detail": "", "kind": 7, "label": "WidgetInspector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using a rounded rectangle.\n\nBy default, [ClipRRect] uses its own bounds as the base rectangle for the\nclip, but the size and location of the clip can be customized using a custom\n[clipper].\n\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Hero", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that marks its child as being a candidate for\n[hero animations](https://flutter.dev/docs/development/ui/animations/hero-animations).\n\nWhen a [PageRoute] is pushed or popped with the [Navigator], the entire\nscreen's content is replaced. An old route disappears and a new route\nappears. If there's a common visual feature on both routes then it can\nbe helpful for orienting the user for the feature to physically move from\none page to the other during the routes' transition. Such an animation\nis called a *hero animation*. The hero widgets \"fly\" in the Navigator's\noverlay during the transition and while they're in-flight they're, by\ndefault, not shown in their original locations in the old and new routes.\n\nTo label a widget as such a feature, wrap it in a [Hero] widget. When\nnavigation happens, the [Hero] widgets on each route are identified\nby the [HeroController]. For each pair of [Hero] widgets that have the\nsame tag, a hero animation is triggered.\n\nIf a [Hero] is already in flight when navigation occurs, its\nflight animation will be redirected to its new destination. The\nwidget shown in-flight during the transition is, by default, the\ndestination route's [Hero]'s child.\n\nFor a Hero animation to trigger, the Hero has to exist on the very first\nframe of the new page's animation.\n\nRoutes must not contain more than one [Hero] for each [tag].\n\n\n## Discussion\n\nHeroes and the [Navigator]'s [Overlay] [Stack] must be axis-aligned for\nall this to work. The top left and bottom right coordinates of each animated\nHero will be converted to global coordinates and then from there converted\nto that [Stack]'s coordinate space, and the entire Hero subtree will, for\nthe duration of the animation, be lifted out of its original place, and\npositioned on that stack. If the [Hero] isn't axis aligned, this is going to\nfail in a rather ugly fashion. Don't rotate your heroes!\n\nTo make the animations look good, it's critical that the widget tree for the\nhero in both locations be essentially identical. The widget of the *target*\nis, by default, used to do the transition: when going from route A to route\nB, route B's hero's widget is placed over route A's hero's widget. If a\n[flightShuttleBuilder] is supplied, its output widget is shown during the\nflight transition instead.\n\nBy default, both route A and route B's heroes are hidden while the\ntransitioning widget is animating in-flight above the 2 routes.\n[placeholderBuilder] can be used to show a custom widget in their place\ninstead once the transition has taken flight.\n\nDuring the transition, the transition widget is animated to route B's hero's\nposition, and then the widget is inserted into route B. When going back from\nB to A, route A's hero's widget is, by default, placed over where route B's\nhero's widget was, and then the animation goes the other way.\n\n### Nested Navigators\n\nIf either or both routes contain nested [Navigator]s, only [Hero]s\ncontained in the top-most routes (as defined by [Route.isCurrent]) *of those\nnested [Navigator]s* are considered for animation. Just like in the\nnon-nested case the top-most routes containing these [Hero]s in the nested\n[Navigator]s have to be [PageRoute]s.\n\n## Parts of a Hero Transition\n\n![Diagrams with parts of the Hero transition.](https://flutter.github.io/assets-for-api-docs/assets/interaction/heroes.png)", "detail": "", "kind": 7, "label": "Hero" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Drawer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design panel that slides in horizontally from the edge of a\n[Scaffold] to show navigation links in an application.\n\nDrawers are typically used with the [Scaffold.drawer] property. The child of\nthe drawer is usually a [ListView] whose first child is a [DrawerHeader]\nthat displays status information about the current user. The remaining\ndrawer children are often constructed with [ListTile]s, often concluding\nwith an [AboutListTile].\n\nAn open drawer can be closed by calling [Navigator.pop]. For example\na drawer item might close the drawer when tapped:\n\n```dart\nListTile(\n leading: Icon(Icons.change_history),\n title: Text('Change history'),\n onTap: () {\n // change app state...\n Navigator.pop(context); // close the drawer\n },\n);\n```\n\nThe [AppBar] automatically displays an appropriate [IconButton] to show the\n[Drawer] when a [Drawer] is available in the [Scaffold]. The [Scaffold]\nautomatically handles the edge-swipe gesture to show the drawer.\n\nSee also:\n\n * [Scaffold.drawer], where one specifies a [Drawer] so that it can be\n shown.\n * [Scaffold.of], to obtain the current [ScaffoldState], which manages the\n display and animation of the drawer.\n * [ScaffoldState.openDrawer], which displays its [Drawer], if any.\n * ", "detail": "", "kind": 7, "label": "Drawer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [Scrollable] to build the viewport through which the\nscrollable content is displayed.", "detail": "(BuildContext context, ViewportOffset position) → Widget", "kind": 7, "label": "ViewportBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses an [InheritedWidget] as its configuration.", "detail": "", "kind": 7, "label": "InheritedElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SimpleDialog", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A simple material design dialog.\n\nA simple dialog offers the user a choice between several options. A simple\ndialog has an optional title that is displayed above the choices.\n\nChoices are normally represented using [SimpleDialogOption] widgets. If\nother widgets are used, see [contentPadding] for notes regarding the\nconventions for obtaining the spacing expected by Material Design.\n\nFor dialogs that inform the user about a situation, consider using an\n[AlertDialog].\n\nTypically passed as the child widget to [showDialog], which displays the\ndialog.\n\n\nIn this example, the user is asked to select between two options. These\noptions are represented as an enum. The [showDialog] method here returns\na [Future] that completes to a value of that enum. If the user cancels\nthe dialog (e.g. by hitting the back button on Android, or tapping on the\nmask behind the dialog) then the future completes with the null value.\n\nThe return value in this example is used as the index for a switch statement.\nOne advantage of using an enum as the return value and then using that to\ndrive a switch statement is that the analyzer will flag any switch statement\nthat doesn't mention every value in the enum.\n\n```dart\nFuture _askedToLead() async {\n switch (await showDialog(\n context: context,\n builder: (BuildContext context) {\n return SimpleDialog(\n title: const Text('Select assignment'),\n children: [\n SimpleDialogOption(\n onPressed: () { Navigator.pop(context, Department.treasury); },\n child: const Text('Treasury department'),\n ),\n SimpleDialogOption(\n onPressed: () { Navigator.pop(context, Department.state); },\n child: const Text('State department'),\n ),\n ],\n );\n }\n )) {\n case Department.treasury:\n // Let's go.\n // ...\n break;\n case Department.state:\n // ...\n break;\n }\n}\n```\n\nSee also:\n\n * [SimpleDialogOption], which are options used in this type of dialog.\n * [AlertDialog], for dialogs that have a row of buttons below the body.\n * [Dialog], on which [SimpleDialog] and [AlertDialog] are based.\n * [showDialog], which actually displays the dialog and returns its result.\n * ", "detail": "", "kind": 7, "label": "SimpleDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabPageSelectorIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a single circle with the specified border and background colors.\n\nUsed by [TabPageSelector] to indicate the selected page.", "detail": "", "kind": 7, "label": "TabPageSelectorIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformFollower", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that follows a [CompositedTransformTarget].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\napplies a transformation that causes it to provide its child with a\ncoordinate space that matches that of the linked [CompositedTransformTarget]\nwidget, offset by [offset].\n\nThe [LayerLink] object used as the [link] must be the same object as that\nprovided to the matching [CompositedTransformTarget].\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nthis [CompositedTransformFollower].\n\nHit testing on descendants of this widget will only work if the target\nposition is within the box that this widget's parent considers to be\nhittable. If the parent covers the screen, this is trivially achievable, so\nthis widget is usually used as the root of an [OverlayEntry] in an app-wide\n[Overlay] (e.g. as created by the [MaterialApp] widget's [Navigator]).\n\nSee also:\n\n * [CompositedTransformTarget], the widget that this widget can target.\n * [FollowerLayer], the layer that implements this widget's logic.\n * [Transform], which applies an arbitrary transform to a child.", "detail": "", "kind": 7, "label": "CompositedTransformFollower" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableText", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A basic text input field.\n\nThis widget interacts with the [TextInput] service to let the user edit the\ntext it contains. It also provides scrolling, selection, and cursor\nmovement. This widget does not provide any focus management (e.g.,\ntap-to-focus).\n\n## Input Actions\n\nA [TextInputAction] can be provided to customize the appearance of the\naction button on the soft keyboard for Android and iOS. The default action\nis [TextInputAction.done].\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\nEditableText receives focus. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\n## Lifecycle\n\nUpon completion of editing, like pressing the \"done\" button on the keyboard,\ntwo actions take place:\n\n 1st: Editing is finalized. The default behavior of this step includes\n an invocation of [onChanged]. That default behavior can be overridden.\n See [onEditingComplete] for details.\n\n 2nd: [onSubmitted] is invoked with the user's input value.\n\n[onSubmitted] can be used to manually move focus to another input widget\nwhen a user finishes with the currently focused input widget.\n\nRather than using this widget directly, consider using [TextField], which\nis a full-featured, material-design text input field with placeholder text,\nlabels, and [Form] integration.\n\n## Gesture Events Handling\n\nThis widget provides rudimentary, platform-agnostic gesture handling for\nuser actions such as tapping, long-pressing and scrolling when\n[rendererIgnoresPointer] is false (false by default). To tightly conform\nto the platform behavior with respect to input gestures in text fields, use\n[TextField] or [CupertinoTextField]. For custom selection behavior, call\nmethods such as [RenderEditable.selectPosition],\n[RenderEditable.selectWord], etc. programmatically.\n\nSee also:\n\n * [TextField], which is a full-featured, material-design text input field\n with placeholder text, labels, and [Form] integration.", "detail": "", "kind": 7, "label": "EditableText" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for an editable text field.\n\nWhenever the user modifies a text field with an associated\n[TextEditingController], the text field updates [value] and the controller\nnotifies its listeners. Listeners can then read the [text] and [selection]\nproperties to learn what the user has typed or how the selection has been\nupdated.\n\nSimilarly, if you modify the [text] or [selection] properties, the text\nfield will be notified and will update itself appropriately.\n\nA [TextEditingController] can also be used to provide an initial value for a\ntext field. If you build a text field with a controller that already has\n[text], the text field will use that text as its initial value.\n\nThe [text] or [selection] properties can be set from within a listener\nadded to this controller. If both properties need to be changed then the\ncontroller's [value] should be set instead.\n\nThis example creates a [TextField] with a [TextEditingController] whose\nchange listener forces the entered text to be lower case and keeps the\ncursor at the end of the input.\n\n```dart\nfinal _controller = TextEditingController();\n\nvoid initState() {\n _controller.addListener(() {\n final text = _controller.text.toLowerCase();\n _controller.value = _controller.value.copyWith(\n text: text,\n selection: TextSelection(baseOffset: text.length, extentOffset: text.length),\n composing: TextRange.empty,\n );\n });\n super.initState();\n}\n\nvoid dispose() {\n _controller.dispose();\n super.dispose();\n}\n\nWidget build(BuildContext context) {\n return Scaffold(\n body: Container(\n alignment: Alignment.center,\n padding: const EdgeInsets.all(6),\n child: TextFormField(\n controller: _controller,\n decoration: InputDecoration(border: OutlineInputBorder()),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [TextField], which is a Material Design text field that can be controlled\n with a [TextEditingController].\n * [EditableText], which is a raw region of editable text that can be\n controlled with a [TextEditingController].", "detail": "", "kind": 7, "label": "TextEditingController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnderlineTabIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [TabBar.indicator] to draw a horizontal line below the\nselected tab.\n\nThe selected tab underline is inset from the tab's boundary by [insets].\nThe [borderSide] defines the line's color and weight.\n\nThe [TabBar.indicatorSize] property can be used to define the indicator's\nbounds in terms of its (centered) widget with [TabIndicatorSize.label],\nor the entire tab with [TabIndicatorSize.tab].", "detail": "", "kind": 7, "label": "UnderlineTabIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspectorService", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Service used by GUI tools to interact with the [WidgetInspector].\n\nCalls to this object are typically made from GUI tools such as the [Flutter\nIntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nusing the [Dart VM Service protocol](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md).\nThis class uses its own object id and manages object lifecycles itself\ninstead of depending on the [object ids](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#getobject)\nspecified by the VM Service Protocol because the VM Service Protocol ids\nexpire unpredictably. Object references are tracked in groups so that tools\nthat clients can use dereference all objects in a group with a single\noperation making it easier to avoid memory leaks.\n\nAll methods in this class are appropriate to invoke from debugging tools\nusing the Observatory service protocol to evaluate Dart expressions of the\nform `WidgetInspectorService.instance.methodName(arg1, arg2, ...)`. If you\nmake changes to any instance method of this class you need to verify that\nthe [Flutter IntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nwidget inspector support still works with the changes.\n\nAll methods returning String values return JSON.", "detail": "", "kind": 7, "label": "WidgetInspectorService" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned without\ncommitting to a specific [TextDirection].\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nA [PositionedDirectional] widget must be a descendant of a [Stack], and the\npath from the [PositionedDirectional] widget to its enclosing [Stack] must\ncontain only [StatelessWidget]s or [StatefulWidget]s (not other kinds of\nwidgets, like [RenderObjectWidget]s).\n\nIf a widget is wrapped in a [PositionedDirectional], then it is a\n_positioned_ widget in its [Stack]. If the [top] property is non-null, the\ntop edge of this child/ will be positioned [top] layout units from the top\nof the stack widget. The [start], [bottom], and [end] properties work\nanalogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [start] and [end] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nSee also:\n\n * [Positioned], which specifies the widget's position visually.\n * [Positioned.directional], which also specifies the widget's horizontal\n position using [start] and [end] but has an explicit [TextDirection].", "detail": "", "kind": 7, "label": "PositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsDebugger", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that visualizes the semantics for the child.\n\nThis widget is useful for understand how an app presents itself to\naccessibility technology.", "detail": "", "kind": 7, "label": "SemanticsDebugger" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [SingleChildRenderObjectWidget] as its configuration.\n\nThe child is optional.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [RenderObjectWithChildMixin] mixin. Such widgets are\nexpected to inherit from [SingleChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "SingleChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQueryData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Information about a piece of media (e.g., a window).\n\nFor example, the [MediaQueryData.size] property contains the width and\nheight of the current window.\n\nTo obtain the current [MediaQueryData] for a given [BuildContext], use the\n[MediaQuery.of] function. For example, to obtain the size of the current\nwindow, use `MediaQuery.of(context).size`.\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nMediaQueryData includes two [EdgeInsets] values:\n[padding] and [viewInsets]. These\nvalues reflect the configuration of the device and are used by\nmany top level widgets, like [SafeArea] and the Cupertino and\nMaterial scaffold widgets. The padding value defines areas that\nmight not be completely visible, like the display \"notch\" on the\niPhone X. The viewInsets value defines areas that aren't visible at\nall, typically because they're obscured by the device's keyboard.\n\nThe viewInsets and padding values are independent, they're both\nmeasured from the edges of the MediaQuery widget's bounds. The\nbounds of the top level MediaQuery created by [WidgetsApp] are the\nsame as the window that contains the app.\n\nWidgets whose layouts consume space defined by [viewInsets] or\n[padding] should enclose their children in secondary MediaQuery\nwidgets that reduce those properties by the same amount.\nThe [removePadding] and [removeInsets] methods are useful for this.", "detail": "", "kind": 7, "label": "MediaQueryData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalBarrier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nSee also:\n\n * [ModalRoute], which indirectly uses this widget.\n * [AnimatedModalBarrier], which is similar but takes an animated [color]\n instead of a single color value.", "detail": "", "kind": 7, "label": "ModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputChip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design input chip.\n\nInput chips represent a complex piece of information, such as an entity\n(person, place, or thing) or conversational text, in a compact form.\n\nInput chips can be made selectable by setting [onSelected], deletable by\nsetting [onDeleted], and pressable like a button with [onPressed]. They have\na [label], and they can have a leading icon (see [avatar]) and a trailing\nicon ([deleteIcon]). Colors and padding can be customized.\n\nRequires one of its ancestors to be a [Material] widget.\n\nInput chips work together with other UI elements. They can appear:\n\n * In a [Wrap] widget.\n * In a horizontally scrollable list, like a [ListView] whose\n scrollDirection is [Axis.horizontal].\n\n\n```dart\nInputChip(\n avatar: CircleAvatar(\n backgroundColor: Colors.grey.shade800,\n child: Text('AB'),\n ),\n label: Text('Aaron Burr'),\n onPressed: () {\n print('I am the one thing in life.');\n }\n)\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * ", "detail": "", "kind": 7, "label": "InputChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DialogTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a theme for [Dialog] widgets.\n\nDescendant widgets obtain the current [DialogTheme] object using\n`DialogTheme.of(context)`. Instances of [DialogTheme] can be customized with\n[DialogTheme.copyWith].\n\nWhen Shape is `null`, the dialog defaults to a [RoundedRectangleBorder] with\na border radius of 2.0 on all corners.\n\n[titleTextStyle] and [contentTextStyle] are used in [AlertDialogs].\nIf null, they default to [ThemeData.textTheme.title] and [ThemeData.textTheme.subhead],\nrespectively.\n\nSee also:\n\n * [Dialog], a material dialog that can be customized using this [DialogTheme].\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "DialogTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyleTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of a [DefaultTextStyle] that animates the different properties\nof its [TextStyle].\n\nSee also:\n\n * [DefaultTextStyle], which also defines a [TextStyle] for its descendants\n but is not animated.", "detail": "", "kind": 7, "label": "DefaultTextStyleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderNestedScrollViewViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [RenderViewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "RenderNestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have no children.", "detail": "", "kind": 7, "label": "LeafRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dialog", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design dialog.\n\nThis dialog widget does not have any opinion about the contents of the\ndialog. Rather than using this widget directly, consider using [AlertDialog]\nor [SimpleDialog], which implement specific kinds of material design\ndialogs.\n\nSee also:\n\n * [AlertDialog], for dialogs that have a message and some buttons.\n * [SimpleDialog], for dialogs that offer a variety of options.\n * [showDialog], which actually displays the dialog and returns its result.\n * ", "detail": "", "kind": 7, "label": "Dialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQuery", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Establishes a subtree in which media queries resolve to the given data.\n\nFor example, to learn the size of the current media (e.g., the window\ncontaining your app), you can read the [MediaQueryData.size] property from\nthe [MediaQueryData] returned by [MediaQuery.of]:\n`MediaQuery.of(context).size`.\n\nQuerying the current media using [MediaQuery.of] will cause your widget to\nrebuild automatically whenever the [MediaQueryData] changes (e.g., if the\nuser rotates their device).\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nSee also:\n\n * [WidgetsApp] and [MaterialApp], which introduce a [MediaQuery] and keep\n it up to date with the current screen metrics as they change.\n * [MediaQueryData], the data structure that represents the metrics.", "detail": "", "kind": 7, "label": "MediaQuery" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design button for selecting from a list of items.\n\nA dropdown button lets the user select from a number of items. The button\nshows the currently selected item as well as an arrow that opens a menu for\nselecting another item.\n\nThe type `T` is the type of the [value] that each dropdown item represents.\nAll the entries in a given menu must represent values with consistent types.\nTypically, an enum is used. Each [DropdownMenuItem] in [items] must be\nspecialized with that same type argument.\n\nThe [onChanged] callback should update a state variable that defines the\ndropdown's value. It should also call [State.setState] to rebuild the\ndropdown with the new value.\n\n\nThis sample shows a `DropdownButton` whose value is one of\n\"One\", \"Two\", \"Free\", or \"Four\".\n\n```dart\nString dropdownValue = 'One';\n```\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n body: Center(\n child: DropdownButton(\n value: dropdownValue,\n onChanged: (String newValue) {\n setState(() {\n dropdownValue = newValue;\n });\n },\n items: ['One', 'Two', 'Free', 'Four']\n .map>((String value) {\n return DropdownMenuItem(\n value: value,\n child: Text(value),\n );\n })\n .toList(),\n ),\n ),\n );\n}\n```\n\nIf the [onChanged] callback is null or the list of [items] is null\nthen the dropdown button will be disabled, i.e. its arrow will be\ndisplayed in grey and it will not respond to input. A disabled button\nwill display the [disabledHint] widget if it is non-null.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [DropdownMenuItem], the class used to represent the [items].\n * [DropdownButtonHideUnderline], which prevents its descendant dropdown buttons\n from displaying their underlines.\n * [RaisedButton], [FlatButton], ordinary buttons that trigger a single action.\n * ", "detail": "", "kind": 7, "label": "DropdownButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionGestureDetector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A gesture detector to respond to non-exclusive event chains for a text field.\n\nAn ordinary [GestureDetector] configured to handle events like tap and\ndouble tap will only recognize one or the other. This widget detects both:\nfirst the tap and then, if another tap down occurs within a time limit, the\ndouble tap.\n\nSee also:\n\n * [TextField], a Material text field which uses this gesture detector.\n * [CupertinoTextField], a Cupertino text field which uses this gesture\n detector.", "detail": "", "kind": 7, "label": "TextSelectionGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexibleSpaceBarSettings", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides sizing and opacity information to a [FlexibleSpaceBar].\n\nSee also:\n\n * [FlexibleSpaceBar] which creates a flexible space bar.", "detail": "", "kind": 7, "label": "FlexibleSpaceBarSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LabeledGlobalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A global key with a debugging label.\n\nThe debug label is useful for documentation and for debugging. The label\ndoes not affect the key's identity.", "detail": "", "kind": 7, "label": "LabeledGlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPositionWithSingleContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scroll position that manages scroll activities for a single\n[ScrollContext].\n\nThis class is a concrete subclass of [ScrollPosition] logic that handles a\nsingle [ScrollContext], such as a [Scrollable]. An instance of this class\nmanages [ScrollActivity] instances, which change what content is visible in\nthe [Scrollable]'s [Viewport].\n\nSee also:\n\n * [ScrollPosition], which defines the underlying model for a position\n within a [Scrollable] but is agnostic as to how that position is\n changed.\n * [ScrollView] and its subclasses such as [ListView], which use\n [ScrollPositionWithSingleContext] to manage their scroll position.\n * [ScrollController], which can manipulate one or more [ScrollPosition]s,\n and which uses [ScrollPositionWithSingleContext] as its default class for\n scroll positions.", "detail": "", "kind": 7, "label": "ScrollPositionWithSingleContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlowingOverscrollIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual indication that a scroll view has overscrolled.\n\nA [GlowingOverscrollIndicator] listens for [ScrollNotification]s in order\nto control the overscroll indication. These notifications are typically\ngenerated by a [ScrollView], such as a [ListView] or a [GridView].\n\n[GlowingOverscrollIndicator] generates [OverscrollIndicatorNotification]\nbefore showing an overscroll indication. To prevent the indicator from\nshowing the indication, call [OverscrollIndicatorNotification.disallowGlow]\non the notification.\n\nCreated automatically by [ScrollBehavior.buildViewportChrome] on platforms\n(e.g., Android) that commonly use this type of overscroll indication.\n\nIn a [MaterialApp], the edge glow color is the [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "GlowingOverscrollIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverflowBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nSee also:\n\n * [RenderConstrainedOverflowBox] for details about how [OverflowBox] is\n rendered.\n * [SizedOverflowBox], a widget that is a specific size but passes its\n original constraints through to its child, which may then overflow.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], a box with a specified size.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "OverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragSelectionUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that's dragging to select text has moved again.\n\nThe first argument [startDetails] contains the details of the event that\ninitiated the dragging.\n\nThe second argument [updateDetails] contains the details of the current\npointer movement. It's the same as the one passed to [DragGestureRecognizer.onUpdate].\n\nThis signature is different from [GestureDragUpdateCallback] to make it\neasier for various text fields to use [TextSelectionGestureDetector] without\nhaving to store the start position.", "detail": "(DragStartDetails startDetails, DragUpdateDetails updateDetails) → void", "kind": 7, "label": "DragSelectionUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverWithKeepAliveWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for sliver that have [KeepAlive] children.", "detail": "", "kind": 7, "label": "SliverWithKeepAliveWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutChangedNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates that the layout of one of the descendants of the object receiving\nthis notification has changed in some way, and that therefore any\nassumptions about that layout are no longer valid.\n\nUseful if, for instance, you're trying to align multiple descendants.\n\nTo listen for notifications in a subtree, use a\n[NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].\n\nIn the widgets library, only the [SizeChangedLayoutNotifier] class and\n[Scrollable] classes dispatch this notification (specifically, they dispatch\n[SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).\nTransitions, in particular, do not. Changing one's layout in one's build\nfunction does not cause this notification to be dispatched automatically. If\nan ancestor expects to be notified for any layout change, make sure you\neither only use widgets that never change layout, or that notify their\nancestors when appropriate, or alternatively, dispatch the notifications\nyourself when appropriate.\n\nAlso, since this notification is sent when the layout is changed, it is only\nuseful for paint effects that depend on the layout. If you were to use this\nnotification to change the build, for instance, you would always be one\nframe behind, which would look really ugly and laggy.", "detail": "", "kind": 7, "label": "LayoutChangedNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatusTransitionWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that rebuilds when the given animation changes status.", "detail": "", "kind": 7, "label": "StatusTransitionWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's size.\n\nSimilar to the [Builder] widget except that the framework calls the [builder]\nfunction at layout time and provides the parent widget's constraints. This\nis useful when the parent constrains the child's size and doesn't depend on\nthe child's intrinsic size. The [LayoutBuilder]'s final size will match its\nchild's size.\n\n\nIf the child should be smaller than the parent, consider wrapping the child\nin an [Align] widget. If the child might want to be bigger, consider\nwrapping it in a [SingleChildScrollView].\n\nSee also:\n\n * [Builder], which calls a `builder` function at build time.\n * [StatefulBuilder], which passes its `builder` function a `setState` callback.\n * [CustomSingleChildLayout], which positions its child during layout.", "detail": "", "kind": 7, "label": "LayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScrollView] that creates custom scroll effects using slivers.\n\nA [CustomScrollView] lets you supply [slivers] directly to create various\nscrolling effects, such as lists, grids, and expanding headers. For example,\nto create a scroll view that contains an expanding app bar followed by a\nlist and a grid, use a list of three slivers: [SliverAppBar], [SliverList],\nand [SliverGrid].\n\n[Widget]s in these [slivers] must produce [RenderSliver] objects.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n\nThis sample code shows a scroll view that contains a flexible pinned app\nbar, a grid, and an infinite list.\n\n```dart\nCustomScrollView(\n slivers: [\n const SliverAppBar(\n pinned: true,\n expandedHeight: 250.0,\n flexibleSpace: FlexibleSpaceBar(\n title: Text('Demo'),\n ),\n ),\n SliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n ),\n SliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n ),\n ],\n)\n```\n\n## Accessibility\n\nA [CustomScrollView] can allow Talkback/VoiceOver to make announcements\nto the user when the scroll state changes. For example, on Android an\nannouncement might be read as \"showing items 1 to 10 of 23\". To produce\nthis announcement, the scroll view needs three pieces of information:\n\n * The first visible child index.\n * The total number of children.\n * The total number of visible children.\n\nThe last value can be computed exactly by the framework, however the first\ntwo must be provided. Most of the higher-level scrollable widgets provide\nthis information automatically. For example, [ListView] provides each child\nwidget with a semantic index automatically and sets the semantic child\ncount to the length of the list.\n\nTo determine visible indexes, the scroll view needs a way to associate the\ngenerated semantics of each scrollable item with a semantic index. This can\nbe done by wrapping the child widgets in an [IndexedSemantics].\n\nThis semantic index is not necessarily the same as the index of the widget in\nthe scrollable, because some widgets may not contribute semantic\ninformation. Consider a [new ListView.separated()]: every other widget is a\ndivider with no semantic information. In this case, only odd numbered\nwidgets have a semantic index (equal to the index ~/ 2). Furthermore, the\ntotal number of children in this example would be half the number of\nwidgets. (The [new ListView.separated()] constructor handles this\nautomatically; this is only used here as an example.)\n\nThe total number of visible children can be provided by the constructor\nparameter `semanticChildCount`. This should always be the same as the\nnumber of widgets wrapped in [IndexedSemantics].\n\nSee also:\n\n * [SliverList], which is a sliver that displays linear list of children.\n * [SliverFixedExtentList], which is a more efficient sliver that displays\n linear list of children that have the same extent along the scroll axis.\n * [SliverGrid], which is a sliver that displays a 2D array of children.\n * [SliverPadding], which is a sliver that adds blank space around another\n sliver.\n * [SliverAppBar], which is a sliver that displays a header that can expand\n and float as the scroll view scrolls.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].\n * [IndexedSemantics], which allows annotating child lists with an index\n for scroll announcements.", "detail": "", "kind": 7, "label": "CustomScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Typography", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The color and geometry [TextThemes] for Material apps.\n\nThe text themes provided by the overall [Theme], like\n[ThemeData.textTheme], are based on the current locale's\n[MaterialLocalizations.scriptCategory] and are created\nby merging a color text theme, [black] or [white]\nand a geometry text theme, one of [englishLike], [dense],\nor [tall], depending on the locale.\n\nTo lookup a localized text theme use\n`Theme.of(context).textTheme` or\n`Theme.of(context).primaryTextTheme` or\n`Theme.of(context).accentTextTheme`.\n\nThe color text themes are [blackMountainView],\n[whiteMountainView], and [blackCupertino] and [whiteCupertino]. The\nMountain View theme [TextStyles] are based on the Roboto fonts and the\nCupertino themes are based on the San Francisco fonts.\n\nTwo sets of geometry themes are provided: 2014 and 2018. The 2014 themes\ncorrespond to the original version of the Material Design spec and are\nthe defaults. The 2018 themes correspond the second iteration of the\nspecification and feature different font sizes, font weights, and\nletter spacing values.\n\nBy default, [ThemeData.typography] is\n`Typography(platform: platform)` which uses [englishLike2014],\n[dense2014] and [tall2014]. To use the 2018 text theme\ngeometries, specify a typography value:\n\n```dart\nTypography(\n platorm: platform,\n englishLike: Typography.englishLike2018,\n dense: Typography.dense2018,\n tall: Typography.tall2018,\n)\n```\n\nSee also:\n\n * [ThemeData.typography], which can be used to configure the\n text themes used to create [ThemeData.textTheme],\n [ThemeData.primaryTextTheme], [ThemeData.accentTextTheme].\n * ", "detail": "", "kind": 7, "label": "Typography" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexibleSpaceBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The part of a material design [AppBar] that expands and collapses.\n\nMost commonly used in in the [SliverAppBar.flexibleSpace] field, a flexible\nspace bar expands and contracts as the app scrolls so that the [AppBar]\nreaches from the top of the app to the top of the scrolling contents of the\napp.\n\nThe widget that sizes the [AppBar] must wrap it in the widget returned by\n[FlexibleSpaceBar.createSettings], to convey sizing information down to the\n[FlexibleSpaceBar].\n\nSee also:\n\n * [SliverAppBar], which implements the expanding and contracting.\n * [AppBar], which is used by [SliverAppBar].\n * ", "detail": "", "kind": 7, "label": "FlexibleSpaceBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputDecorator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the appearance of a Material Design text field.\n\n[InputDecorator] displays the visual elements of a Material Design text\nfield around its input [child]. The visual elements themselves are defined\nby an [InputDecoration] object and their layout and appearance depend\non the `baseStyle`, `textAlign`, `isFocused`, and `isEmpty` parameters.\n\n[TextField] uses this widget to decorate its [EditableText] child.\n\n[InputDecorator] can be used to create widgets that look and behave like a\n[TextField] but support other kinds of input.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [TextField], which uses an [InputDecorator] to display a border,\n labels, and icons, around its [EditableText] child.\n * [Decoration] and [DecoratedBox], for drawing arbitrary decorations\n around other widgets.", "detail": "", "kind": 7, "label": "InputDecorator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays a [dart:ui.Image] directly.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nThis widget is rarely used directly. Instead, consider using [Image].", "detail": "", "kind": 7, "label": "RawImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomAppBarTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [BottomAppBar] widgets.\n\nDescendant widgets obtain the current [BottomAppBarTheme] object using\n`BottomAppBarTheme.of(context)`. Instances of [BottomAppBarTheme] can be\ncustomized with [BottomAppBarTheme.copyWith].\n\nTypically a [BottomAppBarTheme] is specified as part of the overall [Theme]\nwith [ThemeData.bottomAppBarTheme].\n\nAll [BottomAppBarTheme] properties are `null` by default. When null, the\n[BottomAppBar] constructor provides defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "BottomAppBarTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageTransitionsBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a horizontal [MaterialPageRoute]\npage transition animation that matches native iOS page transitions.\n\nSee also:\n\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.", "detail": "", "kind": 7, "label": "CupertinoPageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDivider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A one device pixel thick vertical line, with padding on either\nside.\n\nIn the material design language, this represents a divider.\n\nDividers can be used in lists, [Drawer]s, and elsewhere to separate content\nhorizontally. To create a one-pixel divider between items in a list,\nconsider using [ListTile.divideTiles], which is optimized for this case.\n\nThe box's total width is controlled by [width]. The appropriate\npadding is automatically computed from the width.\n\nSee also:\n\n * [PopupMenuDivider], which is the equivalent but for popup menus.\n * [ListTile.divideTiles], another approach to dividing widgets in a list.\n * ", "detail": "", "kind": 7, "label": "VerticalDivider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSingleChildLayout", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.\n\nSee also:\n\n * [SingleChildLayoutDelegate], which controls the layout of the child.\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [FractionallySizedBox], which sizes its child based on a fraction of its own\n size and positions the child according to an [Alignment] value.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.", "detail": "", "kind": 7, "label": "CustomSingleChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates that the subtree through which this notification bubbles must be\nkept alive even if it would normally be discarded as an optimization.\n\nFor example, a focused text field might fire this notification to indicate\nthat it should not be disposed even if the user scrolls the field off\nscreen.\n\nEach [KeepAliveNotification] is configured with a [handle] that consists of\na [Listenable] that is triggered when the subtree no longer needs to be kept\nalive.\n\nThe [handle] should be triggered any time the sending widget is removed from\nthe tree (in [State.deactivate]). If the widget is then rebuilt and still\nneeds to be kept alive, it should immediately send a new notification\n(possible with the very same [Listenable]) during build.\n\nThis notification is listened to by the [AutomaticKeepAlive] widget, which\nis added to the tree automatically by [SliverList] (and [ListView]) and\n[SliverGrid] (and [GridView]) widgets.\n\nFailure to trigger the [handle] in the manner described above will likely\ncause the [AutomaticKeepAlive] to lose track of whether the widget should be\nkept alive or not, leading to memory leaks or lost data. For example, if the\nwidget that requested keep-alive is removed from the subtree but doesn't\ntrigger its [Listenable] on the way out, then the subtree will continue to\nbe kept alive until the list itself is disposed. Similarly, if the\n[Listenable] is triggered while the widget needs to be kept alive, but a new\n[KeepAliveNotification] is not immediately sent, then the widget risks being\ngarbage collected while it wants to be kept alive.\n\nIt is an error to use the same [handle] in two [KeepAliveNotification]s\nwithin the same [AutomaticKeepAlive] without triggering that [handle] before\nthe second notification is sent.\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses\n[KeepAliveNotification] internally.", "detail": "", "kind": 7, "label": "KeepAliveNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElementVisitor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback to [BuildContext.visitChildElements].\n\nThe argument is the child being visited.\n\nIt is safe to call `element.visitChildElements` reentrantly within\nthis callback.", "detail": "(Element element) → void", "kind": 7, "label": "ElementVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListenerCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for [Notification] listeners.\n\nReturn true to cancel the notification bubbling. Return false to allow the\nnotification to continue to be dispatched to further ancestors.\n\nUsed by [NotificationListener.onNotification].", "detail": "(T notification) → bool", "kind": 7, "label": "NotificationListenerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActionChip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design action chip.\n\nAction chips are a set of options which trigger an action related to primary\ncontent. Action chips should appear dynamically and contextually in a UI.\n\nAction chips can be tapped to trigger an action or show progress and\nconfirmation. They cannot be disabled; if the action is not applicable, the\nchip should not be included in the interface. (This contrasts with buttons,\nwhere unavailable choices are usually represented as disabled controls.)\n\nAction chips are displayed after primary content, such as below a card or\npersistently at the bottom of a screen.\n\nThe material button widgets, [RaisedButton], [FlatButton], and\n[OutlineButton], are an alternative to action chips, which should appear\nstatically and consistently in a UI.\n\nRequires one of its ancestors to be a [Material] widget.\n\n\n```dart\nActionChip(\n avatar: CircleAvatar(\n backgroundColor: Colors.grey.shade800,\n child: Text('AB'),\n ),\n label: Text('Aaron Burr'),\n onPressed: () {\n print(\"If you stand for nothing, Burr, what’ll you fall for?\");\n }\n)\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * ", "detail": "", "kind": 7, "label": "ActionChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserScrollNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that the user has changed the direction in which they are\nscrolling.\n\nSee also:\n\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "UserScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionTile", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single-line [ListTile] with a trailing button that expands or collapses\nthe tile to reveal or hide the [children].\n\nThis widget is typically used with [ListView] to create an\n\"expand / collapse\" list entry. When used with scrolling widgets like\n[ListView], a unique [PageStorageKey] must be specified to enable the\n[ExpansionTile] to save and restore its expanded state when it is scrolled\nin and out of view.\n\nSee also:\n\n * [ListTile], useful for creating expansion tile [children] when the\n expansion tile represents a sublist.\n * The \"Expand/collapse\" section of\n .", "detail": "", "kind": 7, "label": "ExpansionTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Align", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that aligns its child within itself and optionally sizes itself\nbased on the child's size.\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\n## How it works\n\nThe [alignment] property describes a point in the `child`'s coordinate system\nand a different point in the coordinate system of this widget. The [Align]\nwidget positions the `child` such that both points are lined up on top of\neach other.\n\nThe [Align] widget in this example uses one of the defined constants from\n[Alignment], [topRight]. This places the [FlutterLogo] in the top right corner\nof the parent blue [Container].\n\n![A blue square container with the Flutter logo in the top right corner.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_constant.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment.topRight,\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [Alignment] used in the following example defines a single point:\n\n * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height\n of [FlutterLogo]/2 + height of [FlutterLogo]/2) = (36.0, 48.0).\n\nThe [Alignment] class uses a coordinate system with an origin in the center\nof the [Container], as shown with the [Icon] above. [Align] will place the\n[FlutterLogo] at (36.0, 48.0) according to this coordinate system.\n\n![A blue square container with the Flutter logo positioned according to the\nAlignment specified above. A point is marked at the center of the container\nfor the origin of the Alignment coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_alignment.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [FractionalOffset] used in the following example defines two points:\n\n * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0)\n in the coordinate system of the blue container.\n * (0.2 * width of [Align], 0.6 * height of [Align]) = (24.0, 72.0) in the\n coordinate system of the [Align] widget.\n\nThe [Align] widget positions the [FlutterLogo] such that the two points are on\ntop of each other. In this example, the top left of the [FlutterLogo] will\nbe placed at (24.0, 72.0) - (12.0, 36.0) = (12.0, 36.0) from the top left of\nthe [Align] widget.\n\nThe [FractionalOffset] class uses a coordinate system with an origin in the top-left\ncorner of the [Container] in difference to the center-oriented system used in\nthe example above with [Alignment].\n\n![A blue square container with the Flutter logo positioned according to the\nFractionalOffset specified above. A point is marked at the top left corner\nof the container for the origin of the FractionalOffset coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_fractional_offset.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: FractionalOffset(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Center], which is the same as [Align] but with the [alignment] always\n set to [Alignment.center].\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Align" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that creates a widget for a given index, e.g., in a\nlist.\n\nUsed by [ListView.builder] and other APIs that use lazily-generated widgets.\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [TransitionBuilder], which is similar but also takes a child.", "detail": "(BuildContext context, int index) → Widget", "kind": 7, "label": "IndexedWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldValidator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for validating a form field.\n\nReturns an error string to display if the input is invalid, or null\notherwise.\n\nUsed by [FormField.validator].", "detail": "(T value) → String", "kind": 7, "label": "FormFieldValidator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotationTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the rotation of a widget.\n\nHere's an illustration of the [RotationTransition] widget, with it's [turns]\nanimated by a [CurvedAnimation] set to [Curves.elasticOut]:\nSee also:\n\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "RotationTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Stream].\n\n\nWidget rebuilding is scheduled by each interaction, using [State.setState],\nbut is otherwise decoupled from the timing of the stream. The [builder]\nis called at the discretion of the Flutter pipeline, and will thus receive a\ntiming-dependent sub-sequence of the snapshots that represent the\ninteraction with the stream.\n\nAs an example, when interacting with a stream producing the integers\n0 through 9, the [builder] may be called with any ordered sub-sequence\nof the following snapshots that includes the last one (the one with\nConnectionState.done):\n\n* `new AsyncSnapshot.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot.withData(ConnectionState.active, 0)`\n* `new AsyncSnapshot.withData(ConnectionState.active, 1)`\n* ...\n* `new AsyncSnapshot.withData(ConnectionState.active, 9)`\n* `new AsyncSnapshot.withData(ConnectionState.done, 9)`\n\nThe actual sequence of invocations of the [builder] depends on the relative\ntiming of events produced by the stream and the build rate of the Flutter\npipeline.\n\nChanging the [StreamBuilder] configuration to another stream during event\ngeneration introduces snapshot pairs of the form:\n\n* `new AsyncSnapshot.withData(ConnectionState.none, 5)`\n* `new AsyncSnapshot.withData(ConnectionState.waiting, 5)`\n\nThe latter will be produced only when the new stream is non-null, and the\nformer only when the old stream is non-null.\n\nThe stream may produce errors, resulting in snapshots of the form:\n\n* `new AsyncSnapshot.withError(ConnectionState.active, 'some error')`\n\nThe data and error fields of snapshots produced are only changed when the\nstate is `ConnectionState.active`.\n\nThe initial snapshot data can be controlled by specifying [initialData].\nThis should be used to ensure that the first frame has the expected value,\nas the builder will always be called before the stream listener has a chance\nto be processed.\n\n\nThis sample shows a [StreamBuilder] configuring a text label to show the\nlatest bid received for a lot in an auction. Assume the `_lot` field is\nset by a selector elsewhere in the UI.\n\n```dart\nStreamBuilder(\n stream: _lot?.bids, // a Stream or null\n builder: (BuildContext context, AsyncSnapshot snapshot) {\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n switch (snapshot.connectionState) {\n case ConnectionState.none: return Text('Select lot');\n case ConnectionState.waiting: return Text('Awaiting bids...');\n case ConnectionState.active: return Text('\\$${snapshot.data}');\n case ConnectionState.done: return Text('\\$${snapshot.data} (closed)');\n }\n return null; // unreachable\n },\n)\n```\n\nSee also:\n\n * [ValueListenableBuilder], which wraps a [ValueListenable] instead of a\n [Stream].\n * [StreamBuilderBase], which supports widget building based on a computation\n that spans all interactions made with the stream.", "detail": "", "kind": 7, "label": "StreamBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AboutDialog", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An about box. This is a dialog box with the application's icon, name,\nversion number, and copyright, plus a button to show licenses for software\nused by the application.\n\nTo show an [AboutDialog], use [showAboutDialog].\n\nIf the application has a [Drawer], the [AboutListTile] widget can make the\nprocess of showing an about dialog simpler.\n\nThe [AboutDialog] shown by [showAboutDialog] includes a button that calls\n[showLicensePage].\n\nThe licenses shown on the [LicensePage] are those returned by the\n[LicenseRegistry] API, which can be used to add more licenses to the list.", "detail": "", "kind": 7, "label": "AboutDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshIndicatorState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Contains the state for a [RefreshIndicator]. This class can be used to\nprogrammatically show the refresh indicator, see the [show] method.", "detail": "", "kind": 7, "label": "RefreshIndicatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserAccountsDrawerHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design [Drawer] header that identifies the app's user.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [DrawerHeader], for a drawer header that doesn't show user accounts.\n * ", "detail": "", "kind": 7, "label": "UserAccountsDrawerHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey] is equal to another [ValueKey] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialButtonWithIconMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The type of [MaterialButton]s created with [RaisedButton.icon], [FlatButton.icon],\nand [OutlineButton.icon].\n\nThis mixin only exists to give the \"label and icon\" button widgets a distinct\ntype for the sake of [ButtonTheme].", "detail": "", "kind": 7, "label": "MaterialButtonWithIconMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMask", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that applies a mask generated by a [Shader] to its child.\n\nFor example, [ShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.\n\n\nThis example makes the text look like it is on fire:\n\n```dart\nShaderMask(\n shaderCallback: (Rect bounds) {\n return RadialGradient(\n center: Alignment.topLeft,\n radius: 1.0,\n colors: [Colors.yellow, Colors.deepOrange.shade900],\n tileMode: TileMode.mirror,\n ).createShader(bounds);\n },\n child: const Text('I’m burning the memories'),\n)\n```\n\nSee also:\n\n * [Opacity], which can apply a uniform alpha effect to its child.\n * [CustomPaint], which lets you draw directly on the canvas.\n * [DecoratedBox], for another approach at decorating child widgets.\n * [BackdropFilter], which applies an image filter to the background.", "detail": "", "kind": 7, "label": "ShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Coordinates tab selection between a [TabBar] and a [TabBarView].\n\nThe [index] property is the index of the selected tab and the [animation]\nrepresents the current scroll positions of the tab bar and the tar bar view.\nThe selected tab's index can be changed with [animateTo].\n\nA stateful widget that builds a [TabBar] or a [TabBarView] can create\na [TabController] and share it directly.\n\nWhen the [TabBar] and [TabBarView] don't have a convenient stateful\nancestor, a [TabController] can be shared by providing a\n[DefaultTabController] inherited widget.\n\n\nThis widget introduces a [Scaffold] with an [AppBar] and a [TabBar].\n\n```dart\nclass MyTabbedPage extends StatefulWidget {\n const MyTabbedPage({ Key key }) : super(key: key);\n @override\n _MyTabbedPageState createState() => _MyTabbedPageState();\n}\n\nclass _MyTabbedPageState extends State with SingleTickerProviderStateMixin {\n final List myTabs = [\n Tab(text: 'LEFT'),\n Tab(text: 'RIGHT'),\n ];\n\n TabController _tabController;\n\n @override\n void initState() {\n super.initState();\n _tabController = TabController(vsync: this, length: myTabs.length);\n }\n\n @override\n void dispose() {\n _tabController.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n bottom: TabBar(\n controller: _tabController,\n tabs: myTabs,\n ),\n ),\n body: TabBarView(\n controller: _tabController,\n children: myTabs.map((Tab tab) {\n return Center(child: Text(tab.text));\n }).toList(),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "TabController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).", "detail": "(TextSelection selection, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTileStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the title font used for [ListTile] descendants of a [ListTileTheme].\n\nList tiles that appear in a [Drawer] use the theme's [TextTheme.body2]\ntext style, which is a little smaller than the theme's [TextTheme.subhead]\ntext style, which is used by default.", "detail": "", "kind": 13, "label": "ListTileStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialAccentColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a single accent color as well a swatch of four shades of the\naccent color.\n\nThe color's shades are referred to by index, the colors with smaller\nindices are lighter, larger indices are darker. There are four valid\nindices: 100, 200, 400, and 700. The value of this color should be the\nsame as the value of index 200 and [shade200].\n\nSee also:\n\n * [Colors], which defines all of the standard material colors.\n * ", "detail": "", "kind": 7, "label": "MaterialAccentColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box in which a single widget can be scrolled.\n\nThis widget is useful when you have a single box that will normally be\nentirely visible, for example a clock face in a time picker, but you need to\nmake sure it can be scrolled if the container gets too small in one axis\n(the scroll direction).\n\nIt is also useful if you need to shrink-wrap in both axes (the main\nscrolling direction as well as the cross axis), as one might see in a dialog\nor pop-up menu. In that case, you might pair the [SingleChildScrollView]\nwith a [ListBody] child.\n\nWhen you have a list of children and do not require cross-axis\nshrink-wrapping behavior, for example a scrolling list that is always the\nwidth of the screen, consider [ListView], which is vastly more efficient\nthat a [SingleChildScrollView] containing a [ListBody] or [Column] with\nmany children.\n\n## Sample code: Using [SingleChildScrollView] with a [Column]\n\nSometimes a layout is designed around the flexible properties of a\n[Column], but there is the concern that in some cases, there might not\nbe enough room to see the entire contents. This could be because some\ndevices have unusually small screens, or because the application can\nbe used in landscape mode where the aspect ratio isn't what was\noriginally envisioned, or because the application is being shown in a\nsmall window in split-screen mode. In any case, as a result, it might\nmake sense to wrap the layout in a [SingleChildScrollView].\n\nSimply doing so, however, usually results in a conflict between the [Column],\nwhich typically tries to grow as big as it can, and the [SingleChildScrollView],\nwhich provides its children with an infinite amount of space.\n\nTo resolve this apparent conflict, there are a couple of techniques, as\ndiscussed below. These techniques should only be used when the content is\nnormally expected to fit on the screen, so that the lazy instantiation of\na sliver-based [ListView] or [CustomScrollView] is not expected to provide\nany performance benefit. If the viewport is expected to usually contain\ncontent beyond the dimensions of the screen, then [SingleChildScrollView]\nwould be very expensive.\n\n### Centering, spacing, or aligning fixed-height content\n\nIf the content has fixed (or intrinsic) dimensions but needs to be spaced out,\ncentered, or otherwise positioned using the [Flex] layout model of a [Column],\nthe following technique can be used to provide the [Column] with a minimum\ndimension while allowing it to shrink-wrap the contents when there isn't enough\nroom to apply these spacing or alignment needs.\n\nA [LayoutBuilder] is used to obtain the size of the viewport (implicitly via\nthe constraints that the [SingleChildScrollView] sees, since viewports\ntypically grow to fit their maximum height constraint). Then, inside the\nscroll view, a [ConstrainedBox] is used to set the minimum height of the\n[Column].\n\nThe [Column] has no [Expanded] children, so rather than take on the infinite\nheight from its [BoxConstraints.maxHeight], (the viewport provides no maximum height\nconstraint), it automatically tries to shrink to fit its children. It cannot\nbe smaller than its [BoxConstraints.minHeight], though, and It therefore\nbecomes the bigger of the minimum height provided by the\n[ConstrainedBox] and the sum of the heights of the children.\n\nIf the children aren't enough to fit that minimum size, the [Column] ends up\nwith some remaining space to allocate as specified by its\n[Column.mainAxisAlignment] argument.\n\nIn this example, the children are spaced out equally, unless there's no more\nroom, in which case they stack vertically and scroll.\n\nWhen using this technique, [Expanded] and [Flexible] are not useful, because\nin both cases the \"available space\" is infinite (since this is in a viewport).\nThe next section describes a technique for providing a maximum height constraint.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: Column(\n mainAxisSize: MainAxisSize.min,\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: [\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Container(\n // Another fixed-height child.\n color: const Color(0xff008000), // Green\n height: 120.0,\n ),\n ],\n ),\n ),\n );\n },\n );\n}\n```\n\n### Expanding content to fit the viewport\n\nThe following example builds on the previous one. In addition to providing a\nminimum dimension for the child [Column], an [IntrinsicHeight] widget is used\nto force the column to be exactly as big as its contents. This constraint\ncombines with the [ConstrainedBox] constraints discussed previously to ensure\nthat the column becomes either as big as viewport, or as big as the contents,\nwhichever is biggest.\n\nBoth constraints must be used to get the desired effect. If only the\n[IntrinsicHeight] was specified, then the column would not grow to fit the\nentire viewport when its children were smaller than the whole screen. If only\nthe size of the viewport was used, then the [Column] would overflow if the\nchildren were bigger than the viewport.\n\nThe widget that is to grow to fit the remaining space so provided is wrapped\nin an [Expanded] widget.\n\nThis technique is quite expensive, as it more or less requires that the contents\nof the viewport be laid out twice (once to find their intrinsic dimensions, and\nonce to actually lay them out). The number of widgets within the column should\ntherefore be kept small. Alternatively, subsets of the children that have known\ndimensions can be wrapped in a [SizedBox] that has tight vertical constraints,\nso that the intrinsic sizing algorithm can short-circuit the computation when it\nreaches those parts of the subtree.\n\nIn this example, the column becomes either as big as viewport, or as big as\nthe contents, whichever is biggest.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: IntrinsicHeight(\n child: Column(\n children: [\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Expanded(\n // A flexible child that will grow to fit the viewport but\n // still be at least as big as necessary to fit its contents.\n child: Container(\n color: const Color(0xff800000), // Red\n height: 120.0,\n ),\n ),\n ],\n ),\n ),\n ),\n );\n },\n );\n}\n```\n\nSee also:\n\n * [ListView], which handles multiple children in a scrolling list.\n * [GridView], which handles multiple children in a scrolling grid.\n * [PageView], for a scrollable that works page by page.\n * [Scrollable], which handles arbitrary scrolling effects.", "detail": "", "kind": 7, "label": "SingleChildScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilderBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for widgets that build themselves based on interaction with\na specified [Stream].\n\nA [StreamBuilderBase] is stateful and maintains a summary of the interaction\nso far. The type of the summary and how it is updated with each interaction\nis defined by sub-classes.\n\nExamples of summaries include:\n\n* the running average of a stream of integers;\n* the current direction and speed based on a stream of geolocation data;\n* a graph displaying data points from a stream.\n\nIn general, the summary is the result of a fold computation over the data\nitems and errors received from the stream along with pseudo-events\nrepresenting termination or change of stream. The initial summary is\nspecified by sub-classes by overriding [initial]. The summary updates on\nreceipt of stream data and errors are specified by overriding [afterData] and\n[afterError], respectively. If needed, the summary may be updated on stream\ntermination by overriding [afterDone]. Finally, the summary may be updated\non change of stream by overriding [afterDisconnected] and [afterConnected].\n\n`T` is the type of stream events.\n\n`S` is the type of interaction summary.\n\nSee also:\n\n * [StreamBuilder], which is specialized for the case where only the most\n recent interaction is needed for widget building.", "detail": "", "kind": 7, "label": "StreamBuilderBase" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryConstructor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.constructor].", "detail": "() → T", "kind": 7, "label": "GestureRecognizerFactoryConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state for a [Navigator] widget.", "detail": "", "kind": 7, "label": "NavigatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Visibility", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether to show or hide a child.\n\nBy default, the [visible] property controls whether the [child] is included\nin the subtree or not; when it is not [visible], the [replacement] child\n(typically a zero-sized box) is included instead.\n\nA variety of flags can be used to tweak exactly how the child is hidden.\n(Changing the flags dynamically is discouraged, as it can cause the [child]\nsubtree to be rebuilt, with any state in the subtree being discarded.\nTypically, only the [visible] flag is changed dynamically.)\n\nThese widgets provide some of the facets of this one:\n\n * [Opacity], which can stop its child from being painted.\n * [Offstage], which can stop its child from being laid out or painted.\n * [TickerMode], which can stop its child from being animated.\n * [ExcludeSemantics], which can hide the child from accessibility tools.\n * [IgnorePointer], which can disable touch interactions with the child.\n\nUsing this widget is not necessary to hide children. The simplest way to\nhide a child is just to not include it, or, if a child _must_ be given (e.g.\nbecause the parent is a [StatelessWidget]) then to use [SizedBox.shrink]\ninstead of the child that would otherwise be included.\n\nSee also:\n\n * [AnimatedSwitcher], which can fade from one child to the next as the\n subtree changes.\n * [AnimatedCrossFade], which can fade between two specific children.", "detail": "", "kind": 7, "label": "Visibility" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaddleSliderValueIndicatorShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s value indicator.\n\nSee also:\n\n * [Slider], which includes a value indicator defined by this shape.\n * [SliderTheme], which can be used to configure the slider value indicator\n of all sliders in a widget subtree.", "detail": "", "kind": 7, "label": "PaddleSliderValueIndicatorShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a path.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\n[PhysicalModel] does the same but only supports shapes that can be expressed\nas rectangles with rounded corners.\n\nSee also:\n\n * [ShapeBorderClipper], which converts a [ShapeBorder] to a [CustomerClipper], as\n needed by this widget.", "detail": "", "kind": 7, "label": "PhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialBasedCupertinoThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [CupertinoThemeData] that defers unspecified theme attributes to an\nupstream Material [ThemeData].\n\nThis type of [CupertinoThemeData] is used by the Material [Theme] to\nharmonize the [CupertinoTheme] with the material theme's colors and text\nstyles.\n\nIn the most basic case, [ThemeData]'s `cupertinoOverrideTheme` is null and\nand descendant Cupertino widgets' styling is derived from the Material theme.\n\nTo override individual parts of the Material-derived Cupertino styling,\n`cupertinoOverrideTheme`'s construction parameters can be used.\n\nTo completely decouple the Cupertino styling from Material theme derivation,\nanother [CupertinoTheme] widget can be inserted as a descendant of the\nMaterial [Theme]. On a [MaterialApp], this can be done using the `builder`\nparameter on the constructor.\n\nSee also:\n\n * [CupertinoThemeData], whose null constructor parameters default to\n reasonable iOS styling defaults rather than harmonizing with a Material\n theme.\n * [Theme], widget which inserts a [CupertinoTheme] with this\n [MaterialBasedCupertinoThemeData].", "detail": "", "kind": 7, "label": "MaterialBasedCupertinoThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildOwner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manager class for the widgets framework.\n\nThis class tracks which widgets need rebuilding, and handles other tasks\nthat apply to widget trees as a whole, such as managing the inactive element\nlist for the tree and triggering the \"reassemble\" command when necessary\nduring hot reload when debugging.\n\nThe main build owner is typically owned by the [WidgetsBinding], and is\ndriven from the operating system along with the rest of the\nbuild/layout/paint pipeline.\n\nAdditional build owners can be built to manage off-screen widget trees.\n\nTo assign a build owner to a tree, use the\n[RootRenderObjectElement.assignOwner] method on the root element of the\nwidget tree.", "detail": "", "kind": 7, "label": "BuildOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderTickMarkShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for slider tick mark shapes.\n\nCreate a subclass of this if you would like a custom slider tick mark shape.\nThis is a simplified version of [SliderComponentShape] with a\n[SliderThemeData] passed when getting the preferred size.\n\nThe tick mark painting can be skipped by specifying [noTickMark] for\n[SliderThemeData.tickMarkShape].\n\nSee also:\n\n * [RoundSliderTickMarkShape] for a simple example of a tick mark shape.\n * [SliderTrackShape] for the base class for custom a track shape.\n * [SliderComponentShape] for the base class for custom a component shape.", "detail": "", "kind": 7, "label": "SliderTickMarkShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Stack] of entries that can be managed independently.\n\nOverlays let independent child widgets \"float\" visual elements on top of\nother widgets by inserting them into the overlay's [Stack]. The overlay lets\neach of these widgets manage their participation in the overlay using\n[OverlayEntry] objects.\n\nAlthough you can create an [Overlay] directly, it's most common to use the\noverlay created by the [Navigator] in a [WidgetsApp] or a [MaterialApp]. The\nnavigator uses its overlay to manage the visual appearance of its routes.\n\nSee also:\n\n * [OverlayEntry].\n * [OverlayState].\n * [WidgetsApp].\n * [MaterialApp].", "detail": "", "kind": 7, "label": "Overlay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the color, opacity, and size of icons.\n\nUsed by [IconTheme] to control the color, opacity, and size of icons in a\nwidget subtree.\n\nTo obtain the current icon theme, use [IconTheme.of]. To convert an icon\ntheme to a version with all the fields filled in, use [new\nIconThemeData.fallback].", "detail": "", "kind": 7, "label": "IconThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for sliver that have multiple box children.\n\nHelps subclasses build their children lazily using a [SliverChildDelegate].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedAlign", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Align] which automatically transitions the child's\nposition over a given duration whenever the given [alignment] changes.\n\nHere's an illustration of what this can look like, using a [curve] of\n[Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedPadding], which can animate the padding instead of the\n alignment.\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.", "detail": "", "kind": 7, "label": "AnimatedAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [ShapeBorder]s.\n\nThis class specializes the interpolation of [Tween] to use [ShapeBorder.lerp].", "detail": "", "kind": 7, "label": "ShapeBorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragAnchor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where the [Draggable] should be anchored during a drag.", "detail": "", "kind": 13, "label": "DragAnchor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A general-purpose widget for building animations.\n\nAnimatedBuilder is useful for more complex widgets that wish to include\nan animation as part of a larger build function. To use AnimatedBuilder,\nsimply construct the widget and pass it a builder function.\n\nFor simple cases without additional state, consider using\n[AnimatedWidget].\n\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nanimation, it's more efficient to build that subtree once instead of\nrebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\nAnimatedBuilder will pass it back to your builder function so that you\ncan incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedBuilder] and makes use of the\n[child] feature to avoid having to rebuild the [Container] each time.\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return AnimatedBuilder(\n animation: _controller,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n builder: (BuildContext context, Widget child) {\n return Transform.rotate(\n angle: _controller.value * 2.0 * math.pi,\n child: child,\n );\n },\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "AnimatedBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnconstrainedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that imposes no constraints on its child, allowing it to render\nat its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This container will then attempt\nto adopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the container, a warning will be\nprinted on the console, and black and yellow striped areas will appear where\nthe overflow occurs.\n\nSee also:\n\n * [ConstrainedBox], for a box which imposes constraints on its child.\n * [Align], which loosens the constraints given to the child rather than\n removing them entirely.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow\n the parent.", "detail": "", "kind": 7, "label": "UnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single list of children. (This superclass only provides the\nstorage for that child list, it doesn't actually provide the updating\nlogic.)", "detail": "", "kind": 7, "label": "MultiChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a callback that verifies that it's OK to call [Navigator.pop].\n\nUsed by [Form.onWillPop], [ModalRoute.addScopedWillPopCallback],\n[ModalRoute.removeScopedWillPopCallback], and [WillPopScope].", "detail": "() → Future", "kind": 7, "label": "WillPopCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedOverflowBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is a specific size but passes its original constraints\nthrough to its child, which may then overflow.\n\nSee also:\n\n * [OverflowBox], A widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Switch", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design switch.\n\nUsed to toggle the on/off state of a single setting.\n\nThe switch itself does not maintain any state. Instead, when the state of\nthe switch changes, the widget calls the [onChanged] callback. Most widgets\nthat use a switch will listen for the [onChanged] callback and rebuild the\nswitch with a new [value] to update the visual appearance of the switch.\n\nIf the [onChanged] callback is null, then the switch will be disabled (it\nwill not respond to input). A disabled switch's thumb and track are rendered\nin shades of grey by default. The default appearance of a disabled switch\ncan be overridden with [inactiveThumbColor] and [inactiveTrackColor].\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [SwitchListTile], which combines this widget with a [ListTile] so that\n you can give the switch a label.\n * [Checkbox], another widget with similar semantics.\n * [Radio], for selecting among a set of explicit values.\n * [Slider], for selecting a value in a range.\n * ", "detail": "", "kind": 7, "label": "Switch" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current state of a [FormField]. Passed to the [FormFieldBuilder] method\nfor use in constructing the form field's widget.", "detail": "", "kind": 7, "label": "FormFieldState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that applies a filter to the existing painted content and then\npaints [child].\n\nThe filter will be applied to all the area within its parent or ancestor\nwidget's clip. If there's no clip, the filter will be applied to the full\nscreen.\n\n\nIf the [BackdropFilter] needs to be applied to an area that exactly matches\nits child, wraps the [BackdropFilter] with a clip widget that clips exactly\nto that child.\n\n```dart\nStack(\n fit: StackFit.expand,\n children: [\n Text('0' * 10000),\n Center(\n child: ClipRect( // <-- clips to the 200x200 [Container] below\n child: BackdropFilter(\n filter: ui.ImageFilter.blur(\n sigmaX: 5.0,\n sigmaY: 5.0,\n ),\n child: Container(\n alignment: Alignment.center,\n width: 200.0,\n height: 200.0,\n child: Text('Hello World'),\n ),\n ),\n ),\n ),\n ],\n)\n```\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.\n\nSee also:\n\n * [DecoratedBox], which draws a background under (or over) a widget.\n * [Opacity], which changes the opacity of the widget itself.", "detail": "", "kind": 7, "label": "BackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Notification] related to scrolling.\n\n[Scrollable] widgets notify their ancestors about scrolling-related changes.\nThe notifications have the following lifecycle:\n\n * A [ScrollStartNotification], which indicates that the widget has started\n scrolling.\n * Zero or more [ScrollUpdateNotification]s, which indicate that the widget\n has changed its scroll position, mixed with zero or more\n [OverscrollNotification]s, which indicate that the widget has not changed\n its scroll position because the change would have caused its scroll\n position to go outside its scroll bounds.\n * Interspersed with the [ScrollUpdateNotification]s and\n [OverscrollNotification]s are zero or more [UserScrollNotification]s,\n which indicate that the user has changed the direction in which they are\n scrolling.\n * A [ScrollEndNotification], which indicates that the widget has stopped\n scrolling.\n * A [UserScrollNotification], with a [UserScrollNotification.direction] of\n [ScrollDirection.idle].\n\nNotifications bubble up through the tree, which means a given\n[NotificationListener] will receive notifications for all descendant\n[Scrollable] widgets. To focus on notifications from the nearest\n[Scrollable] descendant, check that the [depth] property of the notification\nis zero.\n\nWhen a scroll notification is received by a [NotificationListener], the\nlistener will have already completed build and layout, and it is therefore\ntoo late for that widget to call [State.setState]. Any attempt to adjust the\nbuild or layout based on a scroll notification would result in a layout that\nlagged one frame behind, which is a poor user experience. Scroll\nnotifications are therefore primarily useful for paint effects (since paint\nhappens after layout). The [GlowingOverscrollIndicator] and [Scrollbar]\nwidgets are examples of paint effects that use scroll notifications.\n\nTo drive layout based on the scroll position, consider listening to the\n[ScrollPosition] directly (or indirectly via a [ScrollController]).", "detail": "", "kind": 7, "label": "ScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Embeds an Android view in the Widget hierarchy.\n\nRequires Android API level 20 or greater.\n\nEmbedding Android views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\nThe embedded Android view is painted just like any other Flutter widget and transformations\napply to it as well.\n\nThe widget fills all available space, the parent of this object must provide bounded layout\nconstraints.\n\nThe widget participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified in the `gestureRecognizers` constructor parameter. If\nthe set of gesture recognizers is empty, a gesture will be dispatched to the platform\nview iff it was not claimed by any other gesture recognizer.\n\nThe Android view object is created using a [PlatformViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewFactory.html).\nPlugins can register platform view factories with [PlatformViewRegistry#registerViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewRegistry.html#registerViewFactory-java.lang.String-io.flutter.plugin.platform.PlatformViewFactory-).\n\nRegistration is typically done in the plugin's registerWith method, e.g:\n\n```java\n public static void registerWith(Registrar registrar) {\n registrar.platformViewRegistry().registerViewFactory(\"webview\", WebViewFactory(registrar.messenger()));\n }\n```\n\nThe platform view's lifetime is the same as the lifetime of the [State] object for this widget.\nWhen the [State] is disposed the platform view (and auxiliary resources) are lazily\nreleased (some resources are immediately released and some by platform garbage collector).\nA stateful widget's state is disposed when the widget is removed from the tree or when it is\nmoved within the tree. If the stateful widget has a key and it's only moved relative to its siblings,\nor it has a [GlobalKey] and it's moved within the tree, it will not be disposed.", "detail": "", "kind": 7, "label": "AndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGrid", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[SliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nThe main axis direction of a grid is the direction in which it scrolls; the\ncross axis direction is the orthogonal direction.\n\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows twenty boxes in a pretty teal grid:\n\n```dart\nSliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n)\n```\n\n\nSee also:\n\n * [SliverList], which places its children in a linear array.\n * [SliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.", "detail": "", "kind": 7, "label": "SliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An image that shows a [placeholder] image while the target [image] is\nloading, then fades in the new image when it loads.\n\nUse this class to display long-loading images, such as [new NetworkImage],\nso that the image appears on screen with a graceful animation rather than\nabruptly pops onto the screen.\n\n\nIf the [image] emits an [ImageInfo] synchronously, such as when the image\nhas been loaded and cached, the [image] is displayed immediately and the\n[placeholder] is never displayed.\n\n[fadeOutDuration] and [fadeOutCurve] control the fade-out animation of the\nplaceholder.\n\n[fadeInDuration] and [fadeInCurve] control the fade-in animation of the\ntarget [image].\n\nPrefer a [placeholder] that's already cached so that it is displayed in one\nframe. This prevents it from popping onto the screen.\n\nWhen [image] changes it is resolved to a new [ImageStream]. If the new\n[ImageStream.key] is different this widget subscribes to the new stream and\nreplaces the displayed image with images emitted by the new stream.\n\nWhen [placeholder] changes and the [image] has not yet emitted an\n[ImageInfo], then [placeholder] is resolved to a new [ImageStream]. If the\nnew [ImageStream.key] is different this widget subscribes to the new stream\nand replaces the displayed image to images emitted by the new stream.\n\nWhen either [placeholder] or [image] changes, this widget continues showing\nthe previously loaded image (if any) until the new image provider provides a\ndifferent image. This is known as \"gapless playback\" (see also\n[Image.gaplessPlayback]).\n\n\n```dart\nFadeInImage(\n // here `bytes` is a Uint8List containing the bytes for the in-memory image\n placeholder: MemoryImage(bytes),\n image: NetworkImage('https://backend.example.com/image.png'),\n)\n```", "detail": "", "kind": 7, "label": "FadeInImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Navigator] observer that manages [Hero] transitions.\n\nAn instance of [HeroController] should be used in [Navigator.observers].\nThis is done automatically by [MaterialApp].", "detail": "", "kind": 7, "label": "HeroController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModelElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [InheritedModel] as its configuration.", "detail": "", "kind": 7, "label": "InheritedModelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Metrics for a [PageView].\n\nThe metrics are available on [ScrollNotification]s generated from\n[PageView]s.", "detail": "", "kind": 7, "label": "PageMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: [\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: [\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: [\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSizeWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for widgets that can return the size this widget would prefer\nif it were otherwise unconstrained.\n\nThere are a few cases, notably [AppBar] and [TabBar], where it would be\nundesirable for the widget to constrain its own size but where the widget\nneeds to expose a preferred or \"default\" size. For example a primary\n[Scaffold] sets its app bar height to the app bar's preferred height\nplus the height of the system status bar.\n\nUse [PreferredSize] to give a preferred size to an arbitrary widget.", "detail": "", "kind": 7, "label": "PreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFixedExtentList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[SliverFixedExtentList] places its children in a linear array along the main\naxis starting at offset zero and without gaps. Each child is forced to have\nthe [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[SliverFixedExtentList] is more efficient than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis.\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows an infinite number of items in varying shades of blue:\n\n```dart\nSliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n)\n```\n\n\nSee also:\n\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Direction of the hero's flight based on the navigation operation.", "detail": "", "kind": 13, "label": "HeroFlightDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageTransitionsBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a [MaterialPageRoute] page\ntransition animation.\n\nApps can configure the map of builders for [ThemeData.platformTheme]\nto customize the default [MaterialPageRoute] page transition animation\nfor different platforms.\n\nSee also:\n\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "PageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A utility class for building Material buttons that depend on the\nambient [ButtonTheme] and [Theme].\n\nThe button's size will expand to fit the child widget, if necessary.\n\nMaterialButtons whose [onPressed] handler is null will be disabled. To have\nan enabled button, make sure to pass a non-null value for onPressed.\n\nRather than using this class directly, consider using [FlatButton],\n[OutlineButton], or [RaisedButton], which configure this class with\nappropriate defaults that match the material design specification.\n\nTo create a button directly, without inheriting theme defaults, use\n[RawMaterialButton].\n\nIf you want an ink-splash effect for taps, but don't want to use a button,\nconsider using [InkWell] directly.\n\nSee also:\n\n * [IconButton], to create buttons that contain icons rather than text.", "detail": "", "kind": 7, "label": "MaterialButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularProgressIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design circular progress indicator, which spins to indicate that\nthe application is busy.\n\nA widget that shows progress along a circle. There are two kinds of circular\nprogress indicators:\n\n * _Determinate_. Determinate progress indicators have a specific value at\n each point in time, and the value should increase monotonically from 0.0\n to 1.0, at which time the indicator is complete. To create a determinate\n progress indicator, use a non-null [value] between 0.0 and 1.0.\n * _Indeterminate_. Indeterminate progress indicators do not have a specific\n value at each point in time and instead indicate that progress is being\n made without indicating how much progress remains. To create an\n indeterminate progress indicator, use a null [value].\n\nThe indicator arc is displayed with [valueColor], an animated value. To\nspecify a constant color use: `AlwaysStoppedAnimation(color)`.\n\nSee also:\n\n * [LinearProgressIndicator], which displays progress along a line.\n * [RefreshIndicator], which automatically displays a [CircularProgressIndicator]\n when the underlying vertical scrollable is overscrolled.\n * ", "detail": "", "kind": 7, "label": "CircularProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialApp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An application that uses material design.\n\nA convenience widget that wraps a number of widgets that are commonly\nrequired for material design applications. It builds upon a [WidgetsApp] by\nadding material-design specific functionality, such as [AnimatedTheme] and\n[GridPaper].\n\nThe [MaterialApp] configures the top-level [Navigator] to search for routes\nin the following order:\n\n 1. For the `/` route, the [home] property, if non-null, is used.\n\n 2. Otherwise, the [routes] table is used, if it has an entry for the route.\n\n 3. Otherwise, [onGenerateRoute] is called, if provided. It should return a\n non-null value for any _valid_ route not handled by [home] and [routes].\n\n 4. Finally if all else fails [onUnknownRoute] is called.\n\nIf a [Navigator] is created, at least one of these options must handle the\n`/` route, since it is used when an invalid [initialRoute] is specified on\nstartup (e.g. by another application launching this one with an intent on\nAndroid; see [Window.defaultRouteName]).\n\nThis widget also configures the observer of the top-level [Navigator] (if\nany) to perform [Hero] animations.\n\nIf [home], [routes], [onGenerateRoute], and [onUnknownRoute] are all null,\nand [builder] is not null, then no [Navigator] is created.\n\nSee also:\n\n * [Scaffold], which provides standard app elements like an [AppBar] and a [Drawer].\n * [Navigator], which is used to manage the app's stack of pages.\n * [MaterialPageRoute], which defines an app page that transitions in a material-specific way.\n * [WidgetsApp], which defines the basic app elements but does not depend on the material library.\n * The Flutter Internationalization Tutorial,\n .", "detail": "", "kind": 7, "label": "MaterialApp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomAppBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A container that is typically used with [Scaffold.bottomNavigationBar], and\ncan have a notch along the top that makes room for an overlapping\n[FloatingActionButton].\n\nTypically used with a [Scaffold] and a [FloatingActionButton].\n\n```dart\nScaffold(\n bottomNavigationBar: BottomAppBar(\n color: Colors.white,\n child: bottomAppBarContents,\n ),\n floatingActionButton: FloatingActionButton(onPressed: null),\n)\n```\n\nSee also:\n\n * [ComputeNotch] a function used for creating a notch in a shape.\n * [ScaffoldGeometry.floatingActionBarComputeNotch] the [ComputeNotch] used to\n make a notch for the [FloatingActionButton].\n * [FloatingActionButton] which the [BottomAppBar] makes a notch for.\n * [AppBar] for a toolbar that is shown at the top of the screen.", "detail": "", "kind": 7, "label": "BottomAppBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showSnackBar]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself had been used, no [Scaffold] would have\nbeen found, and the [Scaffold.of] function would have returned null.\n\n```dart\n @override\n Widget build(BuildContext context) {\n // here, Scaffold.of(context) returns null\n return Scaffold(\n appBar: AppBar(title: Text('Demo')),\n body: Builder(\n builder: (BuildContext context) {\n return FlatButton(\n child: Text('BUTTON'),\n onPressed: () {\n // here, Scaffold.of(context) returns the locally created Scaffold\n Scaffold.of(context).showSnackBar(SnackBar(\n content: Text('Hello.')\n ));\n }\n );\n }\n )\n );\n }\n```\n\nThe [BuildContext] for a particular widget can change location over time as\nthe widget is moved around the tree. Because of this, values returned from\nthe methods on this class should not be cached beyond the execution of a\nsingle synchronous function.\n\n[BuildContext] objects are actually [Element] objects. The [BuildContext]\ninterface is used to discourage direct manipulation of [Element] objects.", "detail": "", "kind": 7, "label": "BuildContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Theme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a theme to descendant widgets.\n\nA theme describes the colors and typographic choices of an application.\n\nDescendant widgets obtain the current theme's [ThemeData] object using\n[Theme.of]. When a widget uses [Theme.of], it is automatically rebuilt if\nthe theme later changes, so that the changes can be applied.\n\nThe [Theme] widget implies an [IconTheme] widget, set to the value of the\n[ThemeData.iconTheme] of the [data] for the [Theme].\n\nSee also:\n\n * [ThemeData], which describes the actual configuration of a theme.\n * [AnimatedTheme], which animates the [ThemeData] when it changes rather\n than changing the theme all at once.\n * [MaterialApp], which includes an [AnimatedTheme] widget configured via\n the [MaterialApp.theme] argument.", "detail": "", "kind": 7, "label": "Theme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Divider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A one device pixel thick horizontal line, with padding on either\nside.\n\nIn the material design language, this represents a divider.\n\nDividers can be used in lists, [Drawer]s, and elsewhere to separate content\nvertically or horizontally depending on the value of the [axis] enum.\nTo create a one-pixel divider between items in a list, consider using\n[ListTile.divideTiles], which is optimized for this case.\n\nThe box's total height is controlled by [height]. The appropriate\npadding is automatically computed from the width or height.\n\nSee also:\n\n * [PopupMenuDivider], which is the equivalent but for popup menus.\n * [ListTile.divideTiles], another approach to dividing widgets in a list.\n * ", "detail": "", "kind": 7, "label": "Divider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataColumn", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Column configuration for a [DataTable].\n\nOne column configuration must be provided for each column to\ndisplay in the table. The list of [DataColumn] objects is passed\nas the `columns` argument to the [new DataTable] constructor.", "detail": "", "kind": 7, "label": "DataColumn" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTarget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that receives data when a [Draggable] widget is dropped.\n\nWhen a draggable is dragged on top of a drag target, the drag target is\nasked whether it will accept the data the draggable is carrying. If the user\ndoes drop the draggable on top of the drag target (and the drag target has\nindicated that it will accept the draggable's data), then the drag target is\nasked to accept the draggable's data.\n\nSee also:\n\n * [Draggable]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "DragTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Widget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the configuration for an [Element].\n\nWidgets are the central class hierarchy in the Flutter framework. A widget\nis an immutable description of part of a user interface. Widgets can be\ninflated into elements, which manage the underlying render tree.\n\nWidgets themselves have no mutable state (all their fields must be final).\nIf you wish to associate mutable state with a widget, consider using a\n[StatefulWidget], which creates a [State] object (via\n[StatefulWidget.createState]) whenever it is inflated into an element and\nincorporated into the tree.\n\nA given widget can be included in the tree zero or more times. In particular\na given widget can be placed in the tree multiple times. Each time a widget\nis placed in the tree, it is inflated into an [Element], which means a\nwidget that is incorporated into the tree multiple times will be inflated\nmultiple times.\n\nThe [key] property controls how one widget replaces another widget in the\ntree. If the [runtimeType] and [key] properties of the two widgets are\n[operator==], respectively, then the new widget replaces the old widget by\nupdating the underlying element (i.e., by calling [Element.update] with the\nnew widget). Otherwise, the old element is removed from the tree, the new\nwidget is inflated into an element, and the new element is inserted into the\ntree.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.", "detail": "", "kind": 7, "label": "Widget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerLocation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where to show a [Banner].\n\nThe start and end locations are relative to the ambient [Directionality]\n(which can be overridden by [Banner.layoutDirection]).", "detail": "", "kind": 13, "label": "BannerLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPhysicalModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [PhysicalModel].\n\nThe [borderRadius] and [elevation] are animated.\n\nThe [color] is animated if the [animateColor] property is set; otherwise,\nthe color changes immediately at the start of the animation for the other\ntwo properties. This allows the color to be animated independently (e.g.\nbecause it is being driven by an [AnimatedTheme]).\n\nThe [shape] is not animated.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].", "detail": "", "kind": 7, "label": "AnimatedPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapInjector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [SliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [Viewport], so that it will always be laid out before the\n[SliverOverlapInjector] during a particular frame.\n\nSee also:\n\n * [NestedScrollView], which uses a [SliverOverlapAbsorber] to align its\n children, and which shows sample usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightShuttleBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A function that lets [Hero]s self supply a [Widget] that is shown during the\nhero's flight from one route to another instead of default (which is to\nshow the destination route's instance of the Hero).", "detail": "(BuildContext flightContext, Animation animation, HeroFlightDirection flightDirection, BuildContext fromHeroContext, BuildContext toHeroContext) → Widget", "kind": 7, "label": "HeroFlightShuttleBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a menu when pressed and calls [onSelected] when the menu is dismissed\nbecause an item was selected. The value passed to [onSelected] is the value of\nthe selected menu item.\n\nOne of [child] or [icon] may be provided, but not both. If [icon] is provided,\nthen [PopupMenuButton] behaves like an [IconButton].\n\nIf both are null, then a standard overflow icon is created (depending on the\nplatform).\n\n\nThis example shows a menu with four items, selecting between an enum's\nvalues and setting a `_selection` field based on the selection.\n\n```dart\n// This is the type used by the popup menu below.\nenum WhyFarther { harder, smarter, selfStarter, tradingCharter }\n\n// This menu button widget updates a _selection field (of type WhyFarther,\n// not shown here).\nPopupMenuButton(\n onSelected: (WhyFarther result) { setState(() { _selection = result; }); },\n itemBuilder: (BuildContext context) => >[\n const PopupMenuItem(\n value: WhyFarther.harder,\n child: Text('Working a lot harder'),\n ),\n const PopupMenuItem(\n value: WhyFarther.smarter,\n child: Text('Being a lot smarter'),\n ),\n const PopupMenuItem(\n value: WhyFarther.selfStarter,\n child: Text('Being a self-starter'),\n ),\n const PopupMenuItem(\n value: WhyFarther.tradingCharter,\n child: Text('Placed in charge of trading charter'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [PopupMenuItem], a popup menu entry for a single value.\n * [PopupMenuDivider], a popup menu entry that is just a horizontal line.\n * [CheckedPopupMenuItem], a popup menu item with a checkmark.\n * [showMenu], a method to dynamically show a popup menu at a given location.", "detail": "", "kind": 7, "label": "PopupMenuButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that manages a pair of text selection handles.\n\nThe selection handles are displayed in the [Overlay] that most closely\nencloses the given [BuildContext].", "detail": "", "kind": 7, "label": "TextSelectionOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundSliderTickMarkShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of each [Slider] tick mark.\n\nTick marks are only displayed if the slider is discrete, which can be done\nby setting the [Slider.divisions] as non-null.\n\nIt paints a solid circle, centered in the on the track.\nThe color is determined by the [Slider]'s enabled state and track's active\nstates. These colors are defined in:\n [SliderThemeData.activeTrackColor],\n [SliderThemeData.inactiveTrackColor],\n [SliderThemeData.disabledActiveTrackColor],\n [SliderThemeData.disabledInactiveTrackColor].\n\nSee also:\n\n * [Slider], which includes tick marks defined by this shape.\n * [SliderTheme], which can be used to configure the tick mark shape of all\n sliders in a widget subtree.", "detail": "", "kind": 7, "label": "RoundSliderTickMarkShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Navigator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that manages a set of child widgets with a stack discipline.\n\nMany apps have a navigator near the top of their widget hierarchy in order\nto display their logical history using an [Overlay] with the most recently\nvisited pages visually on top of the older pages. Using this pattern lets\nthe navigator visually transition from one page to another by moving the widgets\naround in the overlay. Similarly, the navigator can be used to show a dialog\nby positioning the dialog widget above the current page.\n\n## Using the Navigator\n\nMobile apps typically reveal their contents via full-screen elements\ncalled \"screens\" or \"pages\". In Flutter these elements are called\nroutes and they're managed by a [Navigator] widget. The navigator\nmanages a stack of [Route] objects and provides methods for managing\nthe stack, like [Navigator.push] and [Navigator.pop].\n\n### Displaying a full-screen route\n\nAlthough you can create a navigator directly, it's most common to use\nthe navigator created by a [WidgetsApp] or a [MaterialApp] widget. You\ncan refer to that navigator with [Navigator.of].\n\nA [MaterialApp] is the simplest way to set things up. The [MaterialApp]'s\nhome becomes the route at the bottom of the [Navigator]'s stack. It is what\nyou see when the app is launched.\n\n```dart\nvoid main() {\n runApp(MaterialApp(home: MyAppHome()));\n}\n```\n\nTo push a new route on the stack you can create an instance of\n[MaterialPageRoute] with a builder function that creates whatever you\nwant to appear on the screen. For example:\n\n```dart\nNavigator.push(context, MaterialPageRoute(\n builder: (BuildContext context) {\n return Scaffold(\n appBar: AppBar(title: Text('My Page')),\n body: Center(\n child: FlatButton(\n child: Text('POP'),\n onPressed: () {\n Navigator.pop(context);\n },\n ),\n ),\n );\n },\n));\n```\n\nThe route defines its widget with a builder function instead of a\nchild widget because it will be built and rebuilt in different\ncontexts depending on when it's pushed and popped.\n\nAs you can see, the new route can be popped, revealing the app's home\npage, with the Navigator's pop method:\n\n```dart\nNavigator.pop(context);\n```\n\nIt usually isn't necessary to provide a widget that pops the Navigator\nin a route with a [Scaffold] because the Scaffold automatically adds a\n'back' button to its AppBar. Pressing the back button causes\n[Navigator.pop] to be called. On Android, pressing the system back\nbutton does the same thing.\n\n### Using named navigator routes\n\nMobile apps often manage a large number of routes and it's often\neasiest to refer to them by name. Route names, by convention,\nuse a path-like structure (for example, '/a/b/c').\nThe app's home page route is named '/' by default.\n\nThe [MaterialApp] can be created\nwith a [Map] which maps from a route's name to\na builder function that will create it. The [MaterialApp] uses this\nmap to create a value for its navigator's [onGenerateRoute] callback.\n\n```dart\nvoid main() {\n runApp(MaterialApp(\n home: MyAppHome(), // becomes the route named '/'\n routes: {\n '/a': (BuildContext context) => MyPage(title: 'page A'),\n '/b': (BuildContext context) => MyPage(title: 'page B'),\n '/c': (BuildContext context) => MyPage(title: 'page C'),\n },\n ));\n}\n```\n\nTo show a route by name:\n\n```dart\nNavigator.pushNamed(context, '/b');\n```\n\n### Routes can return a value\n\nWhen a route is pushed to ask the user for a value, the value can be\nreturned via the [pop] method's result parameter.\n\nMethods that push a route return a [Future]. The Future resolves when the\nroute is popped and the [Future]'s value is the [pop] method's `result`\nparameter.\n\nFor example if we wanted to ask the user to press 'OK' to confirm an\noperation we could `await` the result of [Navigator.push]:\n\n```dart\nbool value = await Navigator.push(context, MaterialPageRoute(\n builder: (BuildContext context) {\n return Center(\n child: GestureDetector(\n child: Text('OK'),\n onTap: () { Navigator.pop(context, true); }\n ),\n );\n }\n));\n```\n\nIf the user presses 'OK' then value will be true. If the user backs\nout of the route, for example by pressing the Scaffold's back button,\nthe value will be null.\n\nWhen a route is used to return a value, the route's type parameter must\nmatch the type of [pop]'s result. That's why we've used\n`MaterialPageRoute` instead of `MaterialPageRoute` or just\n`MaterialPageRoute`. (If you prefer to not specify the types, though, that's\nfine too.)\n\n### Popup routes\n\nRoutes don't have to obscure the entire screen. [PopupRoute]s cover the\nscreen with a [ModalRoute.barrierColor] that can be only partially opaque to\nallow the current screen to show through. Popup routes are \"modal\" because\nthey block input to the widgets below.\n\nThere are functions which create and show popup routes. For\nexample: [showDialog], [showMenu], and [showModalBottomSheet]. These\nfunctions return their pushed route's Future as described above.\nCallers can await the returned value to take an action when the\nroute is popped, or to discover the route's value.\n\nThere are also widgets which create popup routes, like [PopupMenuButton] and\n[DropdownButton]. These widgets create internal subclasses of PopupRoute\nand use the Navigator's push and pop methods to show and dismiss them.\n\n### Custom routes\n\nYou can create your own subclass of one of the widget library route classes\nlike [PopupRoute], [ModalRoute], or [PageRoute], to control the animated\ntransition employed to show the route, the color and behavior of the route's\nmodal barrier, and other aspects of the route.\n\nThe [PageRouteBuilder] class makes it possible to define a custom route\nin terms of callbacks. Here's an example that rotates and fades its child\nwhen the route appears or disappears. This route does not obscure the entire\nscreen because it specifies `opaque: false`, just as a popup route does.\n\n```dart\nNavigator.push(context, PageRouteBuilder(\n opaque: false,\n pageBuilder: (BuildContext context, _, __) {\n return Center(child: Text('My PageRoute'));\n },\n transitionsBuilder: (___, Animation animation, ____, Widget child) {\n return FadeTransition(\n opacity: animation,\n child: RotationTransition(\n turns: Tween(begin: 0.5, end: 1.0).animate(animation),\n child: child,\n ),\n );\n }\n));\n```\n\nThe page route is built in two parts, the \"page\" and the\n\"transitions\". The page becomes a descendant of the child passed to\nthe `transitionsBuilder` function. Typically the page is only built once,\nbecause it doesn't depend on its animation parameters (elided with `_`\nand `__` in this example). The transition is built on every frame\nfor its duration.\n\n### Nesting Navigators\n\nAn app can use more than one Navigator. Nesting one Navigator below\nanother Navigator can be used to create an \"inner journey\" such as tabbed\nnavigation, user registration, store checkout, or other independent journeys\nthat represent a subsection of your overall application.\n\n#### Real World Example\n\nIt is standard practice for iOS apps to use tabbed navigation where each\ntab maintains its own navigation history. Therefore, each tab has its own\n[Navigator], creating a kind of \"parallel navigation.\"\n\nIn addition to the parallel navigation of the tabs, it is still possible to\nlaunch full-screen pages that completely cover the tabs. For example: an\non-boarding flow, or an alert dialog. Therefore, there must exist a \"root\"\n[Navigator] that sits above the tab navigation. As a result, each of the\ntab's [Navigator]s are actually nested [Navigator]s sitting below a single\nroot [Navigator].\n\nThe nested [Navigator]s for tabbed navigation sit in [WidgetApp] and\n[CupertinoTabView], so you don't need to worry about nested [Navigator]s\nin this situation, but it's a real world example where nested [Navigator]s\nare used.\n\nThe following example demonstrates how a nested [Navigator] can be used to\npresent a standalone user registration journey.\n\nEven though this example uses two [Navigator]s to demonstrate nested\n[Navigator]s, a similar result is possible using only a single [Navigator].\n\nRun this example with `flutter run --route=/signup` to start it with\nthe signup flow instead of on the home page.\n\n```dart\nimport 'package:flutter/material.dart';\n```\n\n```dart\nvoid main() => runApp(new MyApp());\n```\n\n```dart\nclass MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Code Sample for Navigator',\n // MaterialApp contains our top-level Navigator\n initialRoute: '/',\n routes: {\n '/': (BuildContext context) => HomePage(),\n '/signup': (BuildContext context) => SignUpPage(),\n },\n );\n }\n}\n\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: Text('Home Page'),\n ),\n );\n }\n}\n\nclass CollectPersonalInfoPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: GestureDetector(\n onTap: () {\n // This moves from the personal info page to the credentials page,\n // replacing this page with that one.\n Navigator.of(context)\n .pushReplacementNamed('signup/choose_credentials');\n },\n child: Container(\n color: Colors.lightBlue,\n alignment: Alignment.center,\n child: Text('Collect Personal Info Page'),\n ),\n ),\n );\n }\n}\n\nclass ChooseCredentialsPage extends StatelessWidget {\n const ChooseCredentialsPage({\n this.onSignupComplete,\n });\n\n final VoidCallback onSignupComplete;\n\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: onSignupComplete,\n child: DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.pinkAccent,\n alignment: Alignment.center,\n child: Text('Choose Credentials Page'),\n ),\n ),\n );\n }\n}\n\nclass SignUpPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n // SignUpPage builds its own Navigator which ends up being a nested\n // Navigator in our app.\n return Navigator(\n initialRoute: 'signup/personal_info',\n onGenerateRoute: (RouteSettings settings) {\n WidgetBuilder builder;\n switch (settings.name) {\n case 'signup/personal_info':\n // Assume CollectPersonalInfoPage collects personal info and then\n // navigates to 'signup/choose_credentials'.\n builder = (BuildContext _) => CollectPersonalInfoPage();\n break;\n case 'signup/choose_credentials':\n // Assume ChooseCredentialsPage collects new credentials and then\n // invokes 'onSignupComplete()'.\n builder = (BuildContext _) => ChooseCredentialsPage(\n onSignupComplete: () {\n // Referencing Navigator.of(context) from here refers to the\n // top level Navigator because SignUpPage is above the\n // nested Navigator that it created. Therefore, this pop()\n // will pop the entire \"sign up\" journey and return to the\n // \"/\" route, AKA HomePage.\n Navigator.of(context).pop();\n },\n );\n break;\n default:\n throw Exception('Invalid route: ${settings.name}');\n }\n return MaterialPageRoute(builder: builder, settings: settings);\n },\n );\n }\n}\n```\n\n[Navigator.of] operates on the nearest ancestor [Navigator] from the given\n[BuildContext]. Be sure to provide a [BuildContext] below the intended\n[Navigator], especially in large [build] methods where nested [Navigator]s\nare created. The [Builder] widget can be used to access a [BuildContext] at\na desired location in the widget subtree.", "detail": "", "kind": 7, "label": "Navigator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverSafeArea", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that insets another sliver by sufficient padding to avoid\nintrusions by the operating system.\n\nFor example, this will indent the sliver by enough to avoid the status bar\nat the top of the screen.\n\nIt will also indent the sliver by the amount necessary to avoid The Notch\non the iPhone X, or other similar creative physical features of the\ndisplay.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\nSee also:\n\n * [SafeArea], for insetting widgets to avoid operating system intrusions.\n * [SliverPadding], for insetting slivers in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SliverSafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Checkbox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design checkbox.\n\nThe checkbox itself does not maintain any state. Instead, when the state of\nthe checkbox changes, the widget calls the [onChanged] callback. Most\nwidgets that use a checkbox will listen for the [onChanged] callback and\nrebuild the checkbox with a new [value] to update the visual appearance of\nthe checkbox.\n\nThe checkbox can optionally display three values - true, false, and null -\nif [tristate] is true. When [value] is null a dash is displayed. By default\n[tristate] is false and the checkbox's [value] must be true or false.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [CheckboxListTile], which combines this widget with a [ListTile] so that\n you can give the checkbox a label.\n * [Switch], a widget with semantics similar to [Checkbox].\n * [Radio], for selecting among a set of explicit values.\n * [Slider], for selecting a value in a range.\n * \n * ", "detail": "", "kind": 7, "label": "Checkbox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlatButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design \"flat button\".\n\nA flat button is a text label displayed on a (zero elevation) [Material]\nwidget that reacts to touches by filling with color.\n\nUse flat buttons on toolbars, in dialogs, or inline with other content but\noffset from that content with padding so that the button's presence is\nobvious. Flat buttons intentionally do not have visible borders and must\ntherefore rely on their position relative to other content for context. In\ndialogs and cards, they should be grouped together in one of the bottom\ncorners. Avoid using flat buttons where they would blend in with other\ncontent, for example in the middle of lists.\n\nMaterial design flat buttons have an all-caps label, some internal padding,\nand some defined dimensions. To have a part of your application be\ninteractive, with ink splashes, without also committing to these stylistic\nchoices, consider using [InkWell] instead.\n\nIf the [onPressed] callback is null, then the button will be disabled,\nwill not react to touch, and will be colored as specified by\nthe [disabledColor] property instead of the [color] property. If you are\ntrying to change the button's [color] and it is not having any effect, check\nthat you are passing a non-null [onPressed] handler.\n\nFlat buttons have a minimum size of 88.0 by 36.0 which can be overridden\nwith [ButtonTheme].\n\nThe [clipBehavior] argument must not be null.\n\n\nThis example shows a simple [FlatButton].\n\n```dart\nFlatButton(\n onPressed: () {\n /*...*/\n },\n child: Text(\n \"Flat Button\",\n ),\n)\n```\n\n\nThis example shows a [FlatButton] that is normally white-on-blue,\nwith splashes rendered in a different shade of blue.\nIt turns black-on-grey when disabled.\nThe button has 8px of padding on each side, and the text is 20px high.\n\n```dart\nFlatButton(\n color: Colors.blue,\n textColor: Colors.white,\n disabledColor: Colors.grey,\n disabledTextColor: Colors.black,\n padding: EdgeInsets.all(8.0),\n splashColor: Colors.blueAccent,\n onPressed: () {\n /*...*/\n },\n child: Text(\n \"Flat Button\",\n style: TextStyle(fontSize: 20.0),\n ),\n)\n```\n\nSee also:\n\n * [RaisedButton], a filled button whose material elevates when pressed.\n * [DropdownButton], which offers the user a choice of a number of options.\n * [SimpleDialogOption], which is used in [SimpleDialog]s.\n * [IconButton], to create buttons that just contain icons.\n * [InkWell], which implements the ink splash part of a flat button.\n * [RawMaterialButton], the widget this widget is based on.\n * ", "detail": "", "kind": 7, "label": "FlatButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "RenderObjectWidgets provide the configuration for [RenderObjectElement]s,\nwhich wrap [RenderObject]s, which provide the actual rendering of the\napplication.", "detail": "", "kind": 7, "label": "RenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that detects gestures described by the given gesture\nfactories.\n\nFor common gestures, use a [GestureRecognizer].\n[RawGestureDetector] is useful primarily when developing your\nown gesture recognizers.\n\nConfiguring the gesture recognizers requires a carefully constructed map, as\ndescribed in [gestures] and as shown in the example below.\n\n\nThis example shows how to hook up a [TapGestureRecognizer]. It assumes that\nthe code is being used inside a [State] object with a `_last` field that is\nthen displayed as the child of the gesture detector.\n\n```dart\nRawGestureDetector(\n gestures: {\n TapGestureRecognizer: GestureRecognizerFactoryWithHandlers(\n () => TapGestureRecognizer(),\n (TapGestureRecognizer instance) {\n instance\n ..onTapDown = (TapDownDetails details) { setState(() { _last = 'down'; }); }\n ..onTapUp = (TapUpDetails details) { setState(() { _last = 'up'; }); }\n ..onTap = () { setState(() { _last = 'tap'; }); }\n ..onTapCancel = () { setState(() { _last = 'cancel'; }); };\n },\n ),\n },\n child: Container(width: 300.0, height: 300.0, color: Colors.yellow, child: Text(_last)),\n)\n```\n\nSee also:\n\n * [GestureDetector], a less flexible but much simpler widget that does the same thing.\n * [Listener], a widget that reports raw pointer events.\n * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.", "detail": "", "kind": 7, "label": "RawGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedModeBanner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a [Banner] saying \"DEBUG\" when running in checked mode.\n[MaterialApp] builds one of these by default.\nDoes nothing in release mode.", "detail": "", "kind": 7, "label": "CheckedModeBanner" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Embeds an iOS view in the Widget hierarchy.\n\n\nEmbedding iOS views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\n\n\n\nConstruction of UIViews is done asynchronously, before the UIView is ready this widget paints\nnothing while maintaining the same layout constraints.", "detail": "", "kind": 7, "label": "UiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state for a scrolling container that animates items when they are\ninserted or removed.\n\nWhen an item is inserted with [insertItem] an animation begins running. The\nanimation is passed to [AnimatedList.itemBuilder] whenever the item's widget\nis needed.\n\nWhen an item is removed with [removeItem] its animation is reversed.\nThe removed item's animation is passed to the [removeItem] builder\nparameter.\n\nAn app that needs to insert or remove items in response to an event\ncan refer to the [AnimatedList]'s state with a global key:\n\n```dart\nGlobalKey listKey = GlobalKey();\n...\nAnimatedList(key: listKey, ...);\n...\nlistKey.currentState.insert(123);\n```\n\n[AnimatedList] item input handlers can also refer to their [AnimatedListState]\nwith the static [AnimatedList.of] method.", "detail": "", "kind": 7, "label": "AnimatedListState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the layout and behavior of a [BottomNavigationBar].\n\nSee also:\n\n * [BottomNavigationBar]\n * [BottomNavigationBarItem]\n * ", "detail": "", "kind": 13, "label": "BottomNavigationBarType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialRectCenterArcTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that interpolates a [Rect] by moving it along a circular arc from\n[begin]'s [Rect.center] to [end]'s [Rect.center] while interpolating the\nrectangle's width and height.\n\nThe arc that defines that center of the interpolated rectangle as it morphs\nfrom [begin] to [end] is a [MaterialPointArcTween].\n\nSee also:\n\n * [MaterialRectArcTween], A [Tween] that interpolates a [Rect] by having\n its opposite corners follow circular arcs.\n * [Tween], for a discussion on how to use interpolation objects.\n * [MaterialPointArcTween], the analogue for [Offset] interpolation.\n * [RectTween], which does a linear rectangle interpolation.\n * [Hero.createRectTween], which can be used to specify the tween that defines\n a hero's path.", "detail": "", "kind": 7, "label": "MaterialRectCenterArcTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dismissible", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that can be dismissed by dragging in the indicated [direction].\n\nDragging or flinging this widget in the [DismissDirection] causes the child\nto slide out of view. Following the slide animation, if [resizeDuration] is\nnon-null, the Dismissible widget animates its height (or width, whichever is\nperpendicular to the dismiss direction) to zero over the [resizeDuration].\n\n\nBackgrounds can be used to implement the \"leave-behind\" idiom. If a background\nis specified it is stacked behind the Dismissible's child and is exposed when\nthe child moves.\n\nThe widget calls the [onDismissed] callback either after its size has\ncollapsed to zero (if [resizeDuration] is non-null) or immediately after\nthe slide animation (if [resizeDuration] is null). If the Dismissible is a\nlist item, it must have a key that distinguishes it from the other items and\nits [onDismissed] callback must remove the item from the list.", "detail": "", "kind": 7, "label": "Dismissible" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionHandleType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Which type of selection handle to be displayed.\n\nWith mixed-direction text, both handles may be the same type. Examples:\n\n* LTR text: 'the <quick brown> fox':\n\n The '<' is drawn with the [left] type, the '>' with the [right]\n\n* RTL text: 'XOF <NWORB KCIUQ> EHT':\n\n Same as above.\n\n* mixed text: '<the NWOR<B KCIUQ fox'\n\n Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn\n with the [left] type.\n\nSee also:\n\n * [TextDirection], which discusses left-to-right and right-to-left text in\n more detail.", "detail": "", "kind": 13, "label": "TextSelectionHandleType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stack", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that positions its children relative to the edges of its box.\n\nThis class is useful if you want to overlap several children in a simple\nway, for example having some text and an image, overlaid with a gradient and\na button attached to the bottom.\n\nEach child of a [Stack] widget is either _positioned_ or _non-positioned_.\nPositioned children are those wrapped in a [Positioned] widget that has at\nleast one non-null property. The stack sizes itself to contain all the\nnon-positioned children, which are positioned according to [alignment]\n(which defaults to the top-left corner in left-to-right environments and the\ntop-right corner in right-to-left environments). The positioned children are\nthen placed relative to the stack according to their top, right, bottom, and\nleft properties.\n\nThe stack paints its children in order with the first child being at the\nbottom. If you want to change the order in which the children paint, you\ncan rebuild the stack with the children in the new order. If you reorder\nthe children in this way, consider giving the children non-null keys.\nThese keys will cause the framework to move the underlying objects for\nthe children to their new locations rather than recreate them at their\nnew location.\n\nFor more details about the stack layout algorithm, see [RenderStack].\n\nIf you want to lay a number of children out in a particular pattern, or if\nyou want to make a custom layout manager, you probably want to use\n[CustomMultiChildLayout] instead. In particular, when using a [Stack] you\ncan't position children relative to their size or the stack's own size.\n\n\nUsing a [Stack] you can position widgets over one another.\n\n```dart\nStack(\n children: [\n Container(\n width: 100,\n height: 100,\n color: Colors.red,\n ),\n Container(\n width: 90,\n height: 90,\n color: Colors.green,\n ),\n Container(\n width: 80,\n height: 80,\n color: Colors.blue,\n ),\n ],\n)\n```\n\n\nThis example shows how [Stack] can be used to enhance text visibility\nby adding gradient backdrops.\n\n```dart\nSizedBox(\n width: 250,\n height: 250,\n child: Stack(\n children: [\n Container(\n width: 250,\n height: 250,\n color: Colors.white,\n ),\n Container(\n padding: EdgeInsets.all(5.0),\n alignment: Alignment.bottomCenter,\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: [\n Colors.black.withAlpha(0),\n Colors.black12,\n Colors.black45\n ],\n ),\n ),\n child: Text(\n \"Foreground Text\",\n style: TextStyle(color: Colors.white, fontSize: 20.0),\n ),\n ),\n ],\n ),\n)\n```\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * [Flow], which provides paint-time control of its children using transform\n matrices.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Stack" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DayPicker", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays the days of a given month and allows choosing a day.\n\nThe days are arranged in a rectangular grid with one column for each day of\nthe week.\n\nThe day picker widget is rarely used directly. Instead, consider using\n[showDatePicker], which creates a date picker dialog.\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.\n * [showTimePicker], which shows a dialog that contains a material design\n time picker.", "detail": "", "kind": 7, "label": "DayPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that annotates the child semantics with an index.\n\nSemantic indexes are used by TalkBack/Voiceover to make announcements about\nthe current scroll state. Certain widgets like the [ListView] will\nautomatically provide a child index for building semantics. A user may wish\nto manually provide semantic indexes if not all child of the scrollable\ncontribute semantics.\n\n\nThe example below handles spacers in a scrollable that don't contribute\nsemantics. The automatic indexes would give the spaces a semantic index,\ncausing scroll announcements to erroneously state that there are four items\nvisible.\n\n```dart\nListView(\n addSemanticIndexes: false,\n semanticChildCount: 2,\n children: const [\n IndexedSemantics(index: 0, child: Text('First')),\n Spacer(),\n IndexedSemantics(index: 1, child: Text('Second')),\n Spacer(),\n ],\n)\n```\n\nSee also:\n\n * [CustomScrollView], for an explanation of index semantics.", "detail": "", "kind": 7, "label": "IndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridPaper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that draws a rectilinear grid of lines one pixel wide.\n\nUseful with a [Stack] for visualizing your layout along a grid.\n\nThe grid's origin (where the first primary horizontal line and the first\nprimary vertical line intersect) is at the top left of the widget.\n\nThe grid is drawn over the [child] widget.", "detail": "", "kind": 7, "label": "GridPaper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directionality", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that determines the ambient directionality of text and\ntext-direction-sensitive render objects.\n\nFor example, [Padding] depends on the [Directionality] to resolve\n[EdgeInsetsDirectional] objects into absolute [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "Directionality" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that paints a [Decoration] either before or after its child paints.\n\n[Container] insets its child by the widths of the borders; this widget does\nnot.\n\nCommonly used with [BoxDecoration].\n\nThe [child] is not clipped. To clip a child to the shape of a particular\n[ShapeDecoration], consider using a [ClipPath] widget.\n\n\nThis sample shows a radial gradient that draws a moon on a night sky:\n\n```dart\nDecoratedBox(\n decoration: BoxDecoration(\n gradient: RadialGradient(\n center: const Alignment(-0.5, -0.6),\n radius: 0.15,\n colors: [\n const Color(0xFFEEEEEE),\n const Color(0xFF111133),\n ],\n stops: [0.9, 1.0],\n ),\n ),\n)\n```\n\nSee also:\n\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * [DecoratedBoxTransition], the version of this class that animates on the\n [decoration] property.\n * [Decoration], which you can extend to provide other effects with\n [DecoratedBox].\n * [CustomPaint], another way to draw custom effects from the widget layer.", "detail": "", "kind": 7, "label": "DecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TappableChipAttributes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be tapped.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * ", "detail": "", "kind": 7, "label": "TappableChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelRadio", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An expansion panel that allows for radio-like functionality.\nThis means that at any given time, at most, one [ExpansionPanelRadio]\ncan remain expanded.\n\nA unique identifier [value] must be assigned to each panel.\nThis identifier allows the [ExpansionPanelList] to determine\nwhich [ExpansionPanelRadio] instance should be expanded.\n\nSee [ExpansionPanelList.radio] for a sample implementation.", "detail": "", "kind": 7, "label": "ExpansionPanelRadio" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Title", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that describes this app in the operating system.", "detail": "", "kind": 7, "label": "Title" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProgressIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for material design progress indicators.\n\nThis widget cannot be instantiated directly. For a linear progress\nindicator, see [LinearProgressIndicator]. For a circular progress indicator,\nsee [CircularProgressIndicator].\n\nSee also:\n\n * ", "detail": "", "kind": 7, "label": "ProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's orientation\n(distinct from the device orientation).\n\nSee also:\n\n * [LayoutBuilder], which exposes the complete constraints, not just the\n orientation.\n * [CustomSingleChildLayout], which positions its child during layout.\n * [CustomMultiChildLayout], with which you can define the precise layout\n of a list of children during the layout phase.\n * [MediaQueryData.orientation], which exposes whether the device is in\n landscape or portrait mode.", "detail": "", "kind": 7, "label": "OrientationBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expanded", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that expands a child of a [Row], [Column], or [Flex]\nso that the child fills the available space.\n\nUsing an [Expanded] widget makes a child of a [Row], [Column], or [Flex]\nexpand to fill the available space along the main axis (e.g., horizontally for\na [Row] or vertically for a [Column]). If multiple children are expanded,\nthe available space is divided among them according to the [flex] factor.\n\nAn [Expanded] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Expanded] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\n\nThis example shows how to use an [Expanded] widget in a [Column] so that\nit's middle child, a [Container] here, expands to fill the space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Column Sample'),\n ),\n body: Center(\n child: Column(\n children: [\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n Expanded(\n child: Container(\n color: Colors.blue,\n width: 100,\n ),\n ),\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n ],\n ),\n ),\n );\n}\n```\n\nThis example shows how to use an [Expanded] widget in a [Row] with multiple\nchildren expanded, utilizing the [flex] factor to prioritize available space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Row Sample'),\n ),\n body: Center(\n child: Row(\n children: [\n Expanded(\n flex: 2,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n Container(\n color: Colors.blue,\n height: 100,\n width: 50,\n ),\n Expanded(\n flex: 1,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Flexible], which does not force the child to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Expanded" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DayPeriod", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether the [TimeOfDay] is before or after noon.", "detail": "", "kind": 13, "label": "DayPeriod" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextFormField", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [FormField] that contains a [TextField].\n\nThis is a convenience widget that wraps a [TextField] widget in a\n[FormField].\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nWhen a [controller] is specified, its [TextEditingController.text]\ndefines the [initialValue]. If this [FormField] is part of a scrolling\ncontainer that lazily constructs its children, like a [ListView] or a\n[CustomScrollView], then a [controller] should be specified.\nThe controller's lifetime should be managed by a stateful widget ancestor\nof the scrolling container.\n\nIf a [controller] is not specified, [initialValue] can be used to give\nthe automatically generated controller an initial value.\n\nFor a documentation about the various parameters, see [TextField].\n\n\nCreates a [TextFormField] with an [InputDecoration] and validator function.\n\n```dart\nTextFormField(\n decoration: const InputDecoration(\n icon: Icon(Icons.person),\n hintText: 'What do people call you?',\n labelText: 'Name *',\n ),\n onSaved: (String value) {\n // This optional block of code can be used to run\n // code when the user saves the form.\n },\n validator: (String value) {\n return value.contains('@') ? 'Do not use the @ char.' : null;\n },\n)\n```\n\nSee also:\n\n * \n * [TextField], which is the underlying text field without the [Form]\n integration.\n * [InputDecorator], which shows the labels and other visual elements that\n surround the actual text editing widget.", "detail": "", "kind": 7, "label": "TextFormField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BallisticScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An activity that animates a scroll view based on a physics [Simulation].\n\nA [BallisticScrollActivity] is typically used when the user lifts their\nfinger off the screen to continue the scrolling gesture with the current velocity.\n\n[BallisticScrollActivity] is also used to restore a scroll view to a valid\nscroll offset when the geometry of the scroll view changes. In these\nsituations, the [Simulation] typically starts with a zero velocity.\n\nSee also:\n\n * [DrivenScrollActivity], which animates a scroll view based on a set of\n animation parameters.", "detail": "", "kind": 7, "label": "BallisticScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverAppBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design app bar that integrates with a [CustomScrollView].\n\nAn app bar consists of a toolbar and potentially other widgets, such as a\n[TabBar] and a [FlexibleSpaceBar]. App bars typically expose one or more\ncommon actions with [IconButton]s which are optionally followed by a\n[PopupMenuButton] for less common operations.\n\n\nSliver app bars are typically used as the first child of a\n[CustomScrollView], which lets the app bar integrate with the scroll view so\nthat it can vary in height according to the scroll offset or float above the\nother content in the scroll view. For a fixed-height app bar at the top of\nthe screen see [AppBar], which is used in the [Scaffold.appBar] slot.\n\nThe AppBar displays the toolbar widgets, [leading], [title], and\n[actions], above the [bottom] (if any). If a [flexibleSpace] widget is\nspecified then it is stacked behind the toolbar and the bottom widget.\n\n\nThis is an example that could be included in a [CustomScrollView]'s\n[CustomScrollView.slivers] list:\n\n```dart\nSliverAppBar(\n expandedHeight: 150.0,\n flexibleSpace: const FlexibleSpaceBar(\n title: Text('Available seats'),\n ),\n actions: [\n IconButton(\n icon: const Icon(Icons.add_circle),\n tooltip: 'Add new entry',\n onPressed: () { /* ... */ },\n ),\n ]\n)\n```\n\n## Animated Examples\n\nThe following animations show how app bars with different configurations\nbehave when a user scrolls up and then down again.\n\n* App bar with [floating]: false, [pinned]: false, [snap]: false:\n\n* App bar with [floating]: true, [pinned]: false, [snap]: false:\n\n* App bar with [floating]: true, [pinned]: false, [snap]: true:\n\n* App bar with [floating]: true, [pinned]: true, [snap]: false:\n\n* App bar with [floating]: true, [pinned]: true, [snap]: true:\n\n* App bar with [floating]: false, [pinned]: true, [snap]: false:\n\nThe property [snap] can only be set to true if [floating] is also true.\n\nSee also:\n\n * [CustomScrollView], which integrates the [SliverAppBar] into its\n scrolling.\n * [AppBar], which is a fixed-height app bar for use in [Scaffold.appBar].\n * [TabBar], which is typically placed in the [bottom] slot of the [AppBar]\n if the screen has multiple pages arranged in tabs.\n * [IconButton], which is used with [actions] to show buttons on the app bar.\n * [PopupMenuButton], to show a popup menu on the app bar, via [actions].\n * [FlexibleSpaceBar], which is used with [flexibleSpace] when the app bar\n can expand and collapse.\n * ", "detail": "", "kind": 7, "label": "SliverAppBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenVisitor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks passed to [AnimatedWidgetBaseState.forEachTween].", "detail": "(Tween tween, T targetValue, TweenConstructor constructor) → Tween", "kind": 7, "label": "TweenVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An action the user has requested the text input control to perform.\n\nEach action represents a logical meaning, and also configures the soft\nkeyboard to display a certain kind of action button. The visual appearance\nof the action button might differ between versions of the same OS.\n\nDespite the logical meaning of each action, choosing a particular\n[TextInputAction] does not necessarily cause any specific behavior to\nhappen. It is up to the developer to ensure that the behavior that occurs\nwhen an action button is pressed is appropriate for the action button chosen.\n\nFor example: If the user presses the keyboard action button on iOS when it\nreads \"Emergency Call\", the result should not be a focus change to the next\nTextField. This behavior is not logically appropriate for a button that says\n\"Emergency Call\".\n\nSee [EditableText] for more information about customizing action button\nbehavior.\n\nMost [TextInputAction]s are supported equally by both Android and iOS.\nHowever, there is not a complete, direct mapping between Android's IME input\ntypes and iOS's keyboard return types. Therefore, some [TextInputAction]s\nare inappropriate for one of the platforms. If a developer chooses an\ninappropriate [TextInputAction] when running in debug mode, an error will be\nthrown. If the same thing is done in release mode, then instead of sending\nthe inappropriate value, Android will use \"unspecified\" on the platform\nside and iOS will use \"default\" on the platform side.\n\nSee also:\n\n * [TextInput], which configures the platform's keyboard setup.\n * [EditableText], which invokes callbacks when the action button is pressed.", "detail": "", "kind": 13, "label": "TextInputAction" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two relative rects.\n\nThis class specializes the interpolation of [Tween] to\nuse [RelativeRect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RelativeRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonBarLayoutBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonTheme] and [ButtonThemeData] to define how the button bar\nshould size itself with either constraints or internal padding.", "detail": "", "kind": 13, "label": "ButtonBarLayoutBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkResponse", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An area of a [Material] that responds to touch. Has a configurable shape and\ncan be configured to clip splashes that extend outside its bounds or not.\n\nFor a variant of this widget that is specialized for rectangular areas that\nalways clip splashes, see [InkWell].\n\nAn [InkResponse] widget does two things when responding to a tap:\n\n * It starts to animate a _highlight_. The shape of the highlight is\n determined by [highlightShape]. If it is a [BoxShape.circle], the\n default, then the highlight is a circle of fixed size centered in the\n [InkResponse]. If it is [BoxShape.rectangle], then the highlight is a box\n the size of the [InkResponse] itself, unless [getRectCallback] is\n provided, in which case that callback defines the rectangle. The color of\n the highlight is set by [highlightColor].\n\n * Simultaneously, it starts to animate a _splash_. This is a growing circle\n initially centered on the tap location. If this is a [containedInkWell],\n the splash grows to the [radius] while remaining centered at the tap\n location. Otherwise, the splash migrates to the center of the box as it\n grows.\n\nThe following two diagrams show how [InkResponse] looks when tapped if the\n[highlightShape] is [BoxShape.circle] (the default) and [containedInkWell]\nis false (also the default).\n\nThe first diagram shows how it looks if the [InkResponse] is relatively\nlarge:\n\n![The highlight is a disc centered in the box, smaller than the child widget.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_response_large.png)\n\nThe second diagram shows how it looks if the [InkResponse] is small:\n\n![The highlight is a disc overflowing the box, centered on the child.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_response_small.png)\n\nThe main thing to notice from these diagrams is that the splashes happily\nexceed the bounds of the widget (because [containedInkWell] is false).\n\nThe following diagram shows the effect when the [InkResponse] has a\n[highlightShape] of [BoxShape.rectangle] with [containedInkWell] set to\ntrue. These are the values used by [InkWell].\n\n![The highlight is a rectangle the size of the box.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_well.png)\n\nThe [InkResponse] widget must have a [Material] widget as an ancestor. The\n[Material] widget is where the ink reactions are actually painted. This\nmatches the material design premise wherein the [Material] is what is\nactually reacting to touches by spreading ink.\n\nIf a Widget uses this class directly, it should include the following line\nat the top of its build function to call [debugCheckHasMaterial]:\n\n```dart\nassert(debugCheckHasMaterial(context));\n```\n\n## Troubleshooting\n\n### The ink splashes aren't visible!\n\nIf there is an opaque graphic, e.g. painted using a [Container], [Image], or\n[DecoratedBox], between the [Material] widget and the [InkResponse] widget,\nthen the splash won't be visible because it will be under the opaque graphic.\nThis is because ink splashes draw on the underlying [Material] itself, as\nif the ink was spreading inside the material.\n\nThe [Ink] widget can be used as a replacement for [Image], [Container], or\n[DecoratedBox] to ensure that the image or decoration also paints in the\n[Material] itself, below the ink.\n\nIf this is not possible for some reason, e.g. because you are using an\nopaque [CustomPaint] widget, alternatively consider using a second\n[Material] above the opaque widget but below the [InkResponse] (as an\nancestor to the ink response). The [MaterialType.transparency] material\nkind can be used for this purpose.\n\nSee also:\n\n * [GestureDetector], for listening for gestures without ink splashes.\n * [RaisedButton] and [FlatButton], two kinds of buttons in material design.\n * [IconButton], which combines [InkResponse] with an [Icon].", "detail": "", "kind": 7, "label": "InkResponse" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that has mutable state.\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\nA stateful widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\nStateful widgets are useful when the part of the user interface you are\ndescribing can change dynamically, e.g. due to having an internal\nclock-driven state, or depending on some system state. For compositions that\ndepend only on the configuration information in the object itself and the\n[BuildContext] in which the widget is inflated, consider using\n[StatelessWidget].\n\n\n[StatefulWidget] instances themselves are immutable and store their mutable\nstate either in separate [State] objects that are created by the\n[createState] method, or in objects to which that [State] subscribes, for\nexample [Stream] or [ChangeNotifier] objects, to which references are stored\nin final fields on the [StatefulWidget] itself.\n\nThe framework calls [createState] whenever it inflates a\n[StatefulWidget], which means that multiple [State] objects might be\nassociated with the same [StatefulWidget] if that widget has been inserted\ninto the tree in multiple places. Similarly, if a [StatefulWidget] is\nremoved from the tree and later inserted in to the tree again, the framework\nwill call [createState] again to create a fresh [State] object, simplifying\nthe lifecycle of [State] objects.\n\nA [StatefulWidget] keeps the same [State] object when moving from one\nlocation in the tree to another if its creator used a [GlobalKey] for its\n[key]. Because a widget with a [GlobalKey] can be used in at most one\nlocation in the tree, a widget that uses a [GlobalKey] has at most one\nassociated element. The framework takes advantage of this property when\nmoving a widget with a global key from one location in the tree to another\nby grafting the (unique) subtree associated with that widget from the old\nlocation to the new location (instead of recreating the subtree at the new\nlocation). The [State] objects associated with [StatefulWidget] are grafted\nalong with the rest of the subtree, which means the [State] object is reused\n(instead of being recreated) in the new location. However, in order to be\neligible for grafting, the widget must be inserted into the new location in\nthe same animation frame in which it was removed from the old location.\n\n## Performance considerations\n\nThere are two primary categories of [StatefulWidget]s.\n\nThe first is one which allocates resources in [State.initState] and disposes\nof them in [State.dispose], but which does not depend on [InheritedWidget]s\nor call [State.setState]. Such widgets are commonly used at the root of an\napplication or page, and communicate with subwidgets via [ChangeNotifier]s,\n[Stream]s, or other such objects. Stateful widgets following such a pattern\nare relatively cheap (in terms of CPU and GPU cycles), because they are\nbuilt once then never update. They can, therefore, have somewhat complicated\nand deep build methods.\n\nThe second category is widgets that use [State.setState] or depend on\n[InheritedWidget]s. These will typically rebuild many times during the\napplication's lifetime, and it is therefore important to minimize the impact\nof rebuilding such a widget. (They may also use [State.initState] or\n[State.didChangeDependencies] and allocate resources, but the important part\nis that they rebuild.)\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateful widget:\n\n * Push the state to the leaves. For example, if your page has a ticking\n clock, rather than putting the state at the top of the page and\n rebuilding the entire page each time the clock ticks, create a dedicated\n clock widget that only updates itself.\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. Ideally, a stateful widget would only create a\n single widget, and that widget would be a [RenderObjectWidget].\n (Obviously this isn't always practical, but the closer a widget gets to\n this ideal, the more efficient it will be.)\n\n * If a subtree does not change, cache the widget that represents that\n subtree and re-use it each time it can be used. It is massively more\n efficient for a widget to be re-used than for a new (but\n identically-configured) widget to be created. Factoring out the stateful\n part into a widget that takes a child argument is a common way of doing\n this.\n\n * Use `const` widgets where possible. (This is equivalent to caching a\n widget and re-using it.)\n\n * Avoid changing the depth of any created subtrees or changing the type of\n any widgets in the subtree. For example, rather than returning either the\n child or the child wrapped in an [IgnorePointer], always wrap the child\n widget in an [IgnorePointer] and control the [IgnorePointer.ignoring]\n property. This is because changing the depth of the subtree requires\n rebuilding, laying out, and painting the entire subtree, whereas just\n changing the property will require the least possible change to the\n render tree (in the case of [IgnorePointer], for example, no layout or\n repaint is necessary at all).\n\n * If the depth must be changed for some reason, consider wrapping the\n common parts of the subtrees in widgets that have a [GlobalKey] that\n remains consistent for the life of the stateful widget. (The\n [KeyedSubtree] widget may be useful for this purpose if no other widget\n can conveniently be assigned the key.)\n\n\nThis is a skeleton of a stateful widget subclass called `YellowBird`.\n\nIn this example. the [State] has no actual state. State is normally\nrepresented as private member fields. Also, normally widgets have more\nconstructor arguments, each of which corresponds to a `final` property.\n\n```dart\nclass YellowBird extends StatefulWidget {\n const YellowBird({ Key key }) : super(key: key);\n\n @override\n _YellowBirdState createState() => _YellowBirdState();\n}\n\nclass _YellowBirdState extends State {\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFFFFE306));\n }\n}\n```\n\nThis example shows the more generic widget `Bird` which can be given a\ncolor and a child, and which has some internal state with a method that\ncan be called to mutate it:\n\n```dart\nclass Bird extends StatefulWidget {\n const Bird({\n Key key,\n this.color = const Color(0xFFFFE306),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n _BirdState createState() => _BirdState();\n}\n\nclass _BirdState extends State {\n double _size = 1.0;\n\n void grow() {\n setState(() { _size += 0.1; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(\n color: widget.color,\n transform: Matrix4.diagonal3Values(_size, _size, 1.0),\n child: widget.child,\n );\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [State], where the logic behind a [StatefulWidget] is hosted.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatefulWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildListDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using an\nexplicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for slivers.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. Rather than receiving\ntheir children as an explicit [List], they receive their children using a\n[SliverChildDelegate].\n\nIt's uncommon to subclass [SliverChildDelegate]. Instead, consider using one\nof the existing subclasses that provide adaptors to builder callbacks or\nexplicit child lists.\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as in the\ncase of [SliverChildListDelegate]) or lazily provided ones (such as in the\ncase of [SliverChildBuilderDelegate]).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree, states\nand render objects are destroyed. A new child at the same position in the\nsliver will be lazily recreated along with new elements, states and render\nobjects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the sliver child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the sliver child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child widget\n subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the sliver child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the sliver keeps the child's\n render object (and by extension, its associated elements and states) in a\n cache list instead of destroying them. When scrolled back into view, the\n render object is repainted as-is (if it wasn't marked dirty in the\n interim).\n\n This only works if the [SliverChildDelegate] subclasses don't wrap the\n child widget subtree with other widgets such as [AutomaticKeepAlive] and\n [RepaintBoundary] via `addAutomaticKeepAlives` and\n `addRepaintBoundaries`.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default in\n [SliverChildListDelegate] or [SliverChildListDelegate]). Instead of\n unconditionally caching the child element subtree when scrolling\n off-screen like [KeepAlive], [AutomaticKeepAlive] can let whether to\n cache the subtree be determined by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its sliver child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the sliver child element subtree will be\n destroyed when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive by\n using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.", "detail": "", "kind": 7, "label": "SliverChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollIndicatorNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that an [GlowingOverscrollIndicator] will start showing an\noverscroll indication.\n\nTo prevent the indicator from showing the indication, call [disallowGlow] on\nthe notification.\n\nSee also:\n\n * [GlowingOverscrollIndicator], which generates this type of notification.", "detail": "", "kind": 7, "label": "OverscrollIndicatorNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OpenUpwardsPageTransitionsBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a vertical [MaterialPageRoute] page\ntransition animation that looks like the default page transition\nused on Android P.\n\nSee also:\n\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "OpenUpwardsPageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButtonAnimator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provider of animations to move the [FloatingActionButton] between [FloatingActionButtonLocation]s.\n\nThe [Scaffold] uses [Scaffold.floatingActionButtonAnimator] to define:\n\n * The [Offset] of the [FloatingActionButton] between the old and new\n [FloatingActionButtonLocation]s as part of the transition animation.\n * An [Animation] to scale the [FloatingActionButton] during the transition.\n * An [Animation] to rotate the [FloatingActionButton] during the transition.\n * Where to start a new animation from if an animation is interrupted.\n\nSee also:\n\n * [FloatingActionButton], which is a circular button typically shown in the\n bottom right corner of the app.\n * [FloatingActionButtonLocation], which the [Scaffold] uses to place the\n [Scaffold.floatingActionButton] within the [Scaffold]'s layout.", "detail": "", "kind": 7, "label": "FloatingActionButtonAnimator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that supports the Material \"swipe to refresh\" idiom.\n\nWhen the child's [Scrollable] descendant overscrolls, an animated circular\nprogress indicator is faded into view. When the scroll ends, if the\nindicator has been dragged far enough for it to become completely opaque,\nthe [onRefresh] callback is called. The callback is expected to update the\nscrollable's contents and then complete the [Future] it returns. The refresh\nindicator disappears after the callback's [Future] has completed.\n\nIf the [Scrollable] might not have enough content to overscroll, consider\nsettings its `physics` property to [AlwaysScrollableScrollPhysics]:\n\n```dart\nListView(\n physics: const AlwaysScrollableScrollPhysics(),\n children: ...\n```\n\nUsing [AlwaysScrollableScrollPhysics] will ensure that the scroll view is\nalways scrollable and, therefore, can trigger the [RefreshIndicator].\n\nA [RefreshIndicator] can only be used with a vertical scroll view.\n\nSee also:\n\n * \n * [RefreshIndicatorState], can be used to programmatically show the refresh indicator.\n * [RefreshProgressIndicator], widget used by [RefreshIndicator] to show\n the inner circular progress spinner during refreshes.\n * [CupertinoSliverRefreshControl], an iOS equivalent of the pull-to-refresh pattern.\n Must be used as a sliver inside a [CustomScrollView] instead of wrapping\n around a [ScrollView] because it's a part of the scrollable instead of\n being overlaid on top of it.", "detail": "", "kind": 7, "label": "RefreshIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReorderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The callback used by [ReorderableListView] to move an item to a new\nposition in a list.\n\nImplementations should remove the corresponding list item at [oldIndex]\nand reinsert it at [newIndex].\n\nIf [oldIndex] is before [newIndex], removing the item at [oldIndex] from the\nlist will reduce the list's length by one. Implementations used by\n[ReorderableListView] will need to account for this when inserting before\n[newIndex].\n\n\n```dart\nfinal List backingList = [/* ... */];\n\nvoid handleReorder(int oldIndex, int newIndex) {\n if (oldIndex < newIndex) {\n // removing the item at oldIndex will shorten the list by 1.\n newIndex -= 1;\n }\n final MyDataObject element = backingList.removeAt(oldIndex);\n backingList.insert(newIndex, element);\n}\n```", "detail": "(int oldIndex, int newIndex) → void", "kind": 7, "label": "ReorderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollbarPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [CustomPainter] for painting scrollbars.\n\nUnlike [CustomPainter]s that subclasses [CustomPainter] and only repaint\nwhen [shouldRepaint] returns true (which requires this [CustomPainter] to\nbe rebuilt), this painter has the added optimization of repainting and not\nrebuilding when:\n\n * the scroll position changes; and\n * when the scrollbar fades away.\n\nCalling [update] with the new [ScrollMetrics] will repaint the new scrollbar\nposition.\n\nUpdating the value on the provided [fadeoutOpacityAnimation] will repaint\nwith the new opacity.\n\nYou must call [dispose] on this [ScrollbarPainter] when it's no longer used.\n\nSee also:\n\n * [Scrollbar] for a widget showing a scrollbar around a [Scrollable] in the\n Material Design style.\n * [CupertinoScrollbar] for a widget showing a scrollbar around a\n [Scrollable] in the iOS style.", "detail": "", "kind": 7, "label": "ScrollbarPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeUpwardsPageTransitionsBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a default [MaterialPageRoute] page\ntransition animation.\n\nThe default animation fades the new page in while translating it upwards,\nstarting from about 25% below the top of the screen.\n\nSee also:\n\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "FadeUpwardsPageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design widget that displays a horizontal row of tabs.\n\nTypically created as the [AppBar.bottom] part of an [AppBar] and in\nconjunction with a [TabBarView].\n\nIf a [TabController] is not provided, then a [DefaultTabController] ancestor\nmust be provided instead. The tab controller's [TabController.length] must\nequal the length of the [tabs] list.\n\nRequires one of its ancestors to be a [Material] widget.\n\nUses values from [TabBarTheme] if it is set in the current context.\n\nSee also:\n\n * [TabBarView], which displays page views that correspond to each tab.", "detail": "", "kind": 7, "label": "TabBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListItemBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedList].", "detail": "(BuildContext context, int index, Animation animation) → Widget", "kind": 7, "label": "AnimatedListItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionControls", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for building the selection UI, to be provided by the\nimplementor of the toolbar widget.\n\nOverride text operations such as [handleCut] if needed.", "detail": "", "kind": 7, "label": "TextSelectionControls" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the opacity of a widget.\n\nFor a widget that automatically animates between the sizes of two children,\nfading between them, see [AnimatedCrossFade].\n\n\nHere's an illustration of the [FadeTransition] widget, with it's [opacity]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:", "detail": "", "kind": 7, "label": "FadeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that listens for [Notification]s bubbling up the tree.\n\nNotifications will trigger the [onNotification] callback only if their\n[runtimeType] is a subtype of `T`.\n\nTo dispatch notifications, use the [Notification.dispatch] method.", "detail": "", "kind": 7, "label": "NotificationListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics used by a [PageView].\n\nThese physics cause the page view to snap to page boundaries.\n\nSee also:\n\n * [ScrollPhysics], the base class which defines the API for scrolling\n physics.\n * [PageView.physics], which can override the physics used by a page view.", "detail": "", "kind": 7, "label": "PageScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Metrics for a [ScrollPosition] to a scroll view with fixed item sizes.\n\nThe metrics are available on [ScrollNotification]s generated from a scroll\nviews such as [ListWheelScrollView]s with a [FixedExtentScrollController] and\nexposes the current [itemIndex] and the scroll view's [itemExtent].\n\n`FixedExtent` refers to the fact that the scrollable items have the same size.\nThis is distinct from `Fixed` in the parent class name's [FixedScrollMetric]\nwhich refers to its immutability.", "detail": "", "kind": 7, "label": "FixedExtentMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper].\n * [ClipRRect], which can be customized with a [CustomClipper].\n * [ClipOval], which can be customized with a [CustomClipper].\n * [ClipPath], which can be customized with a [CustomClipper].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimeOfDay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A value representing a time during the day, independent of the date that\nday might fall on or the time zone.\n\nThe time is represented by [hour] and [minute] pair. Once created, both\nvalues cannot be changed.\n\nYou can create TimeOfDay using the constructor which requires both hour and\nminute or using [DateTime] object.\nHours are specified between 0 and 23, as in a 24-hour clock.\n\n\n```dart\nTimeOfDay now = TimeOfDay.now();\nTimeOfDay releaseTime = TimeOfDay(hour: 15, minute: 0); // 3:00pm\nTimeOfDay roomBooked = TimeOfDay.fromDateTime(DateTime.parse('2018-10-20 16:30:04Z')); // 4:30pm\n```\n\nSee also:\n\n * [showTimePicker], which returns this type.\n * [MaterialLocalizations], which provides methods for formatting values of\n this type according to the chosen [Locale].\n * [DateTime], which represents date and time, and is subject to eras and\n time zones.", "detail": "", "kind": 7, "label": "TimeOfDay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFade", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that cross-fades between two given children and animates itself\nbetween their sizes.\n\nThe animation is controlled through the [crossFadeState] parameter.\n[firstCurve] and [secondCurve] represent the opacity curves of the two\nchildren. The [firstCurve] is inverted, i.e. it fades out when providing a\ngrowing curve like [Curves.linear]. The [sizeCurve] is the curve used to\nanimate between the size of the fading-out child and the size of the\nfading-in child.\n\nThis widget is intended to be used to fade a pair of widgets with the same\nwidth. In the case where the two children have different heights, the\nanimation crops overflowing children during the animation by aligning their\ntop edge, which means that the bottom will be clipped.\n\nThe animation is automatically triggered when an existing\n[AnimatedCrossFade] is rebuilt with a different value for the\n[crossFadeState] property.\n\n\nThis code fades between two representations of the Flutter logo. It depends\non a boolean field `_first`; when `_first` is true, the first logo is shown,\notherwise the second logo is shown. When the field changes state, the\n[AnimatedCrossFade] widget cross-fades between the two forms of the logo\nover three seconds.\n\n```dart\nAnimatedCrossFade(\n duration: const Duration(seconds: 3),\n firstChild: const FlutterLogo(style: FlutterLogoStyle.horizontal, size: 100.0),\n secondChild: const FlutterLogo(style: FlutterLogoStyle.stacked, size: 100.0),\n crossFadeState: _first ? CrossFadeState.showFirst : CrossFadeState.showSecond,\n)\n```\n\nSee also:\n\n * [AnimatedSize], the lower-level widget which [AnimatedCrossFade] uses to\n automatically change size.\n * [AnimatedSwitcher], which switches out a child for a new one with a\n customizable transition.", "detail": "", "kind": 7, "label": "AnimatedCrossFade" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScriptCategory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A characterization of the of a [TextTheme]'s glyphs that is used to define\nits localized [TextStyle] geometry for [ThemeData.textTheme].\n\nThe script category defines the overall geometry of a [TextTheme] for\nthe static [MaterialTextGeometry.localizedFor] method in terms of the\nthree language categories defined in .\n\nGenerally speaking, font sizes for [ScriptCategory.tall] and\n[ScriptCategory.dense] scripts - for text styles that are smaller than the\ntitle style - are one unit larger than they are for\n[ScriptCategory.englishLike] scripts.", "detail": "", "kind": 13, "label": "ScriptCategory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tooltip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design tooltip.\n\nTooltips provide text labels that help explain the function of a button or\nother user interface action. Wrap the button in a [Tooltip] widget to\nshow a label when the widget long pressed (or when the user takes some\nother appropriate action).\n\n\nMany widgets, such as [IconButton], [FloatingActionButton], and\n[PopupMenuButton] have a `tooltip` property that, when non-null, causes the\nwidget to include a [Tooltip] in its build.\n\nTooltips improve the accessibility of visual widgets by proving a textual\nrepresentation of the widget, which, for example, can be vocalized by a\nscreen reader.\n\nSee also:\n\n * ", "detail": "", "kind": 7, "label": "Tooltip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrivenScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An activity that animates a scroll view based on animation parameters.\n\nFor example, a [DrivenScrollActivity] is used to implement\n[ScrollController.animateTo].\n\nSee also:\n\n * [BallisticScrollActivity], which animates a scroll view based on a\n physics [Simulation].", "detail": "", "kind": 7, "label": "DrivenScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Spacer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Spacer creates an adjustable, empty spacer that can be used to tune the\nspacing between widgets in a [Flex] container, like [Row] or [Column].\n\nThe [Spacer] widget will take up any available space, so setting the\n[Flex.mainAxisAlignment] on a flex container that contains a [Spacer] to\n[MainAxisAlignment.spaceAround], [MainAxisAlignment.spaceBetween], or\n[MainAxisAlignment.spaceEvenly] will not have any visible effect: the\n[Spacer] has taken up all of the additional space, therefore there is none\nleft to redistribute.\n\n\n```dart\nRow(\n children: [\n Text('Begin'),\n Spacer(), // Defaults to a flex of one.\n Text('Middle'),\n // Gives twice the space between Middle and End than Begin and Middle.\n Spacer(flex: 2),\n Text('End'),\n ],\n)\n```\n\nSee also:\n\n * [Row] and [Column], which are the most common containers to use a Spacer\n in.\n * [SizedBox], to create a box with a specific size and an optional child.", "detail": "", "kind": 7, "label": "Spacer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollStartNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has started scrolling.\n\nSee also:\n\n * [ScrollEndNotification], which indicates that scrolling has stopped.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollStartNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveHandle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Listenable] which can be manually triggered.\n\nUsed with [KeepAliveNotification] objects as their\n[KeepAliveNotification.handle].\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses a\n[KeepAliveHandle] internally.", "detail": "", "kind": 7, "label": "KeepAliveHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SafeArea", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that insets its child by sufficient padding to avoid intrusions by\nthe operating system.\n\nFor example, this will indent the child by enough to avoid the status bar at\nthe top of the screen.\n\nIt will also indent the child by the amount necessary to avoid The Notch on\nthe iPhone X, or other similar creative physical features of the display.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\n\nSee also:\n\n * [SliverSafeArea], for insetting slivers to avoid operating system\n intrusions.\n * [Padding], for insetting widgets in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTileControlAffinity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where to place the control in widgets that use [ListTile] to position a\ncontrol next to a label.\n\nSee also:\n\n * [CheckboxListTile], which combines a [ListTile] with a [Checkbox].\n * [RadioListTile], which combines a [ListTile] with a [Radio] button.", "detail": "", "kind": 13, "label": "ListTileControlAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedDefaultTextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [DefaultTextStyle] which automatically transitions the\ndefault text style (the text style to apply to descendant [Text] widgets\nwithout explicit style) over a given duration whenever the given style\nchanges.\n\nThe [textAlign], [softWrap], [textOverflow], and [maxLines] properties are\nnot animated and take effect immediately when changed.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].", "detail": "", "kind": 7, "label": "AnimatedDefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that composes other [Element]s.\n\nRather than creating a [RenderObject] directly, a [ComponentElement] creates\n[RenderObject]s indirectly by creating other [Element]s.\n\nContrast with [RenderObjectElement].", "detail": "", "kind": 7, "label": "ComponentElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialTapTargetSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures the tap target and layout size of certain Material widgets.\n\nChanging the value in [ThemeData.materialTapTargetSize] will affect the\naccessibility experience.\n\nSome of the impacted widgets include:\n\n * [FloatingActionButton], only the mini tap target size is increased.\n * [MaterialButton]\n * [OutlineButton]\n * [FlatButton]\n * [RaisedButton]\n * [TimePicker]\n * [SnackBar]\n * [Chip]\n * [RawChip]\n * [InputChip]\n * [ChoiceChip]\n * [FilterChip]\n * [ActionChip]\n * [Radio]\n * [Switch]\n * [Checkbox]", "detail": "", "kind": 13, "label": "MaterialTapTargetSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleListResolutionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.localeListResolutionCallback].\n\nA [LocaleListResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the list of\nlocales for the device.\n\nThe [locales] list is the device's preferred locales when the app started, or the\ndevice's preferred locales the user selected after the app was started. This list\nis in order of preference. If this list is null or empty, then Flutter has not yet\nreceived the locale information from the platform. The [supportedLocales] parameter\nis just the value of [WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleResolutionCallback], which takes only one default locale (instead of a list)\n and is attempted only after this callback fails or is null. [LocaleListResolutionCallback]\n is recommended over [LocaleResolutionCallback].", "detail": "(List locales, Iterable supportedLocales) → Locale", "kind": 7, "label": "LocaleListResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SnackBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A lightweight message with an optional action which briefly displays at the\nbottom of the screen.\n\nTo display a snack bar, call `Scaffold.of(context).showSnackBar()`, passing\nan instance of [SnackBar] that describes the message.\n\nTo control how long the [SnackBar] remains visible, specify a [duration].\n\nA SnackBar with an action will not time out when TalkBack or VoiceOver are\nenabled. This is controlled by [AccessibilityFeatures.accessibleNavigation].\n\nSee also:\n\n * [Scaffold.of], to obtain the current [ScaffoldState], which manages the\n display and animation of snack bars.\n * [ScaffoldState.showSnackBar], which displays a [SnackBar].\n * [ScaffoldState.removeCurrentSnackBar], which abruptly hides the currently\n displayed snack bar, if any, and allows the next to be displayed.\n * [SnackBarAction], which is used to specify an [action] button to show\n on the snack bar.\n * ", "detail": "", "kind": 7, "label": "SnackBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of a [Scrollable]'s contents, useful for modeling the state\nof its viewport.\n\nThis class defines a current position, [pixels], and a range of values\nconsidered \"in bounds\" for that position. The range has a minimum value at\n[minScrollExtent] and a maximum value at [maxScrollExtent] (inclusive). The\nviewport scrolls in the direction and axis described by [axisDirection]\nand [axis].\n\nThe [outOfRange] getter will return true if [pixels] is outside this defined\nrange. The [atEdge] getter will return true if the [pixels] position equals\neither the [minScrollExtent] or the [maxScrollExtent].\n\nThe dimensions of the viewport in the given [axis] are described by\n[viewportDimension].\n\nThe above values are also exposed in terms of [extentBefore],\n[extentInside], and [extentAfter], which may be more useful for use cases\nsuch as scroll bars; for example, see [Scrollbar].\n\nSee also:\n\n * [FixedScrollMetrics], which is an immutable object that implements this\n interface.", "detail": "", "kind": 7, "label": "ScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAliveClientMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin with convenience methods for clients of [AutomaticKeepAlive]. Used\nwith [State] subclasses.\n\nSubclasses must implement [wantKeepAlive], and their [build] methods must\ncall `super.build` (the return value will always return null, and should be\nignored).\n\nThen, whenever [wantKeepAlive]'s value changes (or might change), the\nsubclass should call [updateKeepAlive].\n\nThe type argument `T` is the type of the [StatefulWidget] subclass of the\n[State] into which this class is being mixed.\n\nSee also:\n\n * [AutomaticKeepAlive], which listens to messages from this mixin.\n * [KeepAliveNotification], the notifications sent by this mixin.", "detail": "", "kind": 7, "label": "AutomaticKeepAliveClientMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offstage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that lays the child out as if it was in the tree, but without\npainting anything, without making the child available for hit testing, and\nwithout taking any room in the parent.\n\nAnimations continue to run in offstage children, and therefore use battery\nand CPU time, regardless of whether the animations end up being visible.\n\n[Offstage] can be used to measure the dimensions of a widget without\nbringing it on screen (yet). To hide a widget from view while it is not\nneeded, prefer removing the widget from the tree entirely rather than\nkeeping it alive in an [Offstage] subtree.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly).\n * [TickerMode], which can be used to disable animations in a subtree.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Offstage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialGap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that represents a gap within [MergeableMaterial].\n\nAll [MaterialGap] objects need a [LocalKey].", "detail": "", "kind": 7, "label": "MaterialGap" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state of connection to an asynchronous computation.\n\nSee also:\n\n * [AsyncSnapshot], which augments a connection state with information\n received from the asynchronous computation.", "detail": "", "kind": 13, "label": "ConnectionState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [ParentDataWidget] as its configuration.", "detail": "", "kind": 7, "label": "ParentDataElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderToggleable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for material style toggleable controls with toggle animations.\n\nThis class handles storing the current value, dispatching ValueChanged on a\ntap gesture and driving a changed animation. Subclasses are responsible for\npainting.", "detail": "", "kind": 7, "label": "RenderToggleable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A viewport showing a subset of children on a wheel.\n\nTypically used with [ListWheelScrollView], this viewport is similar to\n[Viewport] in that it shows a subset of children in a scrollable based\non the scrolling offset and the children's dimensions. But uses\n[RenderListWheelViewport] to display the children on a wheel.\n\nSee also:\n\n * [ListWheelScrollView], widget that combines this viewport with a scrollable.\n * [RenderListWheelViewport], the render object that renders the children\n on a wheel.", "detail": "", "kind": 7, "label": "ListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that creates a widget, e.g. [StatelessWidget.build]\nor [State.build].\n\nUsed by [Builder.builder], [OverlayEntry.builder], etc.\n\nSee also:\n\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [TransitionBuilder], which is similar but also takes a child.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context) → Widget", "kind": 7, "label": "WidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the draggable is dropped.\n\nThe velocity and offset at which the pointer was moving when the draggable\nwas dropped is available in the [DraggableDetails]. Also included in the\n`details` is whether the draggable's [DragTarget] accepted it.\n\nUsed by [Draggable.onDragEnd]", "detail": "(DraggableDetails details) → void", "kind": 7, "label": "DragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewHeaderSliversBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [NestedScrollView] for building its header.\n\nThe `innerBoxIsScrolled` argument is typically used to control the\n[SliverAppBar.forceElevated] property to ensure that the app bar shows a\nshadow, since it would otherwise not necessarily be aware that it had\ncontent ostensibly below it.", "detail": "(BuildContext context, bool innerBoxIsScrolled) → List", "kind": 7, "label": "NestedScrollViewHeaderSliversBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialPageRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A modal route that replaces the entire screen with a platform-adaptive\ntransition.\n\nFor Android, the entrance transition for the page slides the page upwards\nand fades it in. The exit transition is the same, but in reverse.\n\nThe transition is adaptive to the platform and on iOS, the page slides in\nfrom the right and exits in reverse. The page also shifts to the left in\nparallax when another page enters to cover it. (These directions are flipped\nin environments with a right-to-left reading direction.)\n\nBy default, when a modal route is replaced by another, the previous route\nremains in memory. To free all the resources when this is not necessary, set\n[maintainState] to false.\n\nThe `fullscreenDialog` property specifies whether the incoming page is a\nfullscreen modal dialog. On iOS, those pages animate from the bottom to the\ntop rather than horizontally.\n\nThe type `T` specifies the return type of the route which can be supplied as\nthe route is popped from the stack via [Navigator.pop] by providing the\noptional `result` argument.\n\nSee also:\n\n * [PageTransitionsTheme], which defines the default page transitions used\n by [MaterialPageRoute.buildTransitions].", "detail": "", "kind": 7, "label": "MaterialPageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AspectRatio", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that attempts to size the child to a specific aspect ratio.\n\nThe widget first tries the largest width permitted by the layout\nconstraints. The height of the widget is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The widget will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the widget would\ncontinue iterating through the constraints. If the widget does not\nfind a feasible size after consulting each constraint, the widget\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "AspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A modal route that overlays a widget over the current route.", "detail": "", "kind": 7, "label": "PopupRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design app bar.\n\nAn app bar consists of a toolbar and potentially other widgets, such as a\n[TabBar] and a [FlexibleSpaceBar]. App bars typically expose one or more\ncommon [actions] with [IconButton]s which are optionally followed by a\n[PopupMenuButton] for less common operations (sometimes called the \"overflow\nmenu\").\n\nApp bars are typically used in the [Scaffold.appBar] property, which places\nthe app bar as a fixed-height widget at the top of the screen. For a\nscrollable app bar, see [SliverAppBar], which embeds an [AppBar] in a sliver\nfor use in a [CustomScrollView].\n\nThe AppBar displays the toolbar widgets, [leading], [title], and [actions],\nabove the [bottom] (if any). The [bottom] is usually used for a [TabBar]. If\na [flexibleSpace] widget is specified then it is stacked behind the toolbar\nand the bottom widget. The following diagram shows where each of these slots\nappears in the toolbar when the writing language is left-to-right (e.g.\nEnglish):\n\n![The leading widget is in the top left, the actions are in the top right,\nthe title is between them. The bottom is, naturally, at the bottom, and the\nflexibleSpace is behind all of them.](https://flutter.github.io/assets-for-api-docs/assets/material/app_bar.png)\n\nIf the [leading] widget is omitted, but the [AppBar] is in a [Scaffold] with\na [Drawer], then a button will be inserted to open the drawer. Otherwise, if\nthe nearest [Navigator] has any previous routes, a [BackButton] is inserted\ninstead. This behavior can be turned off by setting the [automaticallyImplyLeading]\nto false. In that case a null leading widget will result in the middle/title widget\nstretching to start.\n\n\n```dart\nAppBar(\n title: Text('My Fancy Dress'),\n actions: [\n IconButton(\n icon: Icon(Icons.playlist_play),\n tooltip: 'Air it',\n onPressed: _airDress,\n ),\n IconButton(\n icon: Icon(Icons.playlist_add),\n tooltip: 'Restitch it',\n onPressed: _restitchDress,\n ),\n IconButton(\n icon: Icon(Icons.playlist_add_check),\n tooltip: 'Repair it',\n onPressed: _repairDress,\n ),\n ],\n)\n```\n\nSee also:\n\n * [Scaffold], which displays the [AppBar] in its [Scaffold.appBar] slot.\n * [SliverAppBar], which uses [AppBar] to provide a flexible app bar that\n can be used in a [CustomScrollView].\n * [TabBar], which is typically placed in the [bottom] slot of the [AppBar]\n if the screen has multiple pages arranged in tabs.\n * [IconButton], which is used with [actions] to show buttons on the app bar.\n * [PopupMenuButton], to show a popup menu on the app bar, via [actions].\n * [FlexibleSpaceBar], which is used with [flexibleSpace] when the app bar\n can expand and collapse.\n * ", "detail": "", "kind": 7, "label": "AppBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Feedback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides platform-specific acoustic and/or haptic feedback for certain\nactions.\n\nFor example, to play the Android-typically click sound when a button is\ntapped, call [forTap]. For the Android-specific vibration when long pressing\nan element, call [forLongPress]. Alternatively, you can also wrap your\n[GestureDetector.onTap] or [GestureDetector.onLongPress] callback in\n[wrapForTap] or [wrapForLongPress] to achieve the same (see example code\nbelow).\n\nCalling any of these methods is a no-op on iOS as actions on that platform\ntypically don't provide haptic or acoustic feedback.\n\nAll methods in this class are usually called from within a\n[StatelessWidget.build] method or from a [State]'s methods as you have to\nprovide a [BuildContext].\n\n\nTo trigger platform-specific feedback before executing the actual callback:\n\n```dart\nclass WidgetWithWrappedHandler extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: Feedback.wrapForTap(_onTapHandler, context),\n onLongPress: Feedback.wrapForLongPress(_onLongPressHandler, context),\n child: const Text('X'),\n );\n }\n\n void _onTapHandler() {\n // Respond to tap.\n }\n\n void _onLongPressHandler() {\n // Respond to long press.\n }\n}\n```\n\nAlternatively, you can also call [forTap] or [forLongPress] directly within\nyour tap or long press handler:\n\n```dart\nclass WidgetWithExplicitCall extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: () {\n // Do some work (e.g. check if the tap is valid)\n Feedback.forTap(context);\n // Do more work (e.g. respond to the tap)\n },\n onLongPress: () {\n // Do some work (e.g. check if the long press is valid)\n Feedback.forLongPress(context);\n // Do more work (e.g. respond to the long press)\n },\n child: const Text('X'),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "Feedback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for building the widget representing the form field.\n\nUsed by [FormField.builder].", "detail": "(FormFieldState field) → Widget", "kind": 7, "label": "FormFieldBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridTileBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A header used in a material design [GridTile].\n\nTypically used to add a one or two line header or footer on a [GridTile].\n\nFor a one-line header, include a [title] widget. To add a second line, also\ninclude a [subtitle] widget. Use [leading] or [trailing] to add an icon.\n\nSee also:\n\n * [GridTile]\n * ", "detail": "", "kind": 7, "label": "GridTileBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Builder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A platonic widget that calls a closure to obtain its child widget.\n\nSee also:\n\n * [StatefulBuilder], a platonic widget which also has state.", "detail": "", "kind": 7, "label": "Builder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A decoration on a part of a [Material].\n\nThis object is rarely created directly. Instead of creating an ink\ndecoration directly, consider using an [Ink] widget, which uses this class\nin combination with [Padding] and [ConstrainedBox] to draw a decoration on a\n[Material].\n\nSee also:\n\n * [Ink], the corresponding widget.\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink is painted.", "detail": "", "kind": 7, "label": "InkDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Center", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that centers its child within itself.\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\nSee also:\n\n * [Align], which lets you arbitrarily position a child within itself,\n rather than just centering it.\n * [Row], a widget that displays its children in a horizontal array.\n * [Column], a widget that displays its children in a vertical array.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Center" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Text", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A run of text with a single style.\n\nThe [Text] widget displays a string of text with single style. The string\nmight break across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nThe [style] argument is optional. When omitted, the text will use the style\nfrom the closest enclosing [DefaultTextStyle]. If the given style's\n[TextStyle.inherit] property is true (the default), the given style will\nbe merged with the closest enclosing [DefaultTextStyle]. This merging\nbehavior is useful, for example, to make the text bold while using the\ndefault font family and size.\n\n\n```dart\nText(\n 'Hello, $_name! How are you?',\n textAlign: TextAlign.center,\n overflow: TextOverflow.ellipsis,\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\nUsing the [Text.rich] constructor, the [Text] widget can\ndisplay a paragraph with differently styled [TextSpan]s. The sample\nthat follows displays \"Hello beautiful world\" with different styles\nfor each word.\n\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'Hello', // default text style\n children: [\n TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),\n TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),\n ],\n ),\n)\n```\n\n## Interactivity\n\nTo make [Text] react to touch events, wrap it in a [GestureDetector] widget\nwith a [GestureDetector.onTap] handler.\n\nIn a material design application, consider using a [FlatButton] instead, or\nif that isn't appropriate, at least using an [InkWell] instead of\n[GestureDetector].\n\nTo make sections of the text interactive, use [RichText] and specify a\n[TapGestureRecognizer] as the [TextSpan.recognizer] of the relevant part of\nthe text.\n\nSee also:\n\n * [RichText], which gives you more control over the text styles.\n * [DefaultTextStyle], which sets default styles for [Text] widgets.", "detail": "", "kind": 7, "label": "Text" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes and positions children efficiently, according to the\nlogic in a [FlowDelegate].\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow, which happens\nwithout the children being laid out again (contrast this with a [Stack],\nwhich does the sizing and positioning together during layout).\n\nThe most efficient way to trigger a repaint of the flow is to supply an\nanimation to the constructor of the [FlowDelegate]. The flow will listen to\nthis animation and repaint whenever the animation ticks, avoiding both the\nbuild and layout phases of the pipeline.\n\nSee also:\n\n * [Wrap], which provides the layout model that some other frameworks call\n \"flow\", and is otherwise unrelated to [Flow].\n * [FlowDelegate], which controls the visual presentation of the children.\n * [Stack], which arranges children relative to the edges of the container.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A platonic widget that both has state and calls a closure to obtain its child widget.\n\nSee also:\n\n * [Builder], the platonic stateless widget.", "detail": "", "kind": 7, "label": "StatefulBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A bridge from a [RenderObject] to an [Element] tree.\n\nThe given container is the [RenderObject] that the [Element] tree should be\ninserted into. It must be a [RenderObject] that implements the\n[RenderObjectWithChildMixin] protocol. The type argument `T` is the kind of\n[RenderObject] that the container expects as its child.\n\nUsed by [runApp] to bootstrap applications.", "detail": "", "kind": 7, "label": "RenderObjectToWidgetAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Geometry information for [Scaffold] components after layout is finished.\n\nTo get a [ValueNotifier] for the scaffold geometry of a given\n[BuildContext], use [Scaffold.geometryOf].\n\nThe ScaffoldGeometry is only available during the paint phase, because\nits value is computed during the animation and layout phases prior to painting.\n\nFor an example of using the [ScaffoldGeometry], see the [BottomAppBar],\nwhich uses the [ScaffoldGeometry] to paint a notch around the\n[FloatingActionButton].\n\nFor information about the [Scaffold]'s geometry that is used while laying\nout the [FloatingActionButton], see [ScaffoldPrelayoutGeometry].", "detail": "", "kind": 7, "label": "ScaffoldGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridTile", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A tile in a material design grid list.\n\nA grid list is a [GridView] of tiles in a vertical and horizontal\narray. Each tile typically contains some visually rich content (e.g., an\nimage) together with a [GridTileBar] in either a [header] or a [footer].\n\nSee also:\n\n * [GridView], which is a scrollable grid of tiles.\n * [GridTileBar], which is typically used in either the [header] or\n [footer].\n * ", "detail": "", "kind": 7, "label": "GridTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LimitedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box that limits its size only when it's unconstrained.\n\nIf this widget's maximum width is unconstrained then its child's width is\nlimited to [maxWidth]. Similarly, if this widget's maximum height is\nunconstrained then its child's height is limited to [maxHeight].\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).\n\nSee also:\n\n * [ConstrainedBox], which applies its constraints in all cases, not just\n when the incoming constraints are unbounded.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "LimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialRectArcTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that interpolates a [Rect] by having its opposite corners follow\ncircular arcs.\n\nThis class specializes the interpolation of [Tween] so that instead of\ngrowing or shrinking linearly, opposite corners of the rectangle follow arcs\nin a manner consistent with material design principles.\n\nSpecifically, the rectangle corners whose diagonals are closest to the overall\ndirection of the animation follow arcs defined with [MaterialPointArcTween].\n\nSee also:\n\n * [MaterialRectCenterArcTween], which interpolates a rect along a circular\n arc between the begin and end [Rect]'s centers.\n * [Tween], for a discussion on how to use interpolation objects.\n * [MaterialPointArcTween], the analogue for [Offset] interpolation.\n * [RectTween], which does a linear rectangle interpolation.\n * [Hero.createRectTween], which can be used to specify the tween that defines\n a hero's path.", "detail": "", "kind": 7, "label": "MaterialRectArcTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncSnapshot", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Immutable representation of the most recent interaction with an asynchronous\ncomputation.\n\nSee also:\n\n * [StreamBuilder], which builds itself based on a snapshot from interacting\n with a [Stream].\n * [FutureBuilder], which builds itself based on a snapshot from interacting\n with a [Future].", "detail": "", "kind": 7, "label": "AsyncSnapshot" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultAssetBundle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that determines the default asset bundle for its descendants.\n\nFor example, used by [Image] to determine which bundle to use for\n[AssetImage]s if no bundle is specified explicitly.\n\n\nThis can be used in tests to override what the current asset bundle is, thus\nallowing specific resources to be injected into the widget under test.\n\nFor example, a test could create a test asset bundle like this:\n\n```dart\nclass TestAssetBundle extends CachingAssetBundle {\n @override\n Future load(String key) async {\n if (key == 'resources/test')\n return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);\n return null;\n }\n}\n```\n\n...then wrap the widget under test with a [DefaultAssetBundle] using this\nbundle implementation:\n\n```dart\nawait tester.pumpWidget(\n MaterialApp(\n home: DefaultAssetBundle(\n bundle: TestAssetBundle(),\n child: TestWidget(),\n ),\n ),\n);\n```\n\nAssuming that `TestWidget` uses [DefaultAssetBundle.of] to obtain its\n[AssetBundle], it will now see the [TestAssetBundle]'s \"Hello World!\" data\nwhen requesting the \"resources/test\" asset.\n\nSee also:\n\n * [AssetBundle], the interface for asset bundles.\n * [rootBundle], the default default asset bundle.", "detail": "", "kind": 7, "label": "DefaultAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChipTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a chip theme to descendant [RawChip]-based widgets, like [Chip],\n[InputChip], [ChoiceChip], [FilterChip], and [ActionChip].\n\nA chip theme describes the color, shape and text styles for the chips it is\napplied to\n\nDescendant widgets obtain the current theme's [ChipThemeData] object using\n[ChipTheme.of]. When a widget uses [ChipTheme.of], it is automatically\nrebuilt if the theme later changes.\n\nThe [ThemeData] object given by the [Theme.of] call also contains a default\n[Theme.chipTheme] that can be customized by copying it (using\n[ChipThemeData.copyWith]).\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [ChipThemeData], which describes the actual configuration of a chip\n theme.\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "ChipTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataTable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design data table.\n\nDisplaying data in a table is expensive, because to lay out the\ntable all the data must be measured twice, once to negotiate the\ndimensions to use for each column, and once to actually lay out\nthe table given the results of the negotiation.\n\nFor this reason, if you have a lot of data (say, more than a dozen\nrows with a dozen columns, though the precise limits depend on the\ntarget device), it is suggested that you use a\n[PaginatedDataTable] which automatically splits the data into\nmultiple pages.\n\nSee also:\n\n * [DataColumn], which describes a column in the data table.\n * [DataRow], which contains the data for a row in the data table.\n * [DataCell], which contains the data for a single cell in the data table.\n * [PaginatedDataTable], which shows part of the data in a data table and\n provides controls for paging through the remainder of the data.\n * ", "detail": "", "kind": 7, "label": "DataTable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Banner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a diagonal message above the corner of another widget.\n\nUseful for showing the execution mode of an app (e.g., that asserts are\nenabled.)\n\nSee also:\n\n * [CheckedModeBanner], which the [WidgetsApp] widget includes by default in\n debug mode, to show a banner that says \"DEBUG\".", "detail": "", "kind": 7, "label": "Banner" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppBarTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [AppBar] widgets.\n\nDescendant widgets obtain the current [AppBarTheme] object using\n`AppBarTheme.of(context)`. Instances of [AppBarTheme] can be customized\nwith [AppBarTheme.copyWith].\n\nTypically an [AppBarTheme] is specified as part of the overall [Theme] with\n[ThemeData.appBarTheme].\n\nAll [AppBarTheme] properties are `null` by default. When null, the [AppBar]\nwill use the values from [ThemeData] if they exist, otherwise it will\nprovide its own defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "AppBarTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetectorState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [RawGestureDetector].", "detail": "", "kind": 7, "label": "RawGestureDetectorState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [ProxyWidget] as its configuration.", "detail": "", "kind": 7, "label": "ProxyElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that's called when an [ExpansionPanel] is\nexpanded or collapsed.\n\nThe position of the panel within an [ExpansionPanelList] is given by\n[panelIndex].", "detail": "(int panelIndex, bool isExpanded) → void", "kind": 7, "label": "ExpansionPanelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTile", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single fixed-height row that typically contains some text as well as\na leading or trailing icon.\n\nA list tile contains one to three lines of text optionally flanked by icons or\nother widgets, such as check boxes. The icons (or other widgets) for the\ntile are defined with the [leading] and [trailing] parameters. The first\nline of text is not optional and is specified with [title]. The value of\n[subtitle], which _is_ optional, will occupy the space allocated for an\nadditional line of text, or two lines if [isThreeLine] is true. If [dense]\nis true then the overall height of this tile and the size of the\n[DefaultTextStyle]s that wrap the [title] and [subtitle] widget are reduced.\n\nIt is the responsibility of the caller to ensure that [title] does not wrap,\nand to ensure that [subtitle] doesn't wrap (if [isThreeLine] is false) or\nwraps to two lines (if it is true).\n\nThe heights of the [leading] and [trailing] widgets are constrained\naccording to the\n[Material spec](https://material.io/design/components/lists.html).\nAn exception is made for one-line ListTiles for accessibility. Please\nsee the example below to see how to adhere to both Material spec and\naccessibility requirements.\n\nNote that [leading] and [trailing] widgets can expand as far as they wish\nhorizontally, so ensure that they are properly constrained.\n\nList tiles are typically used in [ListView]s, or arranged in [Column]s in\n[Drawer]s and [Card]s.\n\nRequires one of its ancestors to be a [Material] widget.\n\n\nThis example uses a [ListView] to demonstrate different configurations of\n[ListTile]s in [Card]s.\n\n![Different variations of ListTile](https://flutter.github.io/assets-for-api-docs/assets/material/list_tile.png)\n\n```dart\nListView(\n children: const [\n Card(child: ListTile(title: Text('One-line ListTile'))),\n Card(\n child: ListTile(\n leading: FlutterLogo(),\n title: Text('One-line with leading widget'),\n ),\n ),\n Card(\n child: ListTile(\n title: Text('One-line with trailing widget'),\n trailing: Icon(Icons.more_vert),\n ),\n ),\n Card(\n child: ListTile(\n leading: FlutterLogo(),\n title: Text('One-line with both widgets'),\n trailing: Icon(Icons.more_vert),\n ),\n ),\n Card(\n child: ListTile(\n title: Text('One-line dense ListTile'),\n dense: true,\n ),\n ),\n Card(\n child: ListTile(\n leading: FlutterLogo(size: 56.0),\n title: Text('Two-line ListTile'),\n subtitle: Text('Here is a second line'),\n trailing: Icon(Icons.more_vert),\n ),\n ),\n Card(\n child: ListTile(\n leading: FlutterLogo(size: 72.0),\n title: Text('Three-line ListTile'),\n subtitle: Text(\n 'A sufficiently long subtitle warrants three lines.'\n ),\n trailing: Icon(Icons.more_vert),\n isThreeLine: true,\n ),\n ),\n ],\n)\n```\n\nTiles can be much more elaborate. Here is a tile which can be tapped, but\nwhich is disabled when the `_act` variable is not 2. When the tile is\ntapped, the whole row has an ink splash effect (see [InkWell]).\n\n```dart\nint _act = 1;\n// ...\nListTile(\n leading: const Icon(Icons.flight_land),\n title: const Text('Trix\\'s airplane'),\n subtitle: _act != 2 ? const Text('The airplane is only in Act II.') : null,\n enabled: _act == 2,\n onTap: () { /* react to the tile being tapped */ }\n)\n```\n\nTo be accessible, tappable [leading] and [trailing] widgets have to\nbe at least 48x48 in size. However, to adhere to the Material spec,\n[trailing] and [leading] widgets in one-line ListTiles should visually be\nat most 32 ([dense]: true) or 40 ([dense]: false) in height, which may\nconflict with the accessibility requirement.\n\nFor this reason, a one-line ListTile allows the height of [leading]\nand [trailing] widgets to be constrained by the height of the ListTile.\nThis allows for the creation of tappable [leading] and [trailing] widgets\nthat are large enough, but it is up to the developer to ensure that\ntheir widgets follow the Material spec.\n\n\nHere is an example of a one-line, non-[dense] ListTile with a\ntappable leading widget that adheres to accessibility requirements and\nthe Material spec. To adjust the use case below for a one-line, [dense]\nListTile, adjust the vertical padding to 8.0.\n\n```dart\nListTile(\n leading: GestureDetector(\n behavior: HitTestBehavior.translucent,\n onTap: () {},\n child: Container(\n width: 48,\n height: 48,\n padding: EdgeInsets.symmetric(vertical: 4.0),\n alignment: Alignment.center,\n child: CircleAvatar(),\n ),\n ),\n title: Text('title'),\n dense: false,\n),\n```\n\n## The ListTile layout isn't exactly what I want\n\nIf the way ListTile pads and positions its elements isn't quite what\nyou're looking for, it's easy to create custom list items with a\ncombination of other widgets, such as [Row]s and [Column]s.\n\n\nHere is an example of a custom list item that resembles a Youtube related\nvideo list item created with [Expanded] and [Container] widgets.\n\n![Custom list item a](https://flutter.github.io/assets-for-api-docs/assets/widgets/custom_list_item_a.png)\n\n```dart\nclass CustomListItem extends StatelessWidget {\n const CustomListItem({\n this.thumbnail,\n this.title,\n this.user,\n this.viewCount,\n });\n\n final Widget thumbnail;\n final String title;\n final String user;\n final int viewCount;\n\n @override\n Widget build(BuildContext context) {\n return Padding(\n padding: const EdgeInsets.symmetric(vertical: 5.0),\n child: Row(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: [\n Expanded(\n flex: 2,\n child: thumbnail,\n ),\n Expanded(\n flex: 3,\n child: _VideoDescription(\n title: title,\n user: user,\n viewCount: viewCount,\n ),\n ),\n const Icon(\n Icons.more_vert,\n size: 16.0,\n ),\n ],\n ),\n );\n }\n}\n\nclass _VideoDescription extends StatelessWidget {\n const _VideoDescription({\n Key key,\n this.title,\n this.user,\n this.viewCount,\n }) : super(key: key);\n\n final String title;\n final String user;\n final int viewCount;\n\n @override\n Widget build(BuildContext context) {\n return Padding(\n padding: const EdgeInsets.fromLTRB(5.0, 0.0, 0.0, 0.0),\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: [\n Text(\n title,\n style: const TextStyle(\n fontWeight: FontWeight.w500,\n fontSize: 14.0,\n ),\n ),\n const Padding(padding: EdgeInsets.symmetric(vertical: 2.0)),\n Text(\n user,\n style: const TextStyle(fontSize: 10.0),\n ),\n const Padding(padding: EdgeInsets.symmetric(vertical: 1.0)),\n Text(\n '$viewCount views',\n style: const TextStyle(fontSize: 10.0),\n ),\n ],\n ),\n );\n }\n}\n```\n\n```dart\nWidget build(BuildContext context) {\n return ListView(\n padding: const EdgeInsets.all(8.0),\n itemExtent: 106.0,\n children: [\n CustomListItem(\n user: 'Flutter',\n viewCount: 999000,\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.blue),\n ),\n title: 'The Flutter YouTube Channel',\n ),\n CustomListItem(\n user: 'Dash',\n viewCount: 884000,\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.yellow),\n ),\n title: 'Announcing Flutter 1.0',\n ),\n ],\n );\n}\n```\n\n\nHere is an example of an article list item with multi-line titles and\nsubtitles. It utilizes [Row]s and [Column]s, as well as [Expanded] and\n[AspectRatio] widgets to organize its layout.\n\n![Custom list item b](https://flutter.github.io/assets-for-api-docs/assets/widgets/custom_list_item_b.png)\n\n```dart\nclass _ArticleDescription extends StatelessWidget {\n _ArticleDescription({\n Key key,\n this.title,\n this.subtitle,\n this.author,\n this.publishDate,\n this.readDuration,\n }) : super(key: key);\n\n final String title;\n final String subtitle;\n final String author;\n final String publishDate;\n final String readDuration;\n\n @override\n Widget build(BuildContext context) {\n return Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: [\n Expanded(\n flex: 2,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: [\n Text(\n '$title',\n maxLines: 2,\n overflow: TextOverflow.ellipsis,\n style: const TextStyle(\n fontWeight: FontWeight.bold,\n ),\n ),\n const Padding(padding: EdgeInsets.only(bottom: 2.0)),\n Text(\n '$subtitle',\n maxLines: 2,\n overflow: TextOverflow.ellipsis,\n style: const TextStyle(\n fontSize: 12.0,\n color: Colors.black54,\n ),\n ),\n ],\n ),\n ),\n Expanded(\n flex: 1,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisAlignment: MainAxisAlignment.end,\n children: [\n Text(\n '$author',\n style: const TextStyle(\n fontSize: 12.0,\n color: Colors.black87,\n ),\n ),\n Text(\n '$publishDate · $readDuration ★',\n style: const TextStyle(\n fontSize: 12.0,\n color: Colors.black54,\n ),\n ),\n ],\n ),\n ),\n ],\n );\n }\n}\n\nclass CustomListItemTwo extends StatelessWidget {\n CustomListItemTwo({\n Key key,\n this.thumbnail,\n this.title,\n this.subtitle,\n this.author,\n this.publishDate,\n this.readDuration,\n }) : super(key: key);\n\n final Widget thumbnail;\n final String title;\n final String subtitle;\n final String author;\n final String publishDate;\n final String readDuration;\n\n @override\n Widget build(BuildContext context) {\n return Padding(\n padding: const EdgeInsets.symmetric(vertical: 10.0),\n child: SizedBox(\n height: 100,\n child: Row(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: [\n AspectRatio(\n aspectRatio: 1.0,\n child: thumbnail,\n ),\n Expanded(\n child: Padding(\n padding: const EdgeInsets.fromLTRB(20.0, 0.0, 2.0, 0.0),\n child: _ArticleDescription(\n title: title,\n subtitle: subtitle,\n author: author,\n publishDate: publishDate,\n readDuration: readDuration,\n ),\n ),\n )\n ],\n ),\n ),\n );\n }\n}\n```\n\n```dart\nWidget build(BuildContext context) {\n return ListView(\n padding: const EdgeInsets.all(10.0),\n children: [\n CustomListItemTwo(\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.pink),\n ),\n title: 'Flutter 1.0 Launch',\n subtitle:\n 'Flutter continues to improve and expand its horizons.'\n 'This text should max out at two lines and clip',\n author: 'Dash',\n publishDate: 'Dec 28',\n readDuration: '5 mins',\n ),\n CustomListItemTwo(\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.blue),\n ),\n title: 'Flutter 1.2 Release - Continual updates to the framework',\n subtitle: 'Flutter once again improves and makes updates.',\n author: 'Flutter',\n publishDate: 'Feb 26',\n readDuration: '12 mins',\n ),\n ],\n );\n}\n```\n\nSee also:\n\n * [ListTileTheme], which defines visual properties for [ListTile]s.\n * [ListView], which can display an arbitrary number of [ListTile]s\n in a scrolling list.\n * [CircleAvatar], which shows an icon representing a person and is often\n used as the [leading] element of a ListTile.\n * [Card], which can be used with [Column] to show a few [ListTile]s.\n * [Divider], which can be used to separate [ListTile]s.\n * [ListTile.divideTiles], a utility for inserting [Divider]s in between [ListTile]s.\n * [CheckboxListTile], [RadioListTile], and [SwitchListTile], widgets\n that combine [ListTile] with other controls.\n * ", "detail": "", "kind": 7, "label": "ListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scaffold", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Implements the basic material design visual layout structure.\n\nThis class provides APIs for showing drawers, snack bars, and bottom sheets.\n\nTo display a snackbar or a persistent bottom sheet, obtain the\n[ScaffoldState] for the current [BuildContext] via [Scaffold.of] and use the\n[ScaffoldState.showSnackBar] and [ScaffoldState.showBottomSheet] functions.\n\nThis example shows a [Scaffold] with an [AppBar], a [BottomAppBar] and a\n[FloatingActionButton]. The [body] is a [Text] placed in a [Center] in order\nto center the text within the [Scaffold] and the [FloatingActionButton] is\ncentered and docked within the [BottomAppBar] using\n[FloatingActionButtonLocation.centerDocked]. The [FloatingActionButton] is\nconnected to a callback that increments a counter.\n\n```dart\nint _count = 0;\n\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Sample Code'),\n ),\n body: Center(\n child: Text('You have pressed the button $_count times.'),\n ),\n bottomNavigationBar: BottomAppBar(\n child: Container(height: 50.0,),\n ),\n floatingActionButton: FloatingActionButton(\n onPressed: () => setState(() {\n _count++;\n }),\n tooltip: 'Increment Counter',\n child: Icon(Icons.add),\n ),\n floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,\n );\n}\n```\n\n## Scaffold layout, the keyboard, and display \"notches\"\n\nThe scaffold will expand to fill the available space. That usually\nmeans that it will occupy its entire window or device screen. When\nthe device's keyboard appears the Scaffold's ancestor [MediaQuery]\nwidget's [MediaQueryData.viewInsets] changes and the Scaffold will\nbe rebuilt. By default the scaffold's [body] is resized to make\nroom for the keyboard. To prevent the resize set\n[resizeToAvoidBottomInset] to false. In either case the focused\nwidget will be scrolled into view if it's within a scrollable\ncontainer.\n\nThe [MediaQueryData.padding] value defines areas that might\nnot be completely visible, like the display \"notch\" on the iPhone\nX. The scaffold's [body] is not inset by this padding value\nalthough an [appBar] or [bottomNavigationBar] will typically\ncause the body to avoid the padding. The [SafeArea]\nwidget can be used within the scaffold's body to avoid areas\nlike display notches.\n\n## Troubleshooting\n\n### Nested Scaffolds\n\nThe Scaffold was designed to be the single top level container for\na [MaterialApp] and it's typically not necessary to nest\nscaffolds. For example in a tabbed UI, where the\n[bottomNavigationBar] is a [TabBar] and the body is a\n[TabBarView], you might be tempted to make each tab bar view a\nscaffold with a differently titled AppBar. It would be better to add a\nlistener to the [TabController] that updates the AppBar.\n\nAdd a listener to the app's tab controller so that the [AppBar] title of the\napp's one and only scaffold is reset each time a new tab is selected.\n\n```dart\nTabController(vsync: tickerProvider, length: tabCount)..addListener(() {\n if (!tabController.indexIsChanging) {\n setState(() {\n // Rebuild the enclosing scaffold with a new AppBar title\n appBarTitle = 'Tab ${tabController.index}';\n });\n }\n})\n```\n\nAlthough there are some use cases, like a presentation app that\nshows embedded flutter content, where nested scaffolds are\nappropriate, it's best to avoid nesting scaffolds.\n\nSee also:\n\n * [AppBar], which is a horizontal bar typically shown at the top of an app\n using the [appBar] property.\n * [BottomAppBar], which is a horizontal bar typically shown at the bottom\n of an app using the [bottomNavigationBar] property.\n * [FloatingActionButton], which is a circular button typically shown in the\n bottom right corner of the app using the [floatingActionButton] property.\n * [Drawer], which is a vertical panel that is typically displayed to the\n left of the body (and often hidden on phones) using the [drawer]\n property.\n * [BottomNavigationBar], which is a horizontal array of buttons typically\n shown along the bottom of the app using the [bottomNavigationBar]\n property.\n * [SnackBar], which is a temporary notification typically shown near the\n bottom of the app using the [ScaffoldState.showSnackBar] method.\n * [BottomSheet], which is an overlay typically shown near the bottom of the\n app. A bottom sheet can either be persistent, in which case it is shown\n using the [ScaffoldState.showBottomSheet] method, or modal, in which case\n it is shown using the [showModalBottomSheet] function.\n * [ScaffoldState], which is the state associated with this widget.\n * ", "detail": "", "kind": 7, "label": "Scaffold" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CreateRectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that takes two [Rect] instances and returns a\n[RectTween] that transitions between them.\n\nThis is typically used with a [HeroController] to provide an animation for\n[Hero] positions that looks nicer than a linear movement. For example, see\n[MaterialRectArcTween].", "detail": "(Rect begin, Rect end) → Tween", "kind": 7, "label": "CreateRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataColumnSortCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for [DataColumn.onSort] callback.", "detail": "(int columnIndex, bool ascending) → void", "kind": 7, "label": "DataColumnSortCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for strategies that build widgets based on asynchronous\ninteraction.\n\nSee also:\n\n * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Stream].\n * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Future].", "detail": "(BuildContext context, AsyncSnapshot snapshot) → Widget", "kind": 7, "label": "AsyncWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshProgressIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An indicator for the progress of refreshing the contents of a widget.\n\nTypically used for swipe-to-refresh interactions. See [RefreshIndicator] for\na complete implementation of swipe-to-refresh driven by a [Scrollable]\nwidget.\n\nThe indicator arc is displayed with [valueColor], an animated value. To\nspecify a constant color use: `AlwaysStoppedAnimation(color)`.\n\nSee also:\n\n * [RefreshIndicator], which automatically displays a [CircularProgressIndicator]\n when the underlying vertical scrollable is overscrolled.", "detail": "", "kind": 7, "label": "RefreshProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for scrolling activities like dragging and flinging.\n\nSee also:\n\n * [ScrollPosition], which uses [ScrollActivity] objects to manage the\n [ScrollPosition] of a [Scrollable].", "detail": "", "kind": 7, "label": "ScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageIcon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An icon that comes from an [ImageProvider], e.g. an [AssetImage].\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for icons based on glyphs from fonts instead of images.\n * [Icons], a predefined font based set of icons from the material design library.", "detail": "", "kind": 7, "label": "ImageIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorberHandle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Handle to provide to a [SliverOverlapAbsorber], a [SliverOverlapInjector],\nand an [NestedScrollViewViewport], to shift overlap in a [NestedScrollView].\n\nA particular [SliverOverlapAbsorberHandle] can only be assigned to a single\n[SliverOverlapAbsorber] at a time. It can also be (and normally is) assigned\nto one or more [SliverOverlapInjector]s, which must be later descendants of\nthe same [NestedScrollViewViewport] as the [SliverOverlapAbsorber]. The\n[SliverOverlapAbsorber] must be a direct descendant of the\n[NestedScrollViewViewport], taking part in the same sliver layout. (The\n[SliverOverlapInjector] can be a descendant that takes part in a nested\nscroll view's sliver layout.)\n\nWhenever the [NestedScrollViewViewport] is marked dirty for layout, it will\ncause its assigned [SliverOverlapAbsorberHandle] to fire notifications. It\nis the responsibility of the [SliverOverlapInjector]s (and any other\nclients) to mark themselves dirty when this happens, in case the geometry\nsubsequently changes during layout.\n\nSee also:\n\n * [NestedScrollView], which uses a [NestedScrollViewViewport] and a\n [SliverOverlapAbsorber] to align its children, and which shows sample\n usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorberHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nSee also the discussions at [Key] and [Widget.key].", "detail": "", "kind": 7, "label": "ObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectangularSliderTrackShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s track.\n\nIt paints a solid colored rectangle, vertically centered in the\n[parentBox]. The track rectangle extends to the bounds of the [parentBox],\nbut is padded by the [RoundSliderOverlayShape] radius. The height is defined\nby the [SliderThemeData.trackHeight]. The color is determined by the\n[Slider]'s enabled state and the track piece's active state which are\ndefined by:\n [SliderThemeData.activeTrackColor],\n [SliderThemeData.inactiveTrackColor],\n [SliderThemeData.disabledActiveTrackColor],\n [SliderThemeData.disabledInactiveTrackColor].\n\nSee also:\n\n * [Slider] for the component that this is meant to display this shape.\n * [SliderThemeData] where an instance of this class is set to inform the\n slider of the visual details of the its track.\n * [SliderTrackShape] Base component for creating other custom track\n shapes.", "detail": "", "kind": 7, "label": "RectangularSliderTrackShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabPageSelector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a row of small circular indicators, one per tab. The selected\ntab's indicator is highlighted. Often used in conjunction with a [TabBarView].\n\nIf a [TabController] is not provided, then there must be a [DefaultTabController]\nancestor.", "detail": "", "kind": 7, "label": "TabPageSelector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackButtonIcon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A \"back\" icon that's appropriate for the current [TargetPlatform].\n\nThe current platform is determined by querying for the ambient [Theme].\n\nSee also:\n\n * [BackButton], an [IconButton] with a [BackButtonIcon] that calls\n [Navigator.maybePop] to return to the previous route.\n * [IconButton], which is a more general widget for creating buttons\n with icons.\n * [Icon], a material design icon.\n * [ThemeData.platform], which specifies the current platform.", "detail": "", "kind": 7, "label": "BackButtonIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectButtonBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by\n[WidgetInspector.selectButtonBuilder].", "detail": "(BuildContext context, VoidCallback onPressed) → Widget", "kind": 7, "label": "InspectorSelectButtonBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PersistentBottomSheetController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScaffoldFeatureController] for persistent bottom sheets.\n\nThis is the type of objects returned by [ScaffoldState.showBottomSheet].", "detail": "", "kind": 7, "label": "PersistentBottomSheetController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design back button.\n\nA [BackButton] is an [IconButton] with a \"back\" icon appropriate for the\ncurrent [TargetPlatform]. When pressed, the back button calls\n[Navigator.maybePop] to return to the previous route.\n\nWhen deciding to display a [BackButton], consider using\n`ModalRoute.of(context)?.canPop` to check whether the current route can be\npopped. If that value is false (e.g., because the current route is the\ninitial route), the [BackButton] will not have any effect when pressed,\nwhich could frustrate the user.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [AppBar], which automatically uses a [BackButton] in its\n [AppBar.leading] slot when the [Scaffold] has no [Drawer] and the\n current [Route] is not the [Navigator]'s first route.\n * [BackButtonIcon], which is useful if you need to create a back button\n that responds differently to being pressed.\n * [IconButton], which is a more general widget for creating buttons with\n icons.\n * [CloseButton], an alternative which may be more appropriate for leaf\n node pages in the navigation tree.", "detail": "", "kind": 7, "label": "BackButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOval", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildBuilderDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using a builder\ncallback.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot have to be built until they are displayed.", "detail": "", "kind": 7, "label": "ListWheelChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetLeave", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a [Draggable] leaves a [DragTarget].\n\nUsed by [DragTarget.onLeave].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetLeave" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Represents the details when a specific pointer event occurred on\nthe [Draggable].\n\nThis includes the [Velocity] at which the pointer was moving and [Offset]\nwhen the draggable event occurred, and whether its [DragTarget] accepted it.\n\nAlso, this is the details object for callbacks that use [DragEndCallback].", "detail": "", "kind": 7, "label": "DraggableDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [MultiChildRenderObjectWidget] as its configuration.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [ContainerRenderObjectMixin] mixin with a parent data\ntype that implements [ContainerParentDataMixin]. Such widgets\nare expected to inherit from [MultiChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "MultiChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonTextTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonTheme] and [ButtonThemeData] to define a button's base\ncolors, and the defaults for the button's minimum size, internal padding,\nand shape.\n\nSee also:\n\n * [RaisedButton], [FlatButton], [OutlineButton], which are configured\n based on the ambient [ButtonTheme].", "detail": "", "kind": 13, "label": "ButtonTextTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Localizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the [Locale] for its `child` and the localized resources that the\nchild depends on.\n\nLocalized resources are loaded by the list of [LocalizationsDelegate]\n`delegates`. Each delegate is essentially a factory for a collection\nof localized resources. There are multiple delegates because there are\nmultiple sources for localizations within an app.\n\nDelegates are typically simple subclasses of [LocalizationsDelegate] that\noverride [LocalizationsDelegate.load]. For example a delegate for the\n`MyLocalizations` class defined below would be:\n\n```dart\nclass _MyDelegate extends LocalizationsDelegate {\n @override\n Future load(Locale locale) => MyLocalizations.load(locale);\n\n @override\n bool shouldReload(MyLocalizationsDelegate old) => false;\n}\n```\n\nEach delegate can be viewed as a factory for objects that encapsulate a\na set of localized resources. These objects are retrieved with\nby runtime type with [Localizations.of].\n\nThe [WidgetsApp] class creates a `Localizations` widget so most apps\nwill not need to create one. The widget app's `Localizations` delegates can\nbe initialized with [WidgetsApp.localizationsDelegates]. The [MaterialApp]\nclass also provides a `localizationsDelegates` parameter that's just\npassed along to the [WidgetsApp].\n\nApps should retrieve collections of localized resources with\n`Localizations.of(context, MyLocalizations)`,\nwhere MyLocalizations is an app specific class defines one function per\nresource. This is conventionally done by a static `.of` method on the\nMyLocalizations class.\n\nFor example, using the `MyLocalizations` class defined below, one would\nlookup a localized title string like this:\n```dart\nMyLocalizations.of(context).title()\n```\nIf `Localizations` were to be rebuilt with a new `locale` then\nthe widget subtree that corresponds to [BuildContext] `context` would\nbe rebuilt after the corresponding resources had been loaded.\n\nThis class is effectively an [InheritedWidget]. If it's rebuilt with\na new `locale` or a different list of delegates or any of its\ndelegates' [LocalizationsDelegate.shouldReload()] methods returns true,\nthen widgets that have created a dependency by calling\n`Localizations.of(context)` will be rebuilt after the resources\nfor the new locale have been loaded.\n\n\nThis following class is defined in terms of the\n[Dart `intl` package](https://github.com/dart-lang/intl). Using the `intl`\npackage isn't required.\n\n```dart\nclass MyLocalizations {\n MyLocalizations(this.locale);\n\n final Locale locale;\n\n static Future load(Locale locale) {\n return initializeMessages(locale.toString())\n .then((void _) {\n return MyLocalizations(locale);\n });\n }\n\n static MyLocalizations of(BuildContext context) {\n return Localizations.of(context, MyLocalizations);\n }\n\n String title() => Intl.message('', name: 'title', locale: locale.toString());\n // ... more Intl.message() methods like title()\n}\n```\nA class based on the `intl` package imports a generated message catalog that provides\nthe `initializeMessages()` function and the per-locale backing store for `Intl.message()`.\nThe message catalog is produced by an `intl` tool that analyzes the source code for\nclasses that contain `Intl.message()` calls. In this case that would just be the\n`MyLocalizations` class.\n\nOne could choose another approach for loading localized resources and looking them up while\nstill conforming to the structure of this example.", "detail": "", "kind": 7, "label": "Localizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the color, shape, and typography values for a material design slider\ntheme.\n\nUse this class to configure a [SliderTheme] widget, or to set the\n[ThemeData.sliderTheme] for a [Theme] widget.\n\nTo obtain the current ambient slider theme, use [SliderTheme.of].\n\nThe parts of a slider are:\n\n * The \"thumb\", which is a shape that slides horizontally when the user\n drags it.\n * The \"track\", which is the line that the slider thumb slides along.\n * The \"tick marks\", which are regularly spaced marks that are drawn when\n using discrete divisions.\n * The \"value indicator\", which appears when the user is dragging the thumb\n to indicate the value being selected.\n * The \"overlay\", which appears around the thumb, and is shown when the\n thumb is pressed, focused, or hovered. It is painted underneath the\n thumb, so it must extend beyond the bounds of the thumb itself to\n actually be visible.\n * The \"active\" side of the slider is the side between the thumb and the\n minimum value.\n * The \"inactive\" side of the slider is the side between the thumb and the\n maximum value.\n * The [Slider] is disabled when it is not accepting user input. See\n [Slider] for details on when this happens.\n\nThe thumb, track, tick marks, value indicator, and overlay can be customized\nby creating subclasses of [SliderTrackShape],\n[SliderComponentShape], and/or [SliderTickMarkShape]. See\n[RoundSliderThumbShape], [RectangularSliderTrackShape],\n[RoundSliderTickMarkShape], [PaddleSliderValueIndicatorShape], and\n[RoundSliderOverlayShape] for examples.\n\nThe track painting can be skipped by specifying 0 for [trackHeight].\nThe thumb painting can be skipped by specifying\n[SliderComponentShape.noThumb] for [SliderThemeData.thumbShape].\nThe overlay painting can be skipped by specifying\n[SliderComponentShape.noOverlay] for [SliderThemeData.overlayShape].\nThe tick mark painting can be skipped by specifying\n[SliderTickMarkShape.noTickMark] for [SliderThemeData.tickMarkShape].\nThe value indicator painting can be skipped by specifying the\nappropriate [ShowValueIndicator] for [SliderThemeData.showValueIndicator].\n\nSee also:\n\n * [SliderTheme] widget, which can override the slider theme of its\n children.\n * [Theme] widget, which performs a similar function to [SliderTheme],\n but for overall themes.\n * [ThemeData], which has a default [SliderThemeData].\n * [SliderTrackShape], to define custom slider track shapes.\n * [SliderComponentShape], to define custom slider component shapes.\n * [SliderTickMarkShape], to define custom slider tick mark shapes.", "detail": "", "kind": 7, "label": "SliderThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFadeBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the [AnimatedCrossFade.layoutBuilder] callback.\n\nThe `topChild` is the child fading in, which is normally drawn on top. The\n`bottomChild` is the child fading out, normally drawn on the bottom.\n\nFor good performance, the returned widget tree should contain both the\n`topChild` and the `bottomChild`; the depth of the tree, and the types of\nthe widgets in the tree, from the returned widget to each of the children\nshould be the same; and where there is a widget with multiple children, the\ntop child and the bottom child should be keyed using the provided\n`topChildKey` and `bottomChildKey` keys respectively.\n\n\n```dart\nWidget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) {\n return Stack(\n fit: StackFit.loose,\n children: <Widget>[\n Positioned(\n key: bottomChildKey,\n left: 0.0,\n top: 0.0,\n right: 0.0,\n child: bottomChild,\n ),\n Positioned(\n key: topChildKey,\n child: topChild,\n )\n ],\n );\n}\n```", "detail": "(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) → Widget", "kind": 7, "label": "AnimatedCrossFadeBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableScrollableSheet", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A container for a [Scrollable] that responds to drag gestures by resizing\nthe scrollable until a limit is reached, and then scrolling.\n\nThis widget can be dragged along the vertical axis between its\n[minChildSize], which defaults to `0.25` and [maxChildSize], which defaults\nto `1.0`. These sizes are percentages of the height of the parent container.\n\nThe widget coordinates resizing and scrolling of the widget returned by\nbuilder as the user drags along the horizontal axis.\n\nThe widget will initially be displayed at its initialChildSize which\ndefaults to `0.5`, meaning half the height of its parent. Dragging will work\nbetween the range of minChildSize and maxChildSize (as percentages of the\nparent container's height) as long as the builder creates a widget which\nuses the provided [ScrollController]. If the widget created by the\n[ScrollableWidgetBuilder] does not use provided [ScrollController], the\nsheet will remain at the initialChildSize.\n\n\nThis is a sample widget which shows a [ListView] that has 25 [ListTile]s.\nIt starts out as taking up half the body of the [Scaffold], and can be\ndragged up to the full height of the scaffold or down to 25% of the height\nof the scaffold. Upon reaching full height, the list contents will be\nscrolled up or down, until they reach the top of the list again and the user\ndrags the sheet back down.\n\n```dart\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('DraggableScrollableSheet'),\n ),\n body: SizedBox.expand(\n child: DraggableScrollableSheet(\n builder: (BuildContext context, ScrollController scrollController) {\n return Container(\n color: Colors.blue[100],\n child: ListView.builder(\n controller: scrollController,\n itemCount: 25,\n itemBuilder: (BuildContext context, int index) {\n return ListTile(title: Text('Item $index'));\n },\n ),\n );\n },\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DraggableScrollableSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ControlsWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A builder that creates a widget given the two callbacks `onStepContinue` and\n`onStepCancel`.\n\nUsed by [Stepper.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].", "detail": "(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) → Widget", "kind": 7, "label": "ControlsWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputDecorationTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the default appearance of [InputDecorator]s.\n\nThis class is used to define the value of [ThemeData.inputDecorationTheme].\nThe [InputDecorator], [TextField], and [TextFormField] widgets use\nthe current input decoration theme to initialize null [InputDecoration]\nproperties.\n\nThe [InputDecoration.applyDefaults] method is used to combine a input\ndecoration theme with an [InputDecoration] object.", "detail": "", "kind": 7, "label": "InputDecorationTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderTrackShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[context] is the same context for the render box of the [Slider].\n\n[center] is the offset of the center where this shape should be painted.\nThis offset is relative to the origin of the [context] canvas.\n\n[sliderTheme] is the theme assigned to the [Slider] that this shape\nbelongs to.\n\n[isEnabled] has the same value as [Slider.isInteractive]. If true, the\nslider will respond to input.\n\n[enableAnimation] is an animation triggered when the [Slider] is enabled,\nand it reverses when the slider is disabled. Enabled is the\n[Slider.isInteractive] state. Use this to paint intermediate frames for\nthis shape when the slider changes enabled state.\n\n[isDiscrete] is true if [Slider.divisions] is non-null. If true, the\nslider will render tick marks on top of the track.\n\n[parentBox] is the [RenderBox] of the [Slider]. Its attributes, such as\nsize, can be used to assist in painting this shape.\nBase class for slider track shapes.\n\nThe slider's thumb moves along the track. A discrete slider's tick marks\nare drawn after the track, but before the thumb, and are aligned with the\ntrack.\n\nThe [getPreferredRect] helps position the slider thumb and tick marks\nrelative to the track.\n\nSee also:\n\n * [RectangularSliderTrackShape], which is the default track shape.\n * [SliderTickMarkShape], which is the default tick mark shape.\n * [SliderComponentShape], which is the base class for custom a component\n shape.", "detail": "", "kind": 7, "label": "SliderTrackShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DisabledChipAttributes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be enabled and disabled.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "DisabledChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleAvatar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A circle that represents a user.\n\nTypically used with a user's profile image, or, in the absence of\nsuch an image, the user's initials. A given user's initials should\nalways be paired with the same background color, for consistency.\n\n\nIf the avatar is to have an image, the image should be specified in the\n[backgroundImage] property:\n\n```dart\nCircleAvatar(\n backgroundImage: NetworkImage(userAvatarUrl),\n)\n```\n\nThe image will be cropped to have a circle shape.\n\n\nIf the avatar is to just have the user's initials, they are typically\nprovided using a [Text] widget as the [child] and a [backgroundColor]:\n\n```dart\nCircleAvatar(\n backgroundColor: Colors.brown.shade800,\n child: Text('AH'),\n)\n```\n\nSee also:\n\n * [Chip], for representing users or concepts in long form.\n * [ListTile], which can combine an icon (such as a [CircleAvatar]) with\n some text for a fixed height list entry.\n * <https://material.io/design/components/chips.html#input-chips>", "detail": "", "kind": 7, "label": "CircleAvatar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin used by routes to handle back navigations internally by popping a list.\n\nWhen a [Navigator] is instructed to pop, the current route is given an\nopportunity to handle the pop internally. A `LocalHistoryRoute` handles the\npop internally if its list of local history entries is non-empty. Rather\nthan being removed as the current route, the most recent [LocalHistoryEntry]\nis removed from the list and its [LocalHistoryEntry.onRemove] is called.", "detail": "", "kind": 7, "label": "LocalHistoryRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Colors", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[Color] and [ColorSwatch] constants which represent Material design's\n[color palette](https://material.io/design/color/).\n\nInstead of using an absolute color from these palettes, consider using\n[Theme.of] to obtain the local [ThemeData] structure, which exposes the\ncolors selected for the current theme, such as [ThemeData.primaryColor] and\n[ThemeData.accentColor] (among many others).\n\nMost swatches have colors from 100 to 900 in increments of one hundred, plus\nthe color 50. The smaller the number, the more pale the color. The greater\nthe number, the darker the color. The accent swatches (e.g. [redAccent]) only\nhave the values 100, 200, 400, and 700.\n\nIn addition, a series of blacks and whites with common opacities are\navailable. For example, [black54] is a pure black with 54% opacity.\n\n\nTo select a specific color from one of the swatches, index into the swatch\nusing an integer for the specific color desired, as follows:\n\n```dart\nColor selection = Colors.green[400]; // Selects a mid-range green.\n```\n\nEach [ColorSwatch] constant is a color and can used directly. For example:\n\n```dart\nContainer(\n color: Colors.blue, // same as Colors.blue[500] or Colors.blue.shade500\n)\n```\n\n## Color palettes\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pink.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pinkAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.red.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.redAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepOrange.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepOrangeAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orange.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orangeAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amber.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amberAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellow.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellowAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lime.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.limeAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightGreen.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightGreenAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.green.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.greenAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.teal.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.tealAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyan.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyanAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightBlue.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightBlueAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blue.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blueAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigo.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigoAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purple.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purpleAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurple.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurpleAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blueGrey.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.brown.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.grey.png)\n\n## Blacks and whites\n\nThese colors are identified by their transparency. The low transparency\nlevels (e.g. [Colors.white12] and [Colors.white10]) are very hard to see and\nshould be avoided in general. They are intended for very subtle effects.\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blacks.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.whites.png)\n\nThe [Colors.transparent] color isn't shown here because it is entirely\ninvisible!", "detail": "", "kind": 7, "label": "Colors" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An element that lazily builds children for a [SliverMultiBoxAdaptorWidget].\n\nImplements [RenderSliverBoxChildManager], which lets this element manage\nthe children of subclasses of [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flex", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in a one-dimensional array.\n\nThe [Flex] widget allows you to control the axis along which the children are\nplaced (horizontal or vertical). This is referred to as the _main axis_. If\nyou know the main axis in advance, then consider using a [Row] (if it's\nhorizontal) or [Column] (if it's vertical) instead, because that will be less\nverbose.\n\nTo cause a child to expand to fill the available space in the [direction]\nof this widget's main axis, wrap the child in an [Expanded] widget.\n\nThe [Flex] widget does not scroll (and in general it is considered an error\nto have more children in a [Flex] than will fit in the available room). If\nyou have some widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nIf you only have one child, then rather than using [Flex], [Row], or\n[Column], consider using [Align] or [Center] to position the child.\n\n## Layout algorithm\n\n_This section describes how a [Flex] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Flex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded main axis constraints and the incoming\n cross axis constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight cross axis constraints\n that match the incoming max extent in the cross axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of main axis space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [Flex] is the maximum cross axis extent of\n the children (which will always satisfy the incoming constraints).\n5. The main axis extent of the [Flex] is determined by the [mainAxisSize]\n property. If the [mainAxisSize] property is [MainAxisSize.max], then the\n main axis extent of the [Flex] is the max extent of the incoming main\n axis constraints. If the [mainAxisSize] property is [MainAxisSize.min],\n then the main axis extent of the [Flex] is the sum of the main axis\n extents of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a version of this widget that is always horizontal.\n * [Column], for a version of this widget that is always vertical.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n that may be sized smaller (leaving some remaining room unused).\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flex" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExcludeSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that drops all the semantics of its descendants.\n\nWhen [excluding] is true, this widget (and its subtree) is excluded from\nthe semantics tree.\n\nThis can be used to hide descendant widgets that would otherwise be\nreported but that would only be confusing. For example, the\nmaterial library's [Chip] widget hides the avatar since it is\nredundant with the chip label.\n\nSee also:\n\n * [BlockSemantics] which drops semantics of widgets earlier in the tree.", "detail": "", "kind": 7, "label": "ExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollEndNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has stopped scrolling.\n\nSee also:\n\n * [ScrollStartNotification], which indicates that scrolling has started.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollEndNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [StatefulWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatefulElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InteractiveInkFeature", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An ink feature that displays a [color] \"splash\" in response to a user\ngesture that can be confirmed or canceled.\n\nSubclasses call [confirm] when an input gesture is recognized. For\nexample a press event might trigger an ink feature that's confirmed\nwhen the corresponding up event is seen.\n\nSubclasses call [cancel] when an input gesture is aborted before it\nis recognized. For example a press event might trigger an ink feature\nthat's cancelled when the pointer is dragged out of the reference\nbox.\n\nThe [InkWell] and [InkResponse] widgets generate instances of this\nclass.", "detail": "", "kind": 7, "label": "InteractiveInkFeature" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialPointArcTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that interpolates an [Offset] along a circular arc.\n\nThis class specializes the interpolation of [Tween<Offset>] so that instead\nof a straight line, the intermediate points follow the arc of a circle in a\nmanner consistent with material design principles.\n\nThe arc's radius is related to the bounding box that contains the [begin]\nand [end] points. If the bounding box is taller than it is wide, then the\ncenter of the circle will be horizontally aligned with the end point.\nOtherwise the center of the circle will be aligned with the begin point.\nThe arc's sweep is always less than or equal to 90 degrees.\n\nSee also:\n\n * [Tween], for a discussion on how to use interpolation objects.\n * [MaterialRectArcTween], which extends this concept to interpolating [Rect]s.", "detail": "", "kind": 7, "label": "MaterialPointArcTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An implementation of scroll physics that matches Android.\n\nSee also:\n\n * [BouncingScrollSimulation], which implements iOS scroll physics.", "detail": "", "kind": 7, "label": "ClampingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The activity a scroll view performs when a the user drags their finger\nacross the screen.\n\nSee also:\n\n * [ScrollDragController], which listens to the [Drag] and actually scrolls\n the scroll view.", "detail": "", "kind": 7, "label": "DragScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShowValueIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the conditions under which the value indicator on a [Slider]\nwill be shown. Used with [SliderThemeData.showValueIndicator].\n\nSee also:\n\n * [Slider], a Material Design slider widget.\n * [SliderThemeData], which describes the actual configuration of a slider\n theme.", "detail": "", "kind": 13, "label": "ShowValueIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InteractiveInkFeatureFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An encapsulation of an [InteractiveInkFeature] constructor used by\n[InkWell], [InkResponse], and [ThemeData].\n\nInteractive ink feature implementations should provide a static const\n`splashFactory` value that's an instance of this class. The `splashFactory`\ncan be used to configure an [InkWell], [InkResponse] or [ThemeData].\n\nSee also:\n\n * [InkSplash.splashFactory]\n * [InkRipple.splashFactory]", "detail": "", "kind": 7, "label": "InteractiveInkFeatureFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsFlutterBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A concrete binding for applications based on the Widgets framework.\n\nThis is the glue that binds the framework to the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Route", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An abstraction for an entry managed by a [Navigator].\n\nThis class defines an abstract interface between the navigator and the\n\"routes\" that are pushed on and popped off the navigator. Most routes have\nvisual affordances, which they place in the navigators [Overlay] using one\nor more [OverlayEntry] objects.\n\nSee [Navigator] for more explanation of how to use a Route\nwith navigation, including code examples.\n\nSee [MaterialPageRoute] for a route that replaces the\nentire screen with a platform-adaptive transition.", "detail": "", "kind": 7, "label": "Route" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBarIndicatorSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines how the bounds of the selected tab indicator are computed.\n\nSee also:\n\n * [TabBar], which displays a row of tabs.\n * [TabBarView], which displays a widget for the currently selected tab.\n * [TabBar.indicator], which defines the appearance of the selected tab\n indicator relative to the tab's bounds.", "detail": "", "kind": 13, "label": "TabBarIndicatorSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicensePage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A page that shows licenses for software used by the application.\n\nTo show a [LicensePage], use [showLicensePage].\n\nThe [AboutDialog] shown by [showAboutDialog] and [AboutListTile] includes\na button that calls [showLicensePage].\n\nThe licenses shown on the [LicensePage] are those returned by the\n[LicenseRegistry] API, which can be used to add more licenses to the list.", "detail": "", "kind": 7, "label": "LicensePage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaginatedDataTable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design data table that shows data using multiple pages.\n\nA paginated data table shows [rowsPerPage] rows of data per page and\nprovides controls for showing other pages.\n\nData is read lazily from from a [DataTableSource]. The widget is presented\nas a [Card].\n\nSee also:\n\n * [DataTable], which is not paginated.\n * <https://material.io/go/design-data-tables#data-tables-tables-within-cards>", "detail": "", "kind": 7, "label": "PaginatedDataTable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDragController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scrolls a scroll view as the user drags their finger across the screen.\n\nSee also:\n\n * [DragScrollActivity], which is the activity the scroll view performs\n while a drag is underway.", "detail": "", "kind": 7, "label": "ScrollDragController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedStack", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Stack] that shows a single child from a list of children.\n\nThe displayed child is the one with the given [index]. The stack is\nalways as big as the largest child.\n\nIf value is null, then nothing is displayed.\n\nSee also:\n\n * [Stack], for more details about stacks.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a single color as well a color swatch with ten shades of the color.\n\nThe color's shades are referred to by index. The greater the index, the\ndarker the color. There are 10 valid indices: 50, 100, 200, ..., 900.\nThe value of this color should the same the value of index 500 and [shade500].\n\nSee also:\n\n * [Colors], which defines all of the standard material colors.", "detail": "", "kind": 7, "label": "MaterialColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Transform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that applies a transformation before painting its child.\n\n\n\nThis example rotates and skews an orange box containing text, keeping the\ntop right corner pinned to its original position.\n\n```dart\nContainer(\n color: Colors.black,\n child: Transform(\n alignment: Alignment.topRight,\n transform: Matrix4.skewY(0.3)..rotateZ(-math.pi / 12.0),\n child: Container(\n padding: const EdgeInsets.all(8.0),\n color: const Color(0xFFE8581C),\n child: const Text('Apartment for rent!'),\n ),\n ),\n)\n```\n\nSee also:\n\n * [RotatedBox], which rotates the child widget during layout, not just\n during painting.\n * [FractionalTranslation], which applies a translation to the child\n that is relative to the child's size.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.", "detail": "", "kind": 7, "label": "Transform" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawChip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A raw material design chip.\n\nThis serves as the basis for all of the chip widget types to aggregate.\nIt is typically not created directly, one of the other chip types\nthat are appropriate for the use case are used instead:\n\n * [Chip] a simple chip that can only display information and be deleted.\n * [InputChip] represents a complex piece of information, such as an entity\n (person, place, or thing) or conversational text, in a compact form.\n * [ChoiceChip] allows a single selection from a set of options.\n * [FilterChip] a chip that uses tags or descriptive words as a way to\n filter content.\n * [ActionChip]s display a set of actions related to primary content.\n\nRaw chips are typically only used if you want to create your own custom chip\ntype.\n\nRaw chips can be selected by setting [onSelected], deleted by setting\n[onDeleted], and pushed like a button with [onPressed]. They have a [label],\nand they can have a leading icon (see [avatar]) and a trailing icon\n([deleteIcon]). Colors and padding can be customized.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "RawChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysScrollableScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics that always lets the user scroll.\n\nOn Android, overscrolls will be clamped by default and result in an\noverscroll glow. On iOS, overscrolls will load a spring that will return\nthe scroll view to its normal range when released.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "AlwaysScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics for environments that prevent the scroll offset from reaching\nbeyond the bounds of the content.\n\nThis is the behavior typically seen on Android.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on Android.\n * [BouncingScrollPhysics], which is the analogous physics for iOS' bouncing\n behavior.\n * [GlowingOverscrollIndicator], which is used by [ScrollConfiguration] to\n provide the glowing effect that is usually found with this clamping effect\n on Android. When using a [MaterialApp], the [GlowingOverscrollIndicator]'s\n glow color is specified to use [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "ClampingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RichText", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A paragraph of rich text.\n\nThe [RichText] widget displays text that uses multiple different styles. The\ntext to display is described using a tree of [TextSpan] objects, each of\nwhich has an associated style that is used for that subtree. The text might\nbreak across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nText displayed in a [RichText] widget must be explicitly styled. When\npicking which style to use, consider using [DefaultTextStyle.of] the current\n[BuildContext] to provide defaults. For more details on how to style text in\na [RichText] widget, see the documentation for [TextStyle].\n\nConsider using the [Text] widget to integrate with the [DefaultTextStyle]\nautomatically. When all the text uses the same style, the default constructor\nis less verbose. The [Text.rich] constructor allows you to style multiple\nspans with the default text style while still allowing specified styles per\nspan.\n\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Hello ',\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),\n TextSpan(text: ' world!'),\n ],\n ),\n)\n```\n\nSee also:\n\n * [TextStyle], which discusses how to style text.\n * [TextSpan], which is used to describe the text in a paragraph.\n * [Text], which automatically applies the ambient styles described by a\n [DefaultTextStyle] to a single string.", "detail": "", "kind": 7, "label": "RichText" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckboxListTile", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] with a [Checkbox]. In other words, a checkbox with a label.\n\nThe entire list tile is interactive: tapping anywhere in the tile toggles\nthe checkbox.\n\nThe [value], [onChanged], and [activeColor] properties of this widget are\nidentical to the similarly-named properties on the [Checkbox] widget.\n\nThe [title], [subtitle], [isThreeLine], and [dense] properties are like\nthose of the same name on [ListTile].\n\nThe [selected] property on this widget is similar to the [ListTile.selected]\nproperty, but the color used is that described by [activeColor], if any,\ndefaulting to the accent color of the current [Theme]. No effort is made to\ncoordinate the [selected] state and the [value] state; to have the list tile\nappear selected when the checkbox is checked, pass the same value to both.\n\nThe checkbox is shown on the right by default in left-to-right languages\n(i.e. the trailing edge). This can be changed using [controlAffinity]. The\n[secondary] widget is placed on the opposite side. This maps to the\n[ListTile.leading] and [ListTile.trailing] properties of [ListTile].\n\nTo show the [CheckboxListTile] as disabled, pass null as the [onChanged]\ncallback.\n\n\nThis widget shows a checkbox that, when checked, slows down all animations\n(including the animation of the checkbox itself getting checked!).\n\nThis sample requires that you also import 'package:flutter/scheduler.dart',\nso that you can reference [timeDilation].\n\n```dart\nCheckboxListTile(\n title: const Text('Animate Slowly'),\n value: timeDilation != 1.0,\n onChanged: (bool value) {\n setState(() { timeDilation = value ? 20.0 : 1.0; });\n },\n secondary: const Icon(Icons.hourglass_empty),\n)\n```\n\nSee also:\n\n * [ListTileTheme], which can be used to affect the style of list tiles,\n including checkbox list tiles.\n * [RadioListTile], a similar widget for radio buttons.\n * [SwitchListTile], a similar widget for switches.\n * [ListTile] and [Checkbox], the widgets from which this widget is made.", "detail": "", "kind": 7, "label": "CheckboxListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScope", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Establishes a scope in which widgets can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nA focus scope does not itself receive focus but instead helps remember\nprevious focus states. A scope is currently active when its [node] is the\nfirst focus of its parent scope. To activate a [FocusScope], either use the\n[autofocus] property or explicitly make the [node] the first focus in the\nparent scope:\n\n```dart\nFocusScope.of(context).setFirstFocus(node);\n```\n\nIf a [FocusScope] is removed from the widget tree, then the previously\nfocused node will be focused, but only if the [node] is the same [node]\nobject as in the previous frame. To assure this, you can use a GlobalKey to\nkeep the [FocusScope] widget from being rebuilt from one frame to the next,\nor pass in the [node] from a parent that is not rebuilt. If there is no next\nsibling, then the parent scope node will be focused.\n\nSee also:\n\n * [FocusScopeNode], which is the associated node in the focus tree.\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.", "detail": "", "kind": 7, "label": "FocusScope" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Form", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An optional container for grouping together multiple form field widgets\n(e.g. [TextField] widgets).\n\nEach individual form field should be wrapped in a [FormField] widget, with\nthe [Form] widget as a common ancestor of all of those. Call methods on\n[FormState] to save, reset, or validate each [FormField] that is a\ndescendant of this [Form]. To obtain the [FormState], you may use [Form.of]\nwith a context whose ancestor is the [Form], or pass a [GlobalKey] to the\n[Form] constructor and call [GlobalKey.currentState].\n\nThis example shows a [Form] with one [TextFormField] and a [RaisedButton]. A\n[GlobalKey] is used here to identify the [Form] and validate input.\n\n```dart\nfinal _formKey = GlobalKey<FormState>();\n\n@override\nWidget build(BuildContext context) {\n return Form(\n key: _formKey,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n TextFormField(\n validator: (value) {\n if (value.isEmpty) {\n return 'Please enter some text';\n }\n },\n ),\n Padding(\n padding: const EdgeInsets.symmetric(vertical: 16.0),\n child: RaisedButton(\n onPressed: () {\n // Validate will return true if the form is valid, or false if\n // the form is invalid.\n if (_formKey.currentState.validate()) {\n // Process data.\n }\n },\n child: Text('Submit'),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [GlobalKey], a key that is unique across the entire app.\n * [FormField], a single form field widget that maintains the current state.\n * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].", "detail": "", "kind": 7, "label": "Form" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4Tween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [Matrix4]s.\n\nThis class specializes the interpolation of [Tween<Matrix4>] to be\nappropriate for transformation matrices.\n\nCurrently this class works only for translations.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "Matrix4Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that's called when a [DrawerController] is\nopened or closed.", "detail": "(bool isOpened) → void", "kind": 7, "label": "DrawerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Table", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that uses the table layout algorithm for its children.\n\n\nIf you only have one row, the [Row] widget is more appropriate. If you only\nhave one column, the [SliverList] or [Column] widgets will be more\nappropriate.\n\nRows size vertically based on their contents. To control the column widths,\nuse the [columnWidths] property.\n\nFor more details about the table layout algorithm, see [RenderTable].\nTo control the alignment of children, see [TableCell].", "detail": "", "kind": 7, "label": "Table" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that does not require mutable state.\n\nA stateless widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\n\nStateless widget are useful when the part of the user interface you are\ndescribing does not depend on anything other than the configuration\ninformation in the object itself and the [BuildContext] in which the widget\nis inflated. For compositions that can change dynamically, e.g. due to\nhaving an internal clock-driven state, or depending on some system state,\nconsider using [StatefulWidget].\n\n## Performance considerations\n\nThe [build] method of a stateless widget is typically only called in three\nsituations: the first time the widget is inserted in the tree, when the\nwidget's parent changes its configuration, and when an [InheritedWidget] it\ndepends on changes.\n\nIf a widget's parent will regularly change the widget's configuration, or if\nit depends on inherited widgets that frequently change, then it is important\nto optimize the performance of the [build] method to maintain a fluid\nrendering performance.\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateless widget:\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. For example, instead of an elaborate arrangement\n of [Row]s, [Column]s, [Padding]s, and [SizedBox]es to position a single\n child in a particularly fancy manner, consider using just an [Align] or a\n [CustomSingleChildLayout]. Instead of an intricate layering of multiple\n [Container]s and with [Decoration]s to draw just the right graphical\n effect, consider a single [CustomPaint] widget.\n\n * Use `const` widgets where possible, and provide a `const` constructor for\n the widget so that users of the widget can also do so.\n\n * Consider refactoring the stateless widget into a stateful widget so that\n it can use some of the techniques described at [StatefulWidget], such as\n caching common parts of subtrees and using [GlobalKey]s when changing the\n tree structure.\n\n * If the widget is likely to get rebuilt frequently due to the use of\n [InheritedWidget]s, consider refactoring the stateless widget into\n multiple widgets, with the parts of the tree that change being pushed to\n the leaves. For example instead of building a tree with four widgets, the\n inner-most widget depending on the [Theme], consider factoring out the\n part of the build function that builds the inner-most widget into its own\n widget, so that only the inner-most widget needs to be rebuilt when the\n theme changes.\n\n\nThe following is a skeleton of a stateless widget subclass called `GreenFrog`.\n\nNormally, widgets have more constructor arguments, each of which corresponds\nto a `final` property.\n\n```dart\nclass GreenFrog extends StatelessWidget {\n const GreenFrog({ Key key }) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFF2DBD3A));\n }\n}\n```\n\n\nThis next example shows the more generic widget `Frog` which can be given\na color and a child:\n\n```dart\nclass Frog extends StatelessWidget {\n const Frog({\n Key key,\n this.color = const Color(0xFF2DBD3A),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n @override\n Widget build(BuildContext context) {\n return Container(color: color, child: child);\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatelessWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossFadeState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies which of two children to show. See [AnimatedCrossFade].\n\nThe child that is shown will fade in, while the other will fade out.", "detail": "", "kind": 13, "label": "CrossFadeState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalObjectKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A global key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nIf the object is not private, then it is possible that collisions will occur\nwhere independent widgets will reuse the same object as their\n[GlobalObjectKey] value in a different part of the tree, leading to a global\nkey conflict. To avoid this problem, create a private [GlobalObjectKey]\nsubclass, as in:\n\n```dart\nclass _MyKey extends GlobalObjectKey {\n const _MyKey(Object value) : super(value);\n}\n```\n\nSince the [runtimeType] of the key is part of its identity, this will\nprevent clashes with other [GlobalObjectKey]s even if they have the same\nvalue.\n\nAny [GlobalObjectKey] created for the same value will match.", "detail": "", "kind": 7, "label": "GlobalObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Material design text theme.\n\nDefinitions for the various typographical styles found in material design\n(e.g., button, caption). Rather than creating a [TextTheme] directly,\nyou can obtain an instance as [Typography.black] or [Typography.white].\n\nTo obtain the current text theme, call [Theme.of] with the current\n[BuildContext] and read the [ThemeData.textTheme] property.\n\nThe Material Design typography scheme was significantly changed in the\ncurrent (2018) version of the specification\n(https://material.io/design/typography).\n\nThe 2018 spec has thirteen text styles:\n```\nNAME SIZE WEIGHT SPACING\nheadline1 96.0 light -1.5\nheadline2 60.0 light -0.5\nheadline3 48.0 normal 0.0\nheadline4 34.0 normal 0.25\nheadline5 24.0 normal 0.0\nheadline6 20.0 medium 0.15\nsubtitle1 16.0 normal 0.15\nsubtitle2 14.0 medium 0.1\nbody1 16.0 normal 0.5\nbody2 14.0 normal 0.25\nbutton 14.0 medium 0.75\ncaption 12.0 normal 0.4\noverline 10.0 normal 1.5\n\n```\nWhere \"light\" is `FontWeight.w300`, \"normal\" is `FontWeight.w400` and\n\"medium\" is `FontWeight.w500`.\n\nThe [TextTheme] API is based on the original material (2014)\ndesign spec, which used different text style names. For backwards\ncompatibility's sake, this API continues to use the original\nnames. The table below should help with understanding the API in\nterms of the 2018 material spec.\n\nEach of the [TextTheme] text styles corresponds to one of the\nstyles from 2018 spec. By default, the font sizes, font weights\nand letter spacings have not changed from their original,\n2014, values.\n```\nNAME SIZE WEIGHT SPACING 2018 NAME\ndisplay4 112.0 thin 0.0 headline1\ndisplay3 56.0 normal 0.0 headline2\ndisplay2 45.0 normal 0.0 headline3\ndisplay1 34.0 normal 0.0 headline4\nheadline 24.0 normal 0.0 headline5\ntitle 20.0 medium 0.0 headline6\nsubhead 16.0 normal 0.0 subtitle1\nbody2 14.0 medium 0.0 body1\nbody1 14.0 normal 0.0 body2\ncaption 12.0 normal 0.0 caption\nbutton 14.0 medium 0.0 button\nsubtitle 14.0 medium 0.0 subtitle2\noverline 10.0 normal 0.0 overline\n```\n\nWhere \"thin\" is `FontWeight.w100`, \"normal\" is `FontWeight.w400` and\n\"medium\" is `FontWeight.w500`. Letter spacing for all of the original\ntext styles was 0.0.\n\nTo configure a [Theme] for the new sizes, weights, and letter spacings,\ninitialize its [ThemeData.typography] value with a [Typography] that\nobject that specifies the 2018 versions of the geometry themes:\n[Typography.englishLike2018], [Typography.dense2018],\nand [Typography.tall2018].\n\nThe following image [from the material design\nspecification](https://material.io/go/design-typography#typography-styles)\nshows the recommended styles for each of the properties of a [TextTheme].\nThis image uses the `Roboto` font, which is the font used on Android. On\niOS, the [San Francisco\nfont](https://developer.apple.com/ios/human-interface-guidelines/visual-design/typography/)\nis automatically used instead.\n\n![To see the image, visit the typography site referenced below.](https://storage.googleapis.com/material-design/publish/material_v_11/assets/0Bzhp5Z4wHba3alhXZ2pPWGk3Zjg/style_typography_styles_scale.png)\n\nSee also:\n\n * [Typography], the class that generates [TextTheme]s appropriate for a platform.\n * [Theme], for other aspects of a material design application that can be\n globally adjusted, such as the color scheme.\n * <https://material.io/design/typography/>", "detail": "", "kind": 7, "label": "TextTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialInkController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for creating [InkSplash]s and [InkHighlight]s on a material.\n\nTypically obtained via [Material.of].", "detail": "", "kind": 7, "label": "MaterialInkController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepperType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the [Stepper]'s main axis.", "detail": "", "kind": 13, "label": "StepperType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonTheme] to configure the color and geometry of buttons.\n\nA button theme can be specified as part of the overall Material theme\nusing [ThemeData.buttonTheme]. The Material theme's button theme data\ncan be overridden with [ButtonTheme].", "detail": "", "kind": 7, "label": "ButtonThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design floating action button.\n\nA floating action button is a circular icon button that hovers over content\nto promote a primary action in the application. Floating action buttons are\nmost commonly used in the [Scaffold.floatingActionButton] field.\n\n\nUse at most a single floating action button per screen. Floating action\nbuttons should be used for positive actions such as \"create\", \"share\", or\n\"navigate\". (If more than one floating action button is used within a\n[Route], then make sure that each button has a unique [heroTag], otherwise\nan exception will be thrown.)\n\nIf the [onPressed] callback is null, then the button will be disabled and\nwill not react to touch. It is highly discouraged to disable a floating\naction button as there is no indication to the user that the button is\ndisabled. Consider changing the [backgroundColor] if disabling the floating\naction button.\n\nThis example shows how to make a simple [FloatingActionButton] in a\n[Scaffold], with a pink [backgroundColor] and a thumbs up [Icon].\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Floating Action Button Sample'),\n ),\n body: Center(\n child: Text('Press the button below!')\n ),\n floatingActionButton: FloatingActionButton(\n onPressed: () {\n // Add your onPressed code here!\n },\n child: Icon(Icons.thumb_up),\n backgroundColor: Colors.pink,\n ),\n );\n}\n```\n\nThis example shows how to make an extended [FloatingActionButton] in a\n[Scaffold], with a pink [backgroundColor] and a thumbs up [Icon] and a\n[Text] label.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Floating Action Button Sample'),\n ),\n body: Center(\n child: Text('Press the extended button below!'),\n ),\n floatingActionButton: FloatingActionButton.extended(\n onPressed: () {\n // Add your onPressed code here!\n },\n label: Text('Approve'),\n icon: Icon(Icons.thumb_up),\n backgroundColor: Colors.pink,\n ),\n );\n}\n```\n\nSee also:\n\n * [Scaffold], in which floating action buttons typically live.\n * [RaisedButton], another kind of button that appears to float above the\n content.\n * <https://material.io/design/components/buttons-floating-action-button.html>", "detail": "", "kind": 7, "label": "FloatingActionButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls the default color, opacity, and size of icons in a widget subtree.\n\nThe icon theme is honored by [Icon] and [ImageIcon] widgets.", "detail": "", "kind": 7, "label": "IconTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyedSubtree", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that builds its child.\n\nUseful for attaching a key to an existing widget.", "detail": "", "kind": 7, "label": "KeyedSubtree" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that calls callbacks in response to pointer events.\n\nRather than listening for raw pointer events, consider listening for\nhigher-level gestures using [GestureDetector].\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nIf it has a child, this widget defers to the child for sizing behavior. If\nit does not have a child, it grows to fit the parent instead.\n\nThis example makes a [Container] react to being entered by a mouse\npointer, showing a count of the number of entries and exits.\n\n```dart\nimport 'package:flutter/gestures.dart';\n```\n\n```dart\nint _enterCounter = 0;\nint _exitCounter = 0;\ndouble x = 0.0;\ndouble y = 0.0;\n\nvoid _incrementCounter(PointerEnterEvent details) {\n setState(() {\n _enterCounter++;\n });\n}\n\nvoid _decrementCounter(PointerExitEvent details) {\n setState(() {\n _exitCounter++;\n });\n}\n\nvoid _updateLocation(PointerHoverEvent details) {\n setState(() {\n x = details.position.dx;\n y = details.position.dy;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Center(\n child: ConstrainedBox(\n constraints: new BoxConstraints.tight(Size(300.0, 200.0)),\n child: Listener(\n onPointerEnter: _incrementCounter,\n onPointerHover: _updateLocation,\n onPointerExit: _decrementCounter,\n child: Container(\n color: Colors.lightBlueAccent,\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pointed at this box this many times:'),\n Text(\n '$_enterCounter Entries\\n$_exitCounter Exits',\n style: Theme.of(context).textTheme.display1,\n ),\n Text(\n 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [MouseTracker] an object that tracks mouse locations in the [GestureBinding].", "detail": "", "kind": 7, "label": "Listener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView].\n\n[ListWheelScrollView] lazily constructs its children during layout to avoid\ncreating more children than are visible through the [Viewport]. This\ndelegate is responsible for providing children to [ListWheelScrollView]\nduring that stage.\n\nSee also:\n\n * [ListWheelChildListDelegate], a delegate that supplies children using an\n explicit list.\n * [ListWheelChildLoopingListDelegate], a delegate that supplies infinite\n children by looping an explicit list.\n * [ListWheelChildBuilderDelegate], a delegate that supplies children using\n a builder callback.", "detail": "", "kind": 7, "label": "ListWheelChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopScope", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Registers a callback to veto attempts by the user to dismiss the enclosing\n[ModalRoute].\n\nSee also:\n\n * [ModalRoute.addScopedWillPopCallback] and [ModalRoute.removeScopedWillPopCallback],\n which this widget uses to register and unregister [onWillPop].", "detail": "", "kind": 7, "label": "WillPopScope" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetWillAccept", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for determining whether the given data will be accepted by a [DragTarget].\n\nUsed by [DragTarget.onWillAccept].", "detail": "(T data) → bool", "kind": 7, "label": "DragTargetWillAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableTextState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [EditableText].", "detail": "", "kind": 7, "label": "EditableTextState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The possible alignments of a [Drawer].", "detail": "", "kind": 13, "label": "DrawerAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedIcon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Shows an animated icon at a given animation [progress].\n\nThe available icons are specified in [AnimatedIcons].\n\n\n```dart\nAnimatedIcon(\n icon: AnimatedIcons.menu_arrow,\n progress: controller,\n semanticLabel: 'Show menu',\n)\n```\n", "detail": "", "kind": 7, "label": "AnimatedIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list of widgets arranged linearly.\n\n[ListView] is the most commonly used scrolling widget. It displays its\nchildren one after another in the scroll direction. In the cross axis, the\nchildren are required to fill the [ListView].\n\nIf non-null, the [itemExtent] forces the children to have the given extent\nin the scroll direction. Specifying an [itemExtent] is more efficient than\nletting the children determine their own extent because the scrolling\nmachinery can make use of the foreknowledge of the children's extent to save\nwork, for example when the scroll position changes drastically.\n\nThere are four options for constructing a [ListView]:\n\n 1. The default constructor takes an explicit [List<Widget>] of children. This\n constructor is appropriate for list views with a small number of\n children because constructing the [List] requires doing work for every\n child that could possibly be displayed in the list view instead of just\n those children that are actually visible.\n\n 2. The [ListView.builder] constructor takes an [IndexedWidgetBuilder], which\n builds the children on demand. This constructor is appropriate for list views\n with a large (or infinite) number of children because the builder is called\n only for those children that are actually visible.\n\n 3. The [ListView.separated] constructor takes two [IndexedWidgetBuilder]s:\n `itemBuilder` builds child items on demand, and `separatorBuilder`\n similarly builds separator children which appear in between the child items.\n This constructor is appropriate for list views with a fixed number of children.\n\n 4. The [ListView.custom] constructor takes a [SliverChildDelegate], which provides\n the ability to customize additional aspects of the child model. For example,\n a [SliverChildDelegate] can control the algorithm used to estimate the\n size of children that are not actually visible.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nThis example uses the default constructor for [ListView] which takes an\nexplicit [List<Widget>] of children. This [ListView]'s children are made up\nof [Container]s with [Text].\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view.png)\n\n```dart\nListView(\n padding: const EdgeInsets.all(8.0),\n children: <Widget>[\n Container(\n height: 50,\n color: Colors.amber[600],\n child: const Center(child: Text('Entry A')),\n ),\n Container(\n height: 50,\n color: Colors.amber[500],\n child: const Center(child: Text('Entry B')),\n ),\n Container(\n height: 50,\n color: Colors.amber[100],\n child: const Center(child: Text('Entry C')),\n ),\n ],\n)\n```\n\nThis example mirrors the previous one, creating the same list using the\n[ListView.builder] constructor. Using the [IndexedWidgetBuilder], children\nare built lazily and can be infinite in number.\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_builder.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.builder(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n }\n);\n```\n\nThis example continues to build from our the previous ones, creating a\nsimilar list using [ListView.separated]. Here, a [Divider] is used as a\nseparator.\n\n![A ListView of 3 amber colored containers with sample text and a Divider\nbetween each of them.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_separated.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.separated(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n },\n separatorBuilder: (BuildContext context, int index) => const Divider(),\n);\n```\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as when using\nthe default constructor) or lazily provided ones (such as when using the\n[ListView.builder] constructor).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree,\nstates and render objects are destroyed. A new child at the same position\nin the list will be lazily recreated along with new elements, states and\nrender objects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the list child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the list child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child\n widget subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the list child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the list keeps the child's render\n object (and by extension, its associated elements and states) in a cache\n list instead of destroying them. When scrolled back into view, the render\n object is repainted as-is (if it wasn't marked dirty in the interim).\n\n This only works if [addAutomaticKeepAlives] and [addRepaintBoundaries]\n are false since those parameters cause the [ListView] to wrap each child\n widget subtree with other widgets.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default when\n [addAutomaticKeepAlives] is true). Instead of unconditionally caching the\n child element subtree when scrolling off-screen like [KeepAlive],\n [AutomaticKeepAlive] can let whether to cache the subtree be determined\n by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its list child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the list child element subtree will be destroyed\n when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive\n by using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\n## Transitioning to [CustomScrollView]\n\nA [ListView] is basically a [CustomScrollView] with a single [SliverList] in\nits [CustomScrollView.slivers] property.\n\nIf [ListView] is no longer sufficient, for example because the scroll view\nis to have both a list and a grid, or because the list is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[ListView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [ListView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing either a\n[SliverList] or a [SliverFixedExtentList]; the former if [itemExtent] on the\n[ListView] was null, and the latter if [itemExtent] was not null.\n\nThe [childrenDelegate] property on [ListView] corresponds to the\n[SliverList.delegate] (or [SliverFixedExtentList.delegate]) property. The\n[new ListView] constructor's `children` argument corresponds to the\n[childrenDelegate] being a [SliverChildListDelegate] with that same\nargument. The [new ListView.builder] constructor's `itemBuilder` and\n`childCount` arguments correspond to the [childrenDelegate] being a\n[SliverChildBuilderDelegate] with the matching arguments.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the list itself, and having\nthe [SliverList] instead be a child of the [SliverPadding].\n\n[CustomScrollView]s don't automatically avoid obstructions from [MediaQuery]\nlike [ListView]s do. To reproduce the behavior, wrap the slivers in\n[SliverSafeArea]s.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [ListView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nListView(\n shrinkWrap: true,\n padding: const EdgeInsets.all(20.0),\n children: <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n shrinkWrap: true,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverList(\n delegate: SliverChildListDelegate(\n <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n ),\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is scrollable, 2D array of widgets.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [ListBody], which arranges its children in a similar manner, but without\n scrolling.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ListView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable, 2D array of widgets.\n\nThe main axis direction of a grid is the direction in which it scrolls (the\n[scrollDirection]).\n\nThe most commonly used grid layouts are [GridView.count], which creates a\nlayout with a fixed number of tiles in the cross axis, and\n[GridView.extent], which creates a layout with tiles that have a maximum\ncross-axis extent. A custom [SliverGridDelegate] can produce an arbitrary 2D\narrangement of children, including arrangements that are unaligned or\noverlapping.\n\nTo create a grid with a large (or infinite) number of children, use the\n[GridView.builder] constructor with either a\n[SliverGridDelegateWithFixedCrossAxisCount] or a\n[SliverGridDelegateWithMaxCrossAxisExtent] for the [gridDelegate].\n\nTo use a custom [SliverChildDelegate], use [GridView.custom].\n\nTo create a linear array of children, use a [ListView].\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n## Transitioning to [CustomScrollView]\n\nA [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in\nits [CustomScrollView.slivers] property.\n\nIf [GridView] is no longer sufficient, for example because the scroll view\nis to have both a grid and a list, or because the grid is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[GridView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [GridView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing just a\n[SliverGrid].\n\nThe [childrenDelegate] property on [GridView] corresponds to the\n[SliverGrid.delegate] property, and the [gridDelegate] property on the\n[GridView] corresponds to the [SliverGrid.gridDelegate] property.\n\nThe [new GridView], [new GridView.count], and [new GridView.extent]\nconstructors' `children` arguments correspond to the [childrenDelegate]\nbeing a [SliverChildListDelegate] with that same argument. The [new\nGridView.builder] constructor's `itemBuilder` and `childCount` arguments\ncorrespond to the [childrenDelegate] being a [SliverChildBuilderDelegate]\nwith the matching arguments.\n\nThe [new GridView.count] and [new GridView.extent] constructors create\ncustom grid delegates, and have equivalently named constructors on\n[SliverGrid] to ease the transition: [new SliverGrid.count] and [new\nSliverGrid.extent] respectively.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the grid itself, and having\nthe [SliverGrid] instead be a child of the [SliverPadding].\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [GridView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nGridView.count(\n primary: false,\n padding: const EdgeInsets.all(20.0),\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n primary: false,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverGrid.count(\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ListView], which is scrollable, linear list of widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "GridView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Opacity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.\n\n\n\nThis example shows some [Text] when the `_visible` member field is true, and\nhides it when it is false:\n\n```dart\nOpacity(\n opacity: _visible ? 1.0 : 0.0,\n child: const Text('Now you see me, now you don\\'t!'),\n)\n```\n\nThis is more efficient than adding and removing the child widget from the\ntree on demand.\n\n## Performance considerations for opacity animation\n\nAnimating an [Opacity] widget directly causes the widget (and possibly its\nsubtree) to rebuild each frame, which is not very efficient. Consider using\nan [AnimatedOpacity] instead.\n\n## Transparent image\n\nIf only a single [Image] or [Color] needs to be composited with an opacity\nbetween 0.0 and 1.0, it's much faster to directly use them without [Opacity]\nwidgets.\n\nFor example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much\nfaster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`.\n\n\nThe following example draws an [Image] with 0.5 opacity without using\n[Opacity]:\n\n```dart\nImage.network(\n 'https://raw.githubusercontent.com/flutter/assets-for-api-docs/master/packages/diagrams/assets/blend_mode_destination.jpeg',\n color: Color.fromRGBO(255, 255, 255, 0.5),\n colorBlendMode: BlendMode.modulate\n)\n```\n\n\nDirectly drawing an [Image] or [Color] with opacity is faster than using\n[Opacity] on top of them because [Opacity] could apply the opacity to a\ngroup of widgets and therefore a costly offscreen buffer will be used.\nDrawing content into the offscreen buffer may also trigger render target\nswitches and such switching is particularly slow in older GPUs.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly, because it is either visible or hidden, rather than allowing\n fractional opacity values).\n * [ShaderMask], which can apply more elaborate effects to its child.\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [AnimatedOpacity], which uses an animation internally to efficiently\n animate opacity.\n * [FadeTransition], which uses a provided animation to efficiently animate\n opacity.\n * [Image], which can directly provide a partially transparent image with\n much less performance hit.", "detail": "", "kind": 7, "label": "Opacity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Card", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design card. A card has slightly rounded corners and a shadow.\n\nA card is a sheet of [Material] used to represent some related information,\nfor example an album, a geographical location, a meal, contact details, etc.\n\nThis is what it looks like when run:\n\n![A card with a slight shadow, consisting of two rows, one with an icon and\nsome text describing a musical, and the other with buttons for buying\ntickets or listening to the show.](https://flutter.github.io/assets-for-api-docs/assets/material/card.png)\n\n\nThis sample shows creation of a [Card] widget that shows album information\nand two actions.\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Card(\n child: Column(\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n const ListTile(\n leading: Icon(Icons.album),\n title: Text('The Enchanted Nightingale'),\n subtitle: Text('Music by Julie Gable. Lyrics by Sidney Stein.'),\n ),\n ButtonTheme.bar( // make buttons use the appropriate styles for cards\n child: ButtonBar(\n children: <Widget>[\n FlatButton(\n child: const Text('BUY TICKETS'),\n onPressed: () { /* ... */ },\n ),\n FlatButton(\n child: const Text('LISTEN'),\n onPressed: () { /* ... */ },\n ),\n ],\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSometimes the primary action area of a card is the card itself. Cards can be\none large touch target that shows a detail screen when tapped.\n\n\nThis sample shows creation of a [Card] widget that can be tapped. When\ntapped this [Card]'s [InkWell] displays an \"ink splash\" that fills the\nentire card.\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Card(\n child: InkWell(\n splashColor: Colors.blue.withAlpha(30),\n onTap: () {\n print('Card tapped.');\n },\n child: Container(\n width: 300,\n height: 100,\n child: Text('A card that can be tapped'),\n ),\n ),\n ),\n );\n}\n```\n\n\nSee also:\n\n * [ListTile], to display icons and text in a card.\n * [ButtonBar], to display buttons at the bottom of a card. Typically these\n would be styled using a [ButtonTheme] created with [new ButtonTheme.bar].\n * [showDialog], to display a modal card.\n * <https://material.io/design/components/cards.html>", "detail": "", "kind": 7, "label": "Card" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollHoldController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for holding a [Scrollable] stationary.\n\nAn object that implements this interface is returned by\n[ScrollPosition.hold]. It holds the scrollable stationary until an activity\nis started or the [cancel] method is called.", "detail": "", "kind": 7, "label": "ScrollHoldController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The Flutter logo, in widget form. This widget respects the [IconTheme].\nFor guidelines on using the Flutter logo, visit https://flutter.dev/brand.\n\nSee also:\n\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for showing icons the Material design icon library.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "FlutterLogo" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleResolutionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.localeResolutionCallback].\n\nIt is recommended to provide a [LocaleListResolutionCallback] instead of a\n[LocaleResolutionCallback] when possible, as [LocaleResolutionCallback] only\nreceives a subset of the information provided in [LocaleListResolutionCallback].\n\nA [LocaleResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the default\nlocale for the device after [LocaleListResolutionCallback] fails or is not provided.\n\nThis callback is also used if the app is created with a specific locale using\nthe [new WidgetsApp] `locale` parameter.\n\nThe [locale] is either the value of [WidgetsApp.locale], or the device's default\nlocale when the app started, or the device locale the user selected after the app\nwas started. The default locale is the first locale in the list of preferred\nlocales. If [locale] is null, then Flutter has not yet received the locale\ninformation from the platform. The [supportedLocales] parameter is just the value of\n[WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleListResolutionCallback], which takes a list of preferred locales (instead of one locale).\n Resolutions by [LocaleListResolutionCallback] take precedence over [LocaleResolutionCallback].", "detail": "(Locale locale, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownButtonHideUnderline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An inherited widget that causes any descendant [DropdownButton]\nwidgets to not include their regular underline.\n\nThis is used by [DataTable] to remove the underline from any\n[DropdownButton] widgets placed within material data tables, as\nrequired by the material design specification.", "detail": "", "kind": 7, "label": "DropdownButtonHideUnderline" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirectionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [Dismissible] to indicate that it has been dismissed in\nthe given `direction`.\n\nUsed by [Dismissible.onDismissed].", "detail": "(DismissDirection direction) → void", "kind": 7, "label": "DismissDirectionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An abstract widget for building widgets that gradually change their\nvalues over a period of time.\n\nSubclasses' States must provide a way to visit the subclass's relevant\nfields to animate. [ImplicitlyAnimatedWidget] will then automatically\ninterpolate and animate those fields using the provided duration and\ncurve when those fields change.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A route that blocks interaction with previous routes.\n\n[ModalRoute]s cover the entire [Navigator]. They are not necessarily\n[opaque], however; for example, a pop-up menu uses a [ModalRoute] but only\nshows the menu in a small box overlapping the previous route.\n\nThe `T` type argument is the return value of the route. If there is no\nreturn value, consider using `void` as the return value.", "detail": "", "kind": 7, "label": "ModalRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [BorderRadius]s.\n\nThis class specializes the interpolation of [Tween<BorderRadius>] to use\n[BorderRadius.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderRadiusTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for widgets that efficiently propagate information down the tree.\n\nTo obtain the nearest instance of a particular type of inherited widget from\na build context, use [BuildContext.inheritFromWidgetOfExactType].\n\nInherited widgets, when referenced in this way, will cause the consumer to\nrebuild when the inherited widget itself changes state.\n\n\n\nThe following is a skeleton of an inherited widget called `FrogColor`:\n\n```dart\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor) as FrogColor;\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n```\n\nThe convention is to provide a static method `of` on the [InheritedWidget]\nwhich does the call to [BuildContext.inheritFromWidgetOfExactType]. This\nallows the class to define its own fallback logic in case there isn't\na widget in scope. In the example above, the value returned will be\nnull in that case, but it could also have defaulted to a value.\n\nSometimes, the `of` method returns the data rather than the inherited\nwidget; for example, in this case it could have returned a [Color] instead\nof the `FrogColor` widget.\n\nOccasionally, the inherited widget is an implementation detail of another\nclass, and is therefore private. The `of` method in that case is typically\nput on the public class instead. For example, [Theme] is implemented as a\n[StatelessWidget] that builds a private inherited widget; [Theme.of] looks\nfor that inherited widget using [BuildContext.inheritFromWidgetOfExactType]\nand then returns the [ThemeData].\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CollapseMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The collapsing effect while the space bar expands or collapses.", "detail": "", "kind": 13, "label": "CollapseMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radio", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design radio button.\n\nUsed to select between a number of mutually exclusive values. When one radio\nbutton in a group is selected, the other radio buttons in the group cease to\nbe selected. The values are of type `T`, the type parameter of the [Radio]\nclass. Enums are commonly used for this purpose.\n\nThe radio button itself does not maintain any state. Instead, when the state\nof the radio button changes, the widget calls the [onChanged] callback.\nMost widget that use a radio button will listen for the [onChanged]\ncallback and rebuild the radio button with a new [groupValue] to update the\nvisual appearance of the radio button.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [RadioListTile], which combines this widget with a [ListTile] so that\n you can give the radio button a label.\n * [Slider], for selecting a value in a range.\n * [Checkbox] and [Switch], for toggling a particular value on or off.\n * <https://material.io/design/components/selection-controls.html#radio-buttons>", "detail": "", "kind": 7, "label": "Radio" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressDraggable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Makes its child draggable starting from long press.", "detail": "", "kind": 7, "label": "LongPressDraggable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlertDialog", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design alert dialog.\n\nAn alert dialog informs the user about situations that require\nacknowledgement. An alert dialog has an optional title and an optional list\nof actions. The title is displayed above the content and the actions are\ndisplayed below the content.\n\nIf the content is too large to fit on the screen vertically, the dialog will\ndisplay the title and the actions and let the content overflow, which is\nrarely desired. Consider using a scrolling widget for [content], such as\n[SingleChildScrollView], to avoid overflow. (However, be aware that since\n[AlertDialog] tries to size itself using the intrinsic dimensions of its\nchildren, widgets such as [ListView], [GridView], and [CustomScrollView],\nwhich use lazy viewports, will not work. If this is a problem, consider\nusing [Dialog] directly.)\n\nFor dialogs that offer the user a choice between several options, consider\nusing a [SimpleDialog].\n\nTypically passed as the child widget to [showDialog], which displays the\ndialog.\n\n\nThis snippet shows a method in a [State] which, when called, displays a dialog box\nand returns a [Future] that completes when the dialog is dismissed.\n\n```dart\nFuture<void> _neverSatisfied() async {\n return showDialog<void>(\n context: context,\n barrierDismissible: false, // user must tap button!\n builder: (BuildContext context) {\n return AlertDialog(\n title: Text('Rewind and remember'),\n content: SingleChildScrollView(\n child: ListBody(\n children: <Widget>[\n Text('You will never be satisfied.'),\n Text('You\\’re like me. I’m never satisfied.'),\n ],\n ),\n ),\n actions: <Widget>[\n FlatButton(\n child: Text('Regret'),\n onPressed: () {\n Navigator.of(context).pop();\n },\n ),\n ],\n );\n },\n );\n}\n```\n\nSee also:\n\n * [SimpleDialog], which handles the scrolling of the contents but has no [actions].\n * [Dialog], on which [AlertDialog] and [SimpleDialog] are based.\n * [CupertinoAlertDialog], an iOS-styled alert dialog.\n * [showDialog], which actually displays the dialog and returns its result.\n * <https://material.io/design/components/dialogs.html#alert-dialog>", "detail": "", "kind": 7, "label": "AlertDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A graphical icon widget drawn with a glyph from a font described in\nan [IconData] such as material's predefined [IconData]s in [Icons].\n\nIcons are not interactive. For an interactive icon, consider material's\n[IconButton].\n\nThere must be an ambient [Directionality] widget when using [Icon].\nTypically this is introduced automatically by the [WidgetsApp] or\n[MaterialApp].\n\nThis widget assumes that the rendered icon is squared. Non-squared icons may\nrender incorrectly.\n\n\nThis example shows how to use [Icon] to create an addition icon, in the\ncolor pink, and 30 x 30 pixels in size.\n\n```dart\nIcon(\n Icons.add,\n color: Colors.pink,\n size: 30.0,\n)\n```\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [Icons], for the list of available icons for use with this class.\n * [IconTheme], which provides ambient configuration for icons.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "Icon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBarView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A page view that displays the widget which corresponds to the currently\nselected tab. Typically used in conjunction with a [TabBar].\n\nIf a [TabController] is not provided, then there must be a [DefaultTabController]\nancestor.", "detail": "", "kind": 7, "label": "TabBarView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state of a [Step] which is used to control the style of the circle and\ntext.\n\nSee also:\n\n * [Step]", "detail": "", "kind": 13, "label": "StepState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidgetBaseState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for widgets with implicit animations that need to rebuild their\nwidget tree as the animation runs.\n\nThis class calls [build] each frame that the animation tickets. For a\nvariant that does not rebuild each frame, consider subclassing\n[ImplicitlyAnimatedWidgetState] directly.\n\nSubclasses must implement the [forEachTween] method to allow\n[AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields\nand animate them.", "detail": "", "kind": 7, "label": "AnimatedWidgetBaseState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePopDisposition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates whether the current route should be popped.\n\nUsed as the return value for [Route.willPop].\n\nSee also:\n\n * [WillPopScope], a widget that hooks into the route's [Route.willPop]\n mechanism.", "detail": "", "kind": 13, "label": "RoutePopDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrolling container that animates items when they are inserted or removed.\n\nThis widget's [AnimatedListState] can be used to dynamically insert or remove\nitems. To refer to the [AnimatedListState] either provide a [GlobalKey] or\nuse the static [of] method from an item's input callback.\n\nThis widget is similar to one created by [ListView.builder].", "detail": "", "kind": 7, "label": "AnimatedList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorScheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A set of twelve colors based on the\n[Material spec](https://material.io/design/color/the-color-system.html)\nthat can be used to configure the color properties of most components.\n\nThe [Theme] has a color scheme, [ThemeData.colorScheme], which is constructed\nwith [ColorScheme.fromSwatch].", "detail": "", "kind": 7, "label": "ColorScheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraintsTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [BoxConstraints].\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[BoxConstraints.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BoxConstraintsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkFeature", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual reaction on a piece of [Material].\n\nTo add an ink feature to a piece of [Material], obtain the\n[MaterialInkController] via [Material.of] and call\n[MaterialInkController.addInkFeature].", "detail": "", "kind": 7, "label": "InkFeature" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsApp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience class that wraps a number of widgets that are commonly\nrequired for an application.\n\nOne of the primary roles that [WidgetsApp] provides is binding the system\nback button to popping the [Navigator] or quitting the application.\n\nSee also: [CheckedModeBanner], [DefaultTextStyle], [MediaQuery],\n[Localizations], [Title], [Navigator], [Overlay], [SemanticsDebugger] (the\nwidgets wrapped by this one).", "detail": "", "kind": 7, "label": "WidgetsApp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for scroll views whose items have the same size.\n\nSimilar to a standard [ScrollController] but with the added convenience\nmechanisms to read and go to item indices rather than a raw pixel scroll\noffset.\n\nSee also:\n\n * [ListWheelScrollView], a scrollable view widget with fixed size items\n that this widget controls.\n * [FixedExtentMetrics], the `metrics` property exposed by\n [ScrollNotification] from [ListWheelScrollView] which can be used\n to listen to the current item index on a push basis rather than polling\n the [FixedExtentScrollController].", "detail": "", "kind": 7, "label": "FixedExtentScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays an image.\n\nSeveral constructors are provided for the various ways that an image can be\nspecified:\n\n * [new Image], for obtaining an image from an [ImageProvider].\n * [new Image.asset], for obtaining an image from an [AssetBundle]\n using a key.\n * [new Image.network], for obtaining an image from a URL.\n * [new Image.file], for obtaining an image from a [File].\n * [new Image.memory], for obtaining an image from a [Uint8List].\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\nTo automatically perform pixel-density-aware asset resolution, specify the\nimage using an [AssetImage] and make sure that a [MaterialApp], [WidgetsApp],\nor [MediaQuery] widget exists above the [Image] widget in the widget tree.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nSee also:\n\n * [Icon], which shows an image from a font.\n * [new Ink.image], which is the preferred way to show an image in a\n material application (especially if the image is in a [Material] and will\n have an [InkWell] on top of it).\n * [Image](https://api.flutter.dev/flutter/dart-ui/Image-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorber", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[SliverOverlapInjector].\n\nSee also:\n\n * [NestedScrollView], whose documentation has sample code showing how to\n use this widget.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPadding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that applies padding on each side of another sliver.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverPadding]\nis a basic sliver that insets another sliver by applying padding on each\nside.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a [SliverPersistentHeader] with\n`pinned:true` will cause the app bar to overlap earlier slivers (contrary to\nthe normal behavior of pinned app bars), and while the app bar is pinned,\nthe padding will scroll away.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.", "detail": "", "kind": 7, "label": "SliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRowInkWell", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular area of a Material that responds to touch but clips\nits ink splashes to the current table row of the nearest table.\n\nMust have an ancestor [Material] widget in which to cause ink\nreactions and an ancestor [Table] widget to establish a row.\n\nThe [TableRowInkWell] must be in the same coordinate space (modulo\ntranslations) as the [Table]. If it's rotated or scaled or\notherwise transformed, it will not be able to describe the\nrectangle of the row in its own coordinate system as a [Rect], and\nthus the splash will not occur. (In general, this is easy to\nachieve: just put the [TableRowInkWell] as the direct child of the\n[Table], and put the other contents of the cell inside it.)", "detail": "", "kind": 7, "label": "TableRowInkWell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stepper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material stepper widget that displays progress through a sequence of\nsteps. Steppers are particularly useful in the case of forms where one step\nrequires the completion of another one, or where multiple steps need to be\ncompleted in order to submit the whole form.\n\nThe widget is a flexible wrapper. A parent class should pass [currentStep]\nto this widget based on some logic triggered by the three callbacks that it\nprovides.\n\nSee also:\n\n * [Step]\n * <https://material.io/archive/guidelines/components/steppers.html>", "detail": "", "kind": 7, "label": "Stepper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A builder that builds a widget given a child.\n\nThe child should typically be part of the returned widget tree.\n\nUsed by [AnimatedBuilder.builder], as well as [WidgetsApp.builder] and\n[MaterialApp.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context, Widget child) → Widget", "kind": 7, "label": "TransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Viewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is bigger on the inside.\n\n[Viewport] is the visual workhorse of the scrolling machinery. It displays a\nsubset of its children according to its own dimensions and the given\n[offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[Viewport] hosts a bidirectional list of slivers, anchored on a [center]\nsliver, which is placed at the zero scroll offset. The center widget is\ndisplayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[Viewport] cannot contain box children directly. Instead, use a\n[SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [Viewport] into widgets that are easier to use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [ShrinkWrappingViewport], a variant of [Viewport] that shrink-wraps its\n contents along the main axis.", "detail": "", "kind": 7, "label": "Viewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a shape.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\nFor shapes that cannot be expressed as a rectangle with rounded corners use\n[PhysicalShape].\n\nSee also:\n\n * [DecoratedBox], which can apply more arbitrary shadow effects.\n * [ClipRect], which applies a clip to its child.", "detail": "", "kind": 7, "label": "PhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Baseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that positions its child according to the child's baseline.\n\nThis widget shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child. If [baseline] is less than the distance from\nthe top of the child to the baseline of the child, then the child\nis top-aligned instead.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [Center], a widget that centers its child within itself.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Baseline" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of an icon fulfilled by a font glyph.\n\nSee [Icons] for a number of predefined icons available for material\ndesign applications.", "detail": "", "kind": 7, "label": "IconData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An implementation of scroll physics that matches iOS.\n\nSee also:\n\n * [ClampingScrollSimulation], which implements Android scroll physics.", "detail": "", "kind": 7, "label": "BouncingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillRemaining", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[SliverFillRemaining] sizes its child to fill the viewport in the cross axis\nand to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CardTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [Card] widgets.\n\nDescendant widgets obtain the current [CardTheme] object using\n`CardTheme.of(context)`. Instances of [CardTheme] can be\ncustomized with [CardTheme.copyWith].\n\nTypically a [CardTheme] is specified as part of the overall [Theme]\nwith [ThemeData.cardTheme].\n\nAll [CardTheme] properties are `null` by default. When null, the [Card]\nwill use the values from [ThemeData] if they exist, otherwise it will\nprovide its own defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "CardTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableCanceledCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a [Draggable] is dropped without being accepted by a [DragTarget].\n\nUsed by [Draggable.onDraggableCanceled].", "detail": "(Velocity velocity, Offset offset) → void", "kind": 7, "label": "DraggableCanceledCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShrinkWrappingViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is bigger on the inside and shrink wraps its children in the\nmain axis.\n\n[ShrinkWrappingViewport] displays a subset of its children according to its\nown dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[ShrinkWrappingViewport] differs from [Viewport] in that [Viewport] expands\nto fill the main axis whereas [ShrinkWrappingViewport] sizes itself to match\nits children in the main axis. This shrink wrapping behavior is expensive\nbecause the children, and hence the viewport, could potentially change size\nwhenever the [offset] changes (e.g., because of a collapsing header).\n\n[ShrinkWrappingViewport] cannot contain box children directly. Instead, use\na [SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [ShrinkWrappingViewport] into widgets that are easier to\n use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [Viewport], a viewport that does not shrink-wrap its contents.", "detail": "", "kind": 7, "label": "ShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrackingScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScrollController] whose [initialScrollOffset] tracks its most recently\nupdated [ScrollPosition].\n\nThis class can be used to synchronize the scroll offset of two or more\nlazily created scroll views that share a single [TrackingScrollController].\nIt tracks the most recently updated scroll position and reports it as its\n`initialScrollOffset`.\n\n\nIn this example each [PageView] page contains a [ListView] and all three\n[ListView]'s share a [TrackingScrollController]. The scroll offsets of all\nthree list views will track each other, to the extent that's possible given\nthe different list lengths.\n\n```dart\nPageView(\n children: <Widget>[\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),\n ),\n ],\n)\n```\n\nIn this example the `_trackingController` would have been created by the\nstateful widget that built the widget tree.", "detail": "", "kind": 7, "label": "TrackingScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for stateful widgets that have exactly one inflated instance in\nthe tree.\n\nSuch widgets must be given a [GlobalKey]. This key can be generated by the\nsubclass from its [Type] object, e.g. by calling `super(key: new\nGlobalObjectKey(MyWidget))` where `MyWidget` is the name of the subclass.\n\nSince only one instance can be inflated at a time, there is only ever one\ncorresponding [State] object. That object is exposed, for convenience, via\nthe [currentState] property.\n\nWhen subclassing [UniqueWidget], provide the corresponding [State] subclass\nas the type argument.", "detail": "", "kind": 7, "label": "UniqueWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that scrolls.\n\nScrollable widgets consist of three pieces:\n\n 1. A [Scrollable] widget, which listens for various user gestures and\n implements the interaction design for scrolling.\n 2. A viewport widget, such as [Viewport] or [ShrinkWrappingViewport], which\n implements the visual design for scrolling by displaying only a portion\n of the widgets inside the scroll view.\n 3. One or more slivers, which are widgets that can be composed to created\n various scrolling effects, such as lists, grids, and expanding headers.\n\n[ScrollView] helps orchestrate these pieces by creating the [Scrollable] and\nthe viewport and deferring to its subclass to create the slivers.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedModalBarrier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself,\nand can be configured with an animated color value.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nThis widget is similar to [ModalBarrier] except that it takes an animated\n[color] instead of a single color.\n\nSee also:\n\n * [ModalRoute], which uses this widget.", "detail": "", "kind": 7, "label": "AnimatedModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The top-most region of a material design drawer. The header's [child]\nwidget, if any, is placed inside a [Container] whose [decoration] can be\npassed as an argument, inset by the given [padding].\n\nPart of the material design [Drawer].\n\nRequires one of its ancestors to be a [Material] widget. This condition is\nsatisfied by putting the [DrawerHeader] in a [Drawer].\n\nSee also:\n\n * [UserAccountsDrawerHeader], a variant of [DrawerHeader] that is\n specialized for showing user accounts.\n * <https://material.io/design/components/navigation-drawer.html>", "detail": "", "kind": 7, "label": "DrawerHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPaint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [CustomPaint] first asks its [painter] to paint on the\ncurrent canvas, then it paints its child, and then, after painting its\nchild, it asks its [foregroundPainter] to paint. The coordinate system of the\ncanvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing [CustomPainter].\n\n\nBecause custom paint calls its painters during paint, you cannot call\n`setState` or `markNeedsLayout` during the callback (the layout for this\nframe has already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [size], which defaults to\n[Size.zero]. [size] must not be null.\n\n[isComplex] and [willChange] are hints to the compositor's raster cache\nand must not be null.\n\n\nThis example shows how the sample custom painter shown at [CustomPainter]\ncould be used in a [CustomPaint] widget to display a background to some\ntext.\n\n```dart\nCustomPaint(\n painter: Sky(),\n child: Center(\n child: Text(\n 'Once upon a time...',\n style: const TextStyle(\n fontSize: 40.0,\n fontWeight: FontWeight.w900,\n color: Color(0xFFFFFFFF),\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomPainter], the class to extend when creating custom painters.\n * [Canvas], the class that a custom painter uses to paint.", "detail": "", "kind": 7, "label": "CustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicHeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Element that supports building children lazily for [ListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotatedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that rotates its child by a integral number of quarter turns.\n\nUnlike [Transform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.\n\n\nThis snippet rotates the child (some [Text]) so that it renders from bottom\nto top, like an axis label on a graph:\n\n```dart\nRotatedBox(\n quarterTurns: 3,\n child: const Text('Hello World!'),\n)\n```\n\nSee also:\n\n * [Transform], which is a paint effect that allows you to apply an\n arbitrary transform to a child.\n * [new Transform.rotate], which applies a rotation paint effect.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "RotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapInjector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [RenderSliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [RenderViewport] (probably a [RenderNestedScrollViewViewport]), so\nthat it will always be laid out before the [RenderSliverOverlapInjector]\nduring a particular frame.", "detail": "", "kind": 7, "label": "RenderSliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItemBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [PopupMenuButton] to lazily construct the items shown when\nthe button is pressed.\n\nUsed by [PopupMenuButton.itemBuilder].", "detail": "(BuildContext context) → List<PopupMenuEntry<T>>", "kind": 7, "label": "PopupMenuItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates a route for the given route settings.\n\nUsed by [Navigator.onGenerateRoute] and [Navigator.onUnknownRoute].", "detail": "(RouteSettings settings) → Route<dynamic>", "kind": 7, "label": "RouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPath", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using a path.\n\nCalls a callback on a delegate whenever the widget is to be\npainted. The callback returns a path and the widget prevents the\nchild from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized widgets:\n\n * To clip to a rectangle, consider [ClipRect].\n * To clip to an oval or circle, consider [ClipOval].\n * To clip to a rounded rectangle, consider [ClipRRect].\n\nTo clip to a particular [ShapeBorder], consider using either the\n[ClipPath.shape] static method or the [ShapeBorderClipper] custom clipper\nclass.", "detail": "", "kind": 7, "label": "ClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CloseButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design close button.\n\nA [CloseButton] is an [IconButton] with a \"close\" icon. When pressed, the\nclose button calls [Navigator.maybePop] to return to the previous route.\n\nUse a [CloseButton] instead of a [BackButton] on fullscreen dialogs or\npages that may solicit additional actions to close.\n\nSee also:\n\n * [AppBar], which automatically uses a [CloseButton] in its\n [AppBar.leading] slot when appropriate.\n * [BackButton], which is more appropriate for middle nodes in the\n navigation tree or where pages can be popped instantaneously with\n no user data consequence.\n * [IconButton], to create other material design icon buttons.", "detail": "", "kind": 7, "label": "CloseButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormField", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single form field.\n\nThis widget maintains the current state of the form field, so that updates\nand validation errors are visually reflected in the UI.\n\nWhen used inside a [Form], you can use methods on [FormState] to query or\nmanipulate the form data as a whole. For example, calling [FormState.save]\nwill invoke each [FormField]'s [onSaved] callback in turn.\n\nUse a [GlobalKey] with [FormField] if you want to retrieve its current\nstate, for example if you want one form field to depend on another.\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nSee also:\n\n * [Form], which is the widget that aggregates the form fields.\n * [TextField], which is a commonly used form field for entering text.", "detail": "", "kind": 7, "label": "FormField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The glue between the widgets layer and the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidgetState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for widgets with implicit animations.\n\n[ImplicitlyAnimatedWidgetState] requires that subclasses respond to the\nanimation, themselves. If you would like `setState()` to be called\nautomatically as the animation changes, use [AnimatedWidgetBaseState].\n\nSubclasses must implement the [forEachTween] method to allow\n[ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's\nfields and animate them.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidgetState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteTransitionsBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the function that builds a route's transitions.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildTransitions] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) → Widget", "kind": 7, "label": "RouteTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusManager", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manages the focus tree.\n\nThe focus tree keeps track of which [FocusNode] is the user's current\nkeyboard focus. The widget that owns the [FocusNode] often listens for\nkeyboard events.\n\nThe focus manager is responsible for holding the [FocusScopeNode] that is\nthe root of the focus tree and tracking which [FocusNode] has the overall\nfocus.\n\nThe [FocusManager] is held by the [WidgetsBinding] as\n[WidgetsBinding.focusManager]. The [FocusManager] is rarely accessed\ndirectly. Instead, to find the [FocusScopeNode] for a given [BuildContext],\nuse [FocusScope.of].\n\nThe [FocusManager] knows nothing about [FocusNode]s other than the one that\nis currently focused. If a [FocusScopeNode] is removed, then the\n[FocusManager] will attempt to focus the next [FocusScopeNode] in the focus\ntree that it maintains, but if the current focus in that [FocusScopeNode] is\nnull, it will stop there, and no [FocusNode] will have focus.\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusManager" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for [PageView].\n\nA page controller lets you manipulate which page is visible in a [PageView].\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nSee also:\n\n * [PageView], which is the widget this object controls.", "detail": "", "kind": 7, "label": "PageController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that is unique across the entire app.\n\nGlobal keys uniquely identify elements. Global keys provide access to other\nobjects that are associated with elements, such as the a [BuildContext] and,\nfor [StatefulWidget]s, a [State].\n\nWidgets that have global keys reparent their subtrees when they are moved\nfrom one location in the tree to another location in the tree. In order to\nreparent its subtree, a widget must arrive at its new location in the tree\nin the same animation frame in which it was removed from its old location in\nthe tree.\n\nGlobal keys are relatively expensive. If you don't need any of the features\nlisted above, consider using a [Key], [ValueKey], [ObjectKey], or\n[UniqueKey] instead.\n\nYou cannot simultaneously include two widgets in the tree with the same\nglobal key. Attempting to do so will assert at runtime.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "GlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Enables or disables tickers (and thus animation controllers) in the widget\nsubtree.\n\nThis only works if [AnimationController] objects are created using\nwidget-aware ticker providers. For example, using a\n[TickerProviderStateMixin] or a [SingleTickerProviderStateMixin].", "detail": "", "kind": 7, "label": "TickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An item in a material design popup menu.\n\nTo show a popup menu, use the [showMenu] function. To create a button that\nshows a popup menu, consider using [PopupMenuButton].\n\nTo show a checkmark next to a popup menu item, consider using\n[CheckedPopupMenuItem].\n\nTypically the [child] of a [PopupMenuItem] is a [Text] widget. More\nelaborate menus with icons can use a [ListTile]. By default, a\n[PopupMenuItem] is 48 pixels high. If you use a widget with a different\nheight, it must be specified in the [height] property.\n\n\nHere, a [Text] widget is used with a popup menu item. The `WhyFarther` type\nis an enum, not shown here.\n\n```dart\nconst PopupMenuItem<WhyFarther>(\n value: WhyFarther.harder,\n child: Text('Working a lot harder'),\n)\n```\n\nSee the example at [PopupMenuButton] for how this example could be used in a\ncomplete menu, and see the example at [CheckedPopupMenuItem] for one way to\nkeep the text of [PopupMenuItem]s that use [Text] widgets in their [child]\nslot aligned with the text of [CheckedPopupMenuItem]s or of [PopupMenuItem]\nthat use a [ListTile] in their [child] slot.\n\nSee also:\n\n * [PopupMenuDivider], which can be used to divide items from each other.\n * [CheckedPopupMenuItem], a variant of [PopupMenuItem] with a checkmark.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "PopupMenuItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Column", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in a vertical array.\n\nTo cause a child to expand to fill the available vertical space, wrap the\nchild in an [Expanded] widget.\n\nThe [Column] widget does not scroll (and in general it is considered an error\nto have more children in a [Column] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a horizontal variant, see [Row].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example uses a [Column] to arrange three widgets vertically, the last\nbeing made to fill all the remaining space.\n\n```dart\nColumn(\n children: <Widget>[\n Text('Deliver features faster'),\n Text('Craft beautiful UIs'),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\nIn the sample above, the text and the logo are centered on each line. In the\nfollowing example, the [crossAxisAlignment] is set to\n[CrossAxisAlignment.start], so that the children are left-aligned. The\n[mainAxisSize] is set to [MainAxisSize.min], so that the column shrinks to\nfit the children.\n\n```dart\nColumn(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n Text('We move under cover and we move as one'),\n Text('Through the night, we have one shot to live another day'),\n Text('We cannot let a stray gunshot give us away'),\n Text('We will fight up close, seize the moment and stay in it'),\n Text('It’s either that or meet the business end of a bayonet'),\n Text('The code word is ‘Rochambeau,’ dig me?'),\n Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),\n ],\n)\n```\n\n## Troubleshooting\n\n### When the incoming vertical constraints are unbounded\n\nWhen a [Column] has one or more [Expanded] or [Flexible] children, and is\nplaced in another [Column], or in a [ListView], or in some other context\nthat does not provide a maximum height constraint for the [Column], you will\nget an exception at runtime saying that there are children with non-zero\nflex but the vertical constraints are unbounded.\n\nThe problem, as described in the details that accompany that exception, is\nthat using [Flexible] or [Expanded] means that the remaining space after\nlaying out all the other children must be shared equally, but if the\nincoming vertical constraints are unbounded, there is infinite remaining\nspace.\n\nThe key to solving this problem is usually to determine why the [Column] is\nreceiving unbounded vertical constraints.\n\nOne common reason for this to happen is that the [Column] has been placed in\nanother [Column] (without using [Expanded] or [Flexible] around the inner\nnested [Column]). When a [Column] lays out its non-flex children (those that\nhave neither [Expanded] or [Flexible] around them), it gives them unbounded\nconstraints so that they can determine their own dimensions (passing\nunbounded constraints usually signals to the child that it should\nshrink-wrap its contents). The solution in this case is typically to just\nwrap the inner column in an [Expanded] to indicate that it should take the\nremaining space of the outer column, rather than being allowed to take any\namount of room it desires.\n\nAnother reason for this message to be displayed is nesting a [Column] inside\na [ListView] or other vertical scrollable. In that scenario, there really is\ninfinite vertical space (the whole point of a vertical scrolling list is to\nallow infinite space vertically). In such scenarios, it is usually worth\nexamining why the inner [Column] should have an [Expanded] or [Flexible]\nchild: what size should the inner children really be? The solution in this\ncase is typically to remove the [Expanded] or [Flexible] widgets from around\nthe inner children.\n\nFor more discussion about constraints, see [BoxConstraints].\n\n### The yellow and black striped banner\n\nWhen the contents of a [Column] exceed the amount of space available, the\n[Column] overflows, and the contents are clipped. In debug mode, a yellow\nand black striped bar is rendered at the overflowing edge to indicate the\nproblem, and a message is printed below the [Column] saying how much\noverflow was detected.\n\nThe usual solution is to use a [ListView] rather than a [Column], to enable\nthe contents to scroll when vertical space is limited.\n\n## Layout algorithm\n\n_This section describes how a [Column] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Column] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded vertical constraints and the incoming\n horizontal constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight horizontal constraints\n that match the incoming max width.\n2. Divide the remaining vertical space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of vertical space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same horizontal\n constraints as in step 1, but instead of using unbounded vertical\n constraints, use vertical constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The width of the [Column] is the maximum width of the children (which\n will always satisfy the incoming horizontal constraints).\n5. The height of the [Column] is determined by the [mainAxisSize] property.\n If the [mainAxisSize] property is [MainAxisSize.max], then the height of\n the [Column] is the max height of the incoming constraints. If the\n [mainAxisSize] property is [MainAxisSize.min], then the height of the\n [Column] is the sum of heights of the children (subject to the incoming\n constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any vertical\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a horizontal equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may size smaller (leaving some remaining room unused).\n * [SingleChildScrollView], whose documentation discusses some ways to\n use a [Column] inside a scrolling container.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Column" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAlive", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Mark a child as needing to stay alive even when it's in a lazy list that\nwould otherwise remove it.\n\nThis widget is for use in [SliverWithKeepAliveWidget]s, such as\n[SliverGrid] or [SliverList].\n\nThis widget is rarely used directly. The [SliverChildBuilderDelegate] and\n[SliverChildListDelegate] delegates, used with [SliverList] and\n[SliverGrid], as well as the scroll view counterparts [ListView] and\n[GridView], have an `addAutomaticKeepAlives` feature, which is enabled by\ndefault, and which causes [AutomaticKeepAlive] widgets to be inserted around\neach child, causing [KeepAlive] widgets to be automatically added and\nconfigured in response to [KeepAliveNotification]s.\n\nTherefore, to keep a widget alive, it is more common to use those\nnotifications than to directly deal with [KeepAlive] widgets.\n\nIn practice, the simplest way to deal with these notifications is to mix\n[AutomaticKeepAliveClientMixin] into one's [State]. See the documentation\nfor that mixin class for details.", "detail": "", "kind": 7, "label": "KeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageBucket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A storage bucket associated with a page in an app.\n\nUseful for storing per-page state that persists across navigations from one\npage to another.", "detail": "", "kind": 7, "label": "PageStorageBucket" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics for environments that allow the scroll offset to go beyond\nthe bounds of the content, but then bounce the content back to the edge of\nthose bounds.\n\nThis is the behavior typically seen on iOS.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on iOS.\n * [ClampingScrollPhysics], which is the analogous physics for Android's\n clamping behavior.", "detail": "", "kind": 7, "label": "BouncingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedIconData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Vector graphics data for icons used by [AnimatedIcon].\n\nInstances of this class are currently opaque because we have not committed to a specific\nanimated vector graphics format.\n\nSee also:\n\n * [AnimatedIcons], a class that contains constants that implement this interface.", "detail": "", "kind": 7, "label": "AnimatedIconData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Semantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that annotates the widget tree with a description of the meaning of\nthe widgets.\n\nUsed by accessibility tools, search engines, and other semantic analysis\nsoftware to determine the meaning of the application.\n\nSee also:\n\n * [MergeSemantics], which marks a subtree as being a single node for\n accessibility purposes.\n * [ExcludeSemantics], which excludes a subtree from the semantics tree\n (which might be useful if it is, e.g., totally decorative and not\n important to the user).\n * [RenderObject.semanticsAnnotator], the rendering library API through which\n the [Semantics] widget is actually implemented.\n * [SemanticsNode], the object used by the rendering library to represent\n semantics in the semantics tree.\n * [SemanticsDebugger], an overlay to help visualize the semantics tree. Can\n be enabled using [WidgetsApp.showSemanticsDebugger] or\n [MaterialApp.showSemanticsDebugger].", "detail": "", "kind": 7, "label": "Semantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Draggable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that can be dragged from to a [DragTarget].\n\nWhen a draggable widget recognizes the start of a drag gesture, it displays\na [feedback] widget that tracks the user's finger across the screen. If the\nuser lifts their finger while on top of a [DragTarget], that target is given\nthe opportunity to accept the [data] carried by the draggable.\n\nOn multitouch devices, multiple drags can occur simultaneously because there\ncan be multiple pointers in contact with the device at once. To limit the\nnumber of simultaneous drags, use the [maxSimultaneousDrags] property. The\ndefault is to allow an unlimited number of simultaneous drags.\n\nThis widget displays [child] when zero drags are under way. If\n[childWhenDragging] is non-null, this widget instead displays\n[childWhenDragging] when one or more drags are underway. Otherwise, this\nwidget always displays [child].\n\nSee also:\n\n * [DragTarget]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "Draggable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The direction in which a [Dismissible] can be dismissed.", "detail": "", "kind": 13, "label": "DismissDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Positioned", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned.\n\nA [Positioned] widget must be a descendant of a [Stack], and the path from\nthe [Positioned] widget to its enclosing [Stack] must contain only\n[StatelessWidget]s or [StatefulWidget]s (not other kinds of widgets, like\n[RenderObjectWidget]s).\n\n\nIf a widget is wrapped in a [Positioned], then it is a _positioned_ widget\nin its [Stack]. If the [top] property is non-null, the top edge of this child\nwill be positioned [top] layout units from the top of the stack widget. The\n[right], [bottom], and [left] properties work analogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [right] and [left] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nIf all three values on a particular axis are null, then the\n[Stack.alignment] property is used to position the child.\n\nIf all six values are null, the child is a non-positioned child. The [Stack]\nuses only the non-positioned children to size itself.\n\nSee also:\n\n * [PositionedDirectional], which adapts to the ambient [Directionality].", "detail": "", "kind": 7, "label": "Positioned" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that is only equal to itself.", "detail": "", "kind": 7, "label": "UniqueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButtonLocation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that defines a position for the [FloatingActionButton]\nbased on the [Scaffold]'s [ScaffoldPrelayoutGeometry].\n\nFlutter provides [FloatingActionButtonLocation]s for the common\n[FloatingActionButton] placements in Material Design applications. These\nlocations are available as static members of this class.\n\nSee also:\n\n * [FloatingActionButton], which is a circular button typically shown in the\n bottom right corner of the app.\n * [FloatingActionButtonAnimator], which is used to animate the\n [Scaffold.floatingActionButton] from one [FloatingActionButtonLocation] to\n another.\n * [ScaffoldPrelayoutGeometry], the geometry that\n [FloatingActionButtonLocation]s use to position the [FloatingActionButton].", "detail": "", "kind": 7, "label": "FloatingActionButtonLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionallySizedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes its child to a fraction of the total available space.\nFor more details about the layout algorithm, see\n[RenderFractionallySizedOverflowBox].\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionallySizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaginatedDataTableState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the state of a [PaginatedDataTable].\n\nThe table can be programmatically paged using the [pageTo] method.", "detail": "", "kind": 7, "label": "PaginatedDataTableState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScopeNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interior node in the focus tree.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nThe interior nodes in the focus tree cannot themselves be focused but\ninstead remember previous focus states. A scope is currently active in its\nparent whenever [isFirstFocus] is true. If that scope is detached from its\nparent, its previous sibling becomes the parent's first focus.\n\nA [FocusNode] has the overall focus when the node is focused in its\nparent [FocusScopeNode] and [FocusScopeNode.isFirstFocus] is true for\nthat scope and all its ancestor scopes.\n\nIf a [FocusScopeNode] is removed, then the next sibling node will be set as\nthe focused node by the [FocusManager].\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].\n * [FocusScope], which is a widget that associates a [FocusScopeNode] with\n its location in the tree.", "detail": "", "kind": 7, "label": "FocusScopeNode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icons", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Identifiers for the supported material design icons.\n\nUse with the [Icon] class to show specific icons.\n\nIcons are identified by their name as listed below.\n\nTo use this class, make sure you set `uses-material-design: true` in your\nproject's `pubspec.yaml` file in the `flutter` section. This ensures that\nthe MaterialIcons font is included in your application. This font is used to\ndisplay the icons. For example:\n\n```yaml\nname: my_awesome_application\nflutter:\n uses-material-design: true\n```\n\nSee also:\n\n * [Icon]\n * [IconButton]\n * <https://design.google.com/icons/>", "detail": "", "kind": 7, "label": "Icons" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAlive", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Allows subtrees to request to be kept alive in lazy lists.\n\nThis widget is like [KeepAlive] but instead of being explicitly configured,\nit listens to [KeepAliveNotification] messages from the [child] and other\ndescendants.\n\nThe subtree is kept alive whenever there is one or more descendant that has\nsent a [KeepAliveNotification] and not yet triggered its\n[KeepAliveNotification.handle].\n\nTo send these notifications, consider using [AutomaticKeepAliveClientMixin].", "detail": "", "kind": 7, "label": "AutomaticKeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectableChipAttributes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be selected.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "SelectableChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReorderableListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A list whose items the user can interactively reorder by dragging.\n\nThis class is appropriate for views with a small number of\nchildren because constructing the [List] requires doing work for every\nchild that could possibly be displayed in the list view instead of just\nthose children that are actually visible.\n\nAll [children] must have a key.", "detail": "", "kind": 7, "label": "ReorderableListView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapAbsorber", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[RenderSliverOverlapInjector].", "detail": "", "kind": 7, "label": "RenderSliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataTableSource", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A data source for obtaining row data for [PaginatedDataTable] objects.\n\nA data table source provides two main pieces of information:\n\n* The number of rows in the data table ([rowCount]).\n* The data for each row (indexed from `0` to `rowCount - 1`).\n\nIt also provides a listener API ([addListener]/[removeListener]) so that\nconsumers of the data can be notified when it changes. When the data\nchanges, call [notifyListeners] to send the notifications.\n\nDataTableSource objects are expected to be long-lived, not recreated with\neach build.", "detail": "", "kind": 7, "label": "DataTableSource" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometryTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [EdgeInsetsGeometry]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsetsGeometry>] to\nuse [EdgeInsetsGeometry.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsTween], which interpolates between two [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryInitializer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.initializer].", "detail": "(T instance) → void", "kind": 7, "label": "GestureRecognizerFactoryInitializer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver whose size varies when the sliver is scrolled to the leading edge\nof the viewport.\n\nThis is the layout primitive that [SliverAppBar] uses for its\nshrinking/growing effect.", "detail": "", "kind": 7, "label": "SliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Chip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design chip.\n\nChips are compact elements that represent an attribute, text, entity, or\naction.\n\nSupplying a non-null [onDeleted] callback will cause the chip to include a\nbutton for deleting the chip.\n\nIts ancestors must include [Material], [MediaQuery], [Directionality], and\n[MaterialLocalizations]. Typically all of these widgets are provided by\n[MaterialApp] and [Scaffold]. The [label] and [clipBehavior] arguments must\nnot be null.\n\n\n```dart\nChip(\n avatar: CircleAvatar(\n backgroundColor: Colors.grey.shade800,\n child: Text('AB'),\n ),\n label: Text('Aaron Burr'),\n)\n```\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of entities.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "Chip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownMenuItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An item in a menu created by a [DropdownButton].\n\nThe type `T` is the type of the value the entry represents. All the entries\nin a given menu must represent values with consistent types.", "detail": "", "kind": 7, "label": "DropdownMenuItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [RootRenderObjectElement] that is hosted by a [RenderObject].\n\nThis element class is the instantiation of a [RenderObjectToWidgetAdapter]\nwidget. It can be used only as the root of an [Element] tree (it cannot be\nmounted into another [Element]; it's parent must be null).\n\nIn typical usage, it will be instantiated for a [RenderObjectToWidgetAdapter]\nwhose container is the [RenderView] that connects to the Flutter engine. In\nthis usage, it is normally instantiated by the bootstrapping logic in the\n[WidgetsFlutterBinding] singleton created by [runApp].", "detail": "", "kind": 7, "label": "RenderObjectToWidgetElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Wrap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in multiple horizontal or vertical runs.\n\nA [Wrap] lays out each child and attempts to place the child adjacent to the\nprevious child in the main axis, given by [direction], leaving [spacing]\nspace in between. If there is not enough space to fit the child, [Wrap]\ncreates a new _run_ adjacent to the existing children in the cross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].\n\n\n\nThis example renders some [Chip]s representing four contacts in a [Wrap] so\nthat they flow across lines as necessary.\n\n```dart\nWrap(\n spacing: 8.0, // gap between adjacent chips\n runSpacing: 4.0, // gap between lines\n children: <Widget>[\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('AH')),\n label: Text('Hamilton'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('ML')),\n label: Text('Lafayette'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('HM')),\n label: Text('Mulligan'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('JL')),\n label: Text('Laurens'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [Row], which places children in one line, and gives control over their\n alignment and spacing.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Wrap" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An inherited widget for a [Listenable] [notifier], which updates its\ndependencies when the [notifier] is triggered.\n\nThis is a variant of [InheritedWidget], specialized for subclasses of\n[Listenable], such as [ChangeNotifier] or [ValueNotifier].\n\nDependents are notified whenever the [notifier] sends notifications, or\nwhenever the identity of the [notifier] changes.\n\nMultiple notifications are coalesced, so that dependents only rebuild once\neven if the [notifier] fires multiple times between two frames.\n\nTypically this class is subclassed with a class that provides an `of` static\nmethod that calls [BuildContext.inheritFromWidgetOfExactType] with that\nclass.\n\nThe [updateShouldNotify] method may also be overridden, to change the logic\nin the cases where [notifier] itself is changed. The [updateShouldNotify]\nmethod is called with the old [notifier] in the case of the [notifier] being\nchanged. When it returns true, the dependents are marked as needing to be\nrebuilt this frame.\n\nSee also:\n\n * [Animation], an implementation of [Listenable] that ticks each frame to\n update a value.\n * [ViewportOffset] or its subclass [ScrollPosition], implementations of\n [Listenable] that trigger when a view is scrolled.\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedPopupMenuItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An item with a checkmark in a material design popup menu.\n\nTo show a popup menu, use the [showMenu] function. To create a button that\nshows a popup menu, consider using [PopupMenuButton].\n\nA [CheckedPopupMenuItem] is 48 pixels high, which matches the default height\nof a [PopupMenuItem]. The horizontal layout uses a [ListTile]; the checkmark\nis an [Icons.done] icon, shown in the [ListTile.leading] position.\n\n\nSuppose a `Commands` enum exists that lists the possible commands from a\nparticular popup menu, including `Commands.heroAndScholar` and\n`Commands.hurricaneCame`, and further suppose that there is a\n`_heroAndScholar` member field which is a boolean. The example below shows a\nmenu with one menu item with a checkmark that can toggle the boolean, and\none menu item without a checkmark for selecting the second option. (It also\nshows a divider placed between the two menu items.)\n\n```dart\nPopupMenuButton<Commands>(\n onSelected: (Commands result) {\n switch (result) {\n case Commands.heroAndScholar:\n setState(() { _heroAndScholar = !_heroAndScholar; });\n break;\n case Commands.hurricaneCame:\n // ...handle hurricane option\n break;\n // ...other items handled here\n }\n },\n itemBuilder: (BuildContext context) => <PopupMenuEntry<Commands>>[\n CheckedPopupMenuItem<Commands>(\n checked: _heroAndScholar,\n value: Commands.heroAndScholar,\n child: const Text('Hero and scholar'),\n ),\n const PopupMenuDivider(),\n const PopupMenuItem<Commands>(\n value: Commands.hurricaneCame,\n child: ListTile(leading: Icon(null), title: Text('Bring hurricane')),\n ),\n // ...other items listed here\n ],\n)\n```\n\nIn particular, observe how the second menu item uses a [ListTile] with a\nblank [Icon] in the [ListTile.leading] position to get the same alignment as\nthe item with the checkmark.\n\nSee also:\n\n * [PopupMenuItem], a popup menu entry for picking a command (as opposed to\n toggling a value).\n * [PopupMenuDivider], a popup menu entry that is just a horizontal line.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "CheckedPopupMenuItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedScrollMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable snapshot of values associated with a [Scrollable] viewport.\n\nFor details, see [ScrollMetrics], which defines this object's interfaces.", "detail": "", "kind": 7, "label": "FixedScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Padding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.\n\n\nThis snippet indents the child (a [Card] with some [Text]) by eight pixels\nin each direction:\n\n```dart\nPadding(\n padding: EdgeInsets.all(8.0),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\n## Design discussion\n\n### Why use a [Padding] widget rather than a [Container] with a [Container.padding] property?\n\nThere isn't really any difference between the two. If you supply a\n[Container.padding] argument, [Container] simply builds a [Padding] widget\nfor you.\n\n[Container] doesn't implement its properties directly. Instead, [Container]\ncombines a number of simpler widgets together into a convenient package. For\nexample, the [Container.padding] property causes the container to build a\n[Padding] widget and the [Container.decoration] property causes the\ncontainer to build a [DecoratedBox] widget. If you find [Container]\nconvenient, feel free to use it. If not, feel free to build these simpler\nwidgets in whatever combination meets your needs.\n\nIn fact, the majority of widgets in Flutter are simply combinations of other\nsimpler widgets. Composition, rather than inheritance, is the primary\nmechanism for building up widgets.\n\nSee also:\n\n * [EdgeInsets], the class that is used to describe the padding dimensions.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Padding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by [StatefulBuilder].\n\nCall [setState] to schedule the [StatefulBuilder] to rebuild.", "detail": "(BuildContext context, StateSetter setState) → Widget", "kind": 7, "label": "StatefulWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawMaterialButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates a button based on [Semantics], [Material], and [InkWell]\nwidgets.\n\nThis class does not use the current [Theme] or [ButtonTheme] to\ncompute default values for unspecified parameters. It's intended to\nbe used for custom Material buttons that optionally incorporate defaults\nfrom the themes or from app-specific sources.\n\n[RaisedButton] and [FlatButton] configure a [RawMaterialButton] based\non the current [Theme] and [ButtonTheme].", "detail": "", "kind": 7, "label": "RawMaterialButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildBuilderDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for slivers using a builder callback.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot even have to be built until they are displayed.\n\nThe widgets returned from the builder callback are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\n\nThis sample code shows how to use `semanticIndexOffset` to handle multiple\ndelegates in a single scroll view.\n\n```dart\nCustomScrollView(\n semanticChildCount: 4,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n ),\n ),\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n semanticIndexOffset: 2,\n ),\n ),\n ],\n)\n```\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\n\nThis sample code shows how to use `semanticIndexCallback` to handle\nannotating a subset of child nodes with a semantic index. There is\na [Spacer] widget at odd indexes which should not have a semantic\nindex.\n\n```dart\nCustomScrollView(\n semanticChildCount: 5,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n if (index.isEven) {\n return Text('...');\n }\n return Spacer();\n },\n semanticIndexCallback: (Widget widget, int localIndex) {\n if (localIndex.isEven) {\n return localIndex ~/ 2;\n }\n return null;\n },\n childCount: 10,\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.\n * [IndexedSemantics], for an example of manually annotating child nodes\n with semantic indexes.", "detail": "", "kind": 7, "label": "SliverChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box in which children on a wheel can be scrolled.\n\nThis widget is similar to a [ListView] but with the restriction that all\nchildren must be the same size along the scrolling axis.\n\nWhen the list is at the zero scroll offset, the first child is aligned with\nthe middle of the viewport. When the list is at the final scroll offset,\nthe last child is aligned with the middle of the viewport\n\nThe children are rendered as if rotating on a wheel instead of scrolling on\na plane.", "detail": "", "kind": 7, "label": "ListWheelScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SnackBarAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A button for a [SnackBar], known as an \"action\".\n\nSnack bar actions are always enabled. If you want to disable a snack bar\naction, simply don't include it in the snack bar.\n\nSnack bar actions can only be pressed once. Subsequent presses are ignored.\n\nSee also:\n\n * [SnackBar]\n * <https://material.io/design/components/snackbars.html>", "detail": "", "kind": 7, "label": "SnackBarAction" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedContainer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A container that gradually changes its values over a period of time.\n\nThe [AnimatedContainer] will automatically animate between the old and\nnew values of properties when they change using the provided curve and\nduration. Properties that are null are not animated. Its child and\ndescendants are not animated.\n\nThis class is useful for generating simple implicit transitions between\ndifferent parameters to [Container] with its internal [AnimationController].\nFor more complex animations, you'll likely want to use a subclass of\n[AnimatedWidget] such as the [DecoratedBoxTransition] or use your own\n[AnimationController].\n\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPadding], which is a subset of this widget that only\n supports animating the [padding].\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.\n * [AnimatedSwitcher], which switches out a child for a new one with a customizable transition.\n * [AnimatedCrossFade], which fades between two children and interpolates their sizes.", "detail": "", "kind": 7, "label": "AnimatedContainer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A utility class for defining one-off page routes in terms of callbacks.\n\nCallers must define the [pageBuilder] function which creates the route's\nprimary contents. To add transitions define the [transitionsBuilder] function.", "detail": "", "kind": 7, "label": "PageRouteBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has not changed its scroll position\nbecause the change would have caused its scroll position to go outside of\nits scroll bounds.\n\nSee also:\n\n * [ScrollUpdateNotification], which indicates that a [Scrollable] widget\n has changed its scroll position.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "OverscrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectableDayPredicate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for predicating dates for enabled date selections.\n\nSee [showDatePicker].", "detail": "(DateTime day) → bool", "kind": 7, "label": "SelectableDayPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteSettings", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Data that might be useful in constructing a [Route].", "detail": "", "kind": 7, "label": "RouteSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box with a specified size.\n\nIf given a child, this widget forces its child to have a specific width\nand/or height (assuming values are permitted by this widget's parent). If\neither the width or height is null, this widget will size itself to match\nthe child's size in that dimension.\n\nIf not given a child, this widget will size itself to the given width and\nheight, treating nulls as zero.\n\nThe [new SizedBox.expand] constructor can be used to make a [SizedBox] that\nsizes itself to fit the parent. It is equivalent to setting [width] and\n[height] to [double.infinity].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) have the\nexact size 200x300, parental constraints permitting:\n\n```dart\nSizedBox(\n width: 200.0,\n height: 300.0,\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nSee also:\n\n * [ConstrainedBox], a more generic version of this class that takes\n arbitrary [BoxConstraints] instead of an explicit width and height.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [FractionallySizedBox], a widget that sizes its child to a fraction of\n the total available space.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherTransitionBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for builders used to generate custom transitions for\n[AnimatedSwitcher].\n\nThe `child` should be transitioning in when the `animation` is running in\nthe forward direction.\n\nThe function should return a widget which wraps the given `child`. It may\nalso use the `animation` to inform its transition. It must not return null.", "detail": "(Widget child, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedSwitcherTransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].\n\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Ink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience widget for drawing images and other decorations on [Material]\nwidgets, so that [InkWell] and [InkResponse] splashes will render over them.\n\nInk splashes and highlights, as rendered by [InkWell] and [InkResponse],\ndraw on the actual underlying [Material], under whatever widgets are drawn\nover the material (such as [Text] and [Icon]s). If an opaque image is drawn\nover the [Material] (maybe using a [Container] or [DecoratedBox]), these ink\neffects will not be visible, as they will be entirely obscured by the opaque\ngraphics drawn above the [Material].\n\nThis widget draws the given [Decoration] directly on the [Material], in the\nsame way that [InkWell] and [InkResponse] draw there. This allows the\nsplashes to be drawn above the otherwise opaque graphics.\n\nAn alternative solution is to use a [MaterialType.transparency] material\nabove the opaque graphics, so that the ink responses from [InkWell]s and\n[InkResponse]s will be drawn on the transparent material on top of the\nopaque graphics, rather than under the opaque graphics on the underlying\n[Material].\n\n## Limitations\n\nThis widget is subject to the same limitations as other ink effects, as\ndescribed in the documentation for [Material]. Most notably, the position of\nan [Ink] widget must not change during the lifetime of the [Material] object\nunless a [LayoutChangedNotification] is dispatched each frame that the\nposition changes. This is done automatically for [ListView] and other\nscrolling widgets, but is not done for animated transitions such as\n[SlideTransition].\n\nAdditionally, if multiple [Ink] widgets paint on the same [Material] in the\nsame location, their relative order is not guaranteed. The decorations will\nbe painted in the order that they were added to the material, which\ngenerally speaking will match the order they are given in the widget tree,\nbut this order may appear to be somewhat random in more dynamic situations.\n\n\nThis example shows how a [Material] widget can have a yellow rectangle drawn\non it using [Ink], while still having ink effects over the yellow rectangle:\n\n```dart\nMaterial(\n color: Colors.teal[900],\n child: Center(\n child: Ink(\n color: Colors.yellow,\n width: 200.0,\n height: 100.0,\n child: InkWell(\n onTap: () { /* ... */ },\n child: Center(\n child: Text('YELLOW'),\n )\n ),\n ),\n ),\n)\n```\n\nThe following example shows how an image can be printed on a [Material]\nwidget with an [InkWell] above it:\n\n```dart\nMaterial(\n color: Colors.grey[800],\n child: Center(\n child: Ink.image(\n image: AssetImage('cat.jpeg'),\n fit: BoxFit.cover,\n width: 300.0,\n height: 200.0,\n child: InkWell(\n onTap: () { /* ... */ },\n child: Align(\n alignment: Alignment.topLeft,\n child: Padding(\n padding: const EdgeInsets.all(10.0),\n child: Text('KITTEN', style: TextStyle(fontWeight: FontWeight.w900, color: Colors.white)),\n ),\n )\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [Container], a more generic form of this widget which paints itself,\n rather that deferring to the nearest [Material] widget.\n * [InkDecoration], the [InkFeature] subclass used by this widget to paint\n on [Material] widgets.\n * [InkWell] and [InkResponse], which also draw on [Material] widgets.", "detail": "", "kind": 7, "label": "Ink" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositioned", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Positioned] which automatically transitions the child's\nposition over a given duration whenever the given position changes.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositioned] will trigger a relayout\nas well.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositionedDirectional], which adapts to the ambient\n [Directionality] (the same as this widget, but for animating\n [PositionedDirectional]).", "detail": "", "kind": 7, "label": "AnimatedPositioned" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Container", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience widget that combines common painting, positioning, and sizing\nwidgets.\n\nA container first surrounds the child with [padding] (inflated by any\nborders present in the [decoration]) and then applies additional\n[constraints] to the padded extent (incorporating the `width` and `height`\nas constraints, if either is non-null). The container is then surrounded by\nadditional empty space described from the [margin].\n\nDuring painting, the container first applies the given [transform], then\npaints the [decoration] to fill the padded extent, then it paints the child,\nand finally paints the [foregroundDecoration], also filling the padded\nextent.\n\nContainers with no children try to be as big as possible unless the incoming\nconstraints are unbounded, in which case they try to be as small as\npossible. Containers with children size themselves to their children. The\n`width`, `height`, and [constraints] arguments to the constructor override\nthis.\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nSince [Container] combines a number of other widgets each with their own\nlayout behavior, [Container]'s layout behavior is somewhat complicated.\n\nSummary: [Container] tries, in order: to honor [alignment], to size itself\nto the [child], to honor the `width`, `height`, and [constraints], to expand\nto fit the parent, to be as small as possible.\n\nMore specifically:\n\nIf the widget has no child, no `height`, no `width`, no [constraints],\nand the parent provides unbounded constraints, then [Container] tries to\nsize as small as possible.\n\nIf the widget has no child and no [alignment], but a `height`, `width`, or\n[constraints] are provided, then the [Container] tries to be as small as\npossible given the combination of those constraints and the parent's\nconstraints.\n\nIf the widget has no child, no `height`, no `width`, no [constraints], and\nno [alignment], but the parent provides bounded constraints, then\n[Container] expands to fit the constraints provided by the parent.\n\nIf the widget has an [alignment], and the parent provides unbounded\nconstraints, then the [Container] tries to size itself around the child.\n\nIf the widget has an [alignment], and the parent provides bounded\nconstraints, then the [Container] tries to expand to fit the parent, and\nthen positions the child within itself as per the [alignment].\n\nOtherwise, the widget has a [child] but no `height`, no `width`, no\n[constraints], and no [alignment], and the [Container] passes the\nconstraints from the parent to the child and sizes itself to match the\nchild.\n\nThe [margin] and [padding] properties also affect the layout, as described\nin the documentation for those properties. (Their effects merely augment the\nrules described above.) The [decoration] can implicitly increase the\n[padding] (e.g. borders in a [BoxDecoration] contribute to the [padding]);\nsee [Decoration.padding].\n\nThis example shows a 48x48 amber square (placed inside a [Center] widget in\ncase the parent widget has its own opinions regarding the size that the\n[Container] should take), with a margin so that it stays away from\nneighboring widgets:\n\n![An amber colored container with the dimensions of 48 square pixels.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_a.png)\n\n```dart\nCenter(\n child: Container(\n margin: const EdgeInsets.all(10.0),\n color: Colors.amber[600],\n width: 48.0,\n height: 48.0,\n ),\n)\n```\n\n\nThis example shows how to use many of the features of [Container] at once.\nThe [constraints] are set to fit the font size plus ample headroom\nvertically, while expanding horizontally to fit the parent. The [padding] is\nused to make sure there is space between the contents and the text. The\n[color] makes the box blue. The [alignment] causes the [child] to be\ncentered in the box. Finally, the [transform] applies a slight rotation to the\nentire contraption to complete the effect.\n\n![A blue rectangular container with 'Hello World' in the center, rotated\nslightly in the z axis.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_b.png)\n\n```dart\nContainer(\n constraints: BoxConstraints.expand(\n height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,\n ),\n padding: const EdgeInsets.all(8.0),\n color: Colors.blue[600],\n alignment: Alignment.center,\n child: Text('Hello World',\n style: Theme.of(context)\n .textTheme\n .display1\n .copyWith(color: Colors.white)),\n transform: Matrix4.rotationZ(0.1),\n)\n```\n\nSee also:\n\n * [AnimatedContainer], a variant that smoothly animates the properties when\n they change.\n * [Border], which has a sample which uses [Container] heavily.\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Container" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnderlineInputBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Draws a horizontal line at the bottom of an [InputDecorator]'s container and\ndefines the container's shape.\n\nThe input decorator's \"container\" is the optionally filled area above the\ndecorator's helper, error, and counter.\n\nSee also:\n\n * [OutlineInputBorder], an [InputDecorator] border which draws a\n rounded rectangle around the input decorator's container.\n * [InputDecoration], which is used to configure an [InputDecorator].", "detail": "", "kind": 7, "label": "UnderlineInputBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkWell", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular area of a [Material] that responds to touch.\n\nFor a variant of this widget that does not clip splashes, see [InkResponse].\n\nThe following diagram shows how an [InkWell] looks when tapped, when using\ndefault values.\n\n![The highlight is a rectangle the size of the box.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_well.png)\n\nThe [InkWell] widget must have a [Material] widget as an ancestor. The\n[Material] widget is where the ink reactions are actually painted. This\nmatches the material design premise wherein the [Material] is what is\nactually reacting to touches by spreading ink.\n\nIf a Widget uses this class directly, it should include the following line\nat the top of its build function to call [debugCheckHasMaterial]:\n\n```dart\nassert(debugCheckHasMaterial(context));\n```\n\n## Troubleshooting\n\n### The ink splashes aren't visible!\n\nIf there is an opaque graphic, e.g. painted using a [Container], [Image], or\n[DecoratedBox], between the [Material] widget and the [InkWell] widget, then\nthe splash won't be visible because it will be under the opaque graphic.\nThis is because ink splashes draw on the underlying [Material] itself, as\nif the ink was spreading inside the material.\n\nThe [Ink] widget can be used as a replacement for [Image], [Container], or\n[DecoratedBox] to ensure that the image or decoration also paints in the\n[Material] itself, below the ink.\n\nIf this is not possible for some reason, e.g. because you are using an\nopaque [CustomPaint] widget, alternatively consider using a second\n[Material] above the opaque widget but below the [InkWell] (as an\nancestor to the ink well). The [MaterialType.transparency] material\nkind can be used for this purpose.\n\nSee also:\n\n * [GestureDetector], for listening for gestures without ink splashes.\n * [RaisedButton] and [FlatButton], two kinds of buttons in material design.\n * [InkResponse], a variant of [InkWell] that doesn't force a rectangular\n shape on the ink reaction.", "detail": "", "kind": 7, "label": "InkWell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [Border]s.\n\nThis class specializes the interpolation of [Tween<Border>] to use\n[Border.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that scrolls.\n\n[Scrollable] implements the interaction model for a scrollable widget,\nincluding gesture recognition, but does not have an opinion about how the\nviewport, which actually displays the children, is constructed.\n\nIt's rare to construct a [Scrollable] directly. Instead, consider [ListView]\nor [GridView], which combine scrolling, viewporting, and a layout model. To\ncombine layout models (or to use a custom layout mode), consider using\n[CustomScrollView].\n\nThe static [Scrollable.of] and [Scrollable.ensureVisible] functions are\noften used to interact with the [Scrollable] widget inside a [ListView] or\na [GridView].\n\nTo further customize scrolling behavior with a [Scrollable]:\n\n1. You can provide a [viewportBuilder] to customize the child model. For\n example, [SingleChildScrollView] uses a viewport that displays a single\n box child whereas [CustomScrollView] uses a [Viewport] or a\n [ShrinkWrappingViewport], both of which display a list of slivers.\n\n2. You can provide a custom [ScrollController] that creates a custom\n [ScrollPosition] subclass. For example, [PageView] uses a\n [PageController], which creates a page-oriented scroll position subclass\n that keeps the same page visible when the [Scrollable] resizes.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "Scrollable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MonthPicker", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list of months to allow picking a month.\n\nShows the days of each month in a rectangular grid with one column for each\nday of the week.\n\nThe month picker widget is rarely used directly. Instead, consider using\n[showDatePicker], which creates a date picker dialog.\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.\n * [showTimePicker], which shows a dialog that contains a material design\n time picker.", "detail": "", "kind": 7, "label": "MonthPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageTransitionsTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the page transition animations used by [MaterialPageRoute]\nfor different [TargetPlatform]s.\n\nThe [MaterialPageRoute.buildTransitions] method looks up the current\ncurrent [PageTransitionsTheme] with `Theme.of(context).pageTransitionsTheme`\nand delegates to [buildTransitions].\n\nIf a builder with a matching platform is not found, then the\n[FadeUpwardsPageTransitionsBuilder] is used.\n\nSee also:\n\n * [ThemeData.pageTransitionsTheme], which defines the default page\n transitions for the overall theme.\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "PageTransitionsTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [EdgeInsets]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsets>] to use\n[EdgeInsets.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsGeometryTween], which interpolates between two\n [EdgeInsetsGeometry] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryWithHandlers", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Factory for creating gesture recognizers that delegates to callbacks.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactoryWithHandlers" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstrainedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that imposes additional constraints on its child.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[constraints].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) fill the\nparent, by applying [BoxConstraints.expand] constraints:\n\n```dart\nConstrainedBox(\n constraints: const BoxConstraints.expand(),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nThe same behavior can be obtained using the [new SizedBox.expand] widget.\n\nSee also:\n\n * [BoxConstraints], the class that describes constraints.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "ConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonThemeData] to configure the color and geometry of buttons.\n\nA button theme can be specified as part of the overall Material theme\nusing [ThemeData.buttonTheme]. The Material theme's button theme data\ncan be overridden with [ButtonTheme].\n\nThe actual appearance of buttons depends on the button theme, the\nbutton's enabled state, its elevation (if any), and the overall [Theme].\n\nSee also:\n\n * [FlatButton] [RaisedButton], and [OutlineButton], which are styled\n based on the ambient button theme.\n * [RawMaterialButton], which can be used to configure a button that doesn't\n depend on any inherited themes.", "detail": "", "kind": 7, "label": "ButtonTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListRemovedItemBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedListState.removeItem].", "detail": "(BuildContext context, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListRemovedItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItemState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [State] for [PopupMenuItem] subclasses.\n\nBy default this implements the basic styling and layout of Material Design\npopup menu items.\n\nThe [buildChild] method can be overridden to adjust exactly what gets placed\nin the menu. By default it returns [PopupMenuItem.child].\n\nThe [handleTap] method can be overridden to adjust exactly what happens when\nthe item is tapped. By default, it uses [Navigator.pop] to return the\n[PopupMenuItem.value] from the menu route.\n\nThis class takes two type arguments. The second, `W`, is the exact type of\nthe [Widget] that is using this [State]. It must be a subclass of\n[PopupMenuItem]. The first, `T`, must match the type argument of that widget\nclass, and is the type of values returned from this menu.", "detail": "", "kind": 7, "label": "PopupMenuItemState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBody", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that arranges its children sequentially along a given axis, forcing\nthem to the dimension of the parent in the other axis.\n\nThis widget is rarely used directly. Instead, consider using [ListView],\nwhich combines a similar layout algorithm with scrolling behavior, or\n[Column], which gives you more flexible control over the layout of a\nvertical set of boxes.\n\nSee also:\n\n * [RenderListBody], which implements this layout algorithm and the\n documentation for which describes some of its subtleties.\n * [SingleChildScrollView], which is sometimes used with [ListBody] to\n make the contents scrollable.\n * [Column] and [Row], which implement a more elaborate version of\n this layout algorithm (at the cost of being slightly less efficient).\n * [ListView], which implements an efficient scrolling version of this\n layout algorithm.", "detail": "", "kind": 7, "label": "ListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomMultiChildLayout", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that uses a delegate to size and position multiple children.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.\n\n[CustomMultiChildLayout] is appropriate when there are complex relationships\nbetween the size and positioning of a multiple widgets. To control the\nlayout of a single child, [CustomSingleChildLayout] is more appropriate. For\nsimple cases, such as aligning a widget to one or another edge, the [Stack]\nwidget is more appropriate.\n\nEach child must be wrapped in a [LayoutId] widget to identify the widget for\nthe delegate.\n\nSee also:\n\n * [MultiChildLayoutDelegate], for details about how to control the layout of\n the children.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Stack], which arranges children relative to the edges of the container.\n * [Flow], which provides paint-time control of its children using transform\n matrices.", "detail": "", "kind": 7, "label": "CustomMultiChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SwitchListTile", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] with a [Switch]. In other words, a switch with a label.\n\nThe entire list tile is interactive: tapping anywhere in the tile toggles\nthe switch.\n\nThe [value], [onChanged], [activeColor], [activeThumbImage], and\n[inactiveThumbImage] properties of this widget are identical to the\nsimilarly-named properties on the [Switch] widget.\n\nThe [title], [subtitle], [isThreeLine], and [dense] properties are like\nthose of the same name on [ListTile].\n\nThe [selected] property on this widget is similar to the [ListTile.selected]\nproperty, but the color used is that described by [activeColor], if any,\ndefaulting to the accent color of the current [Theme]. No effort is made to\ncoordinate the [selected] state and the [value] state; to have the list tile\nappear selected when the switch is on, pass the same value to both.\n\nThe switch is shown on the right by default in left-to-right languages (i.e.\nin the [ListTile.trailing] slot). The [secondary] widget is placed in the\n[ListTile.leading] slot. This cannot be changed; there is not sufficient\nspace in a [ListTile]'s [ListTile.leading] slot for a [Switch].\n\nTo show the [SwitchListTile] as disabled, pass null as the [onChanged]\ncallback.\n\n\nThis widget shows a switch that, when toggled, changes the state of a [bool]\nmember field called `_lights`.\n\n```dart\nSwitchListTile(\n title: const Text('Lights'),\n value: _lights,\n onChanged: (bool value) { setState(() { _lights = value; }); },\n secondary: const Icon(Icons.lightbulb_outline),\n)\n```\n\nSee also:\n\n * [ListTileTheme], which can be used to affect the style of list tiles,\n including switch list tiles.\n * [CheckboxListTile], a similar widget for checkboxes.\n * [RadioListTile], a similar widget for radio buttons.\n * [ListTile] and [Switch], the widgets from which this widget is made.", "detail": "", "kind": 7, "label": "SwitchListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An entry in the history of a [LocalHistoryRoute].", "detail": "", "kind": 7, "label": "LocalHistoryEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundSliderThumbShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s thumb.\n\nSee also:\n\n * [Slider], which includes a thumb defined by this shape.\n * [SliderTheme], which can be used to configure the thumb shape of all\n sliders in a widget subtree.", "detail": "", "kind": 7, "label": "RoundSliderThumbShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkHighlight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual emphasis on a part of a [Material] receiving user interaction.\n\nThis object is rarely created directly. Instead of creating an ink highlight\ndirectly, consider using an [InkResponse] or [InkWell] widget, which uses\ngestures (such as tap and long-press) to trigger ink highlights.\n\nSee also:\n\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink highlight is painted.\n * [InkSplash], which is an ink feature that shows a reaction to user input\n on a [Material].", "detail": "", "kind": 7, "label": "InkHighlight" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A modal route that replaces the entire screen.", "detail": "", "kind": 7, "label": "PageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current state of an [Overlay].\n\nUsed to insert [OverlayEntry]s into the overlay using the [insert] and\n[insertAll] functions.", "detail": "", "kind": 7, "label": "OverlayState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerControllerState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [DrawerController].\n\nTypically used by a [Scaffold] to [open] and [close] the drawer.", "detail": "", "kind": 7, "label": "DrawerControllerState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultWidgetsLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "US English localizations for the widgets library.\n\nSee also:\n\n * [GlobalWidgetsLocalizations], which provides widgets localizations for\n many languages.\n * [WidgetsApp.delegates], which automatically includes\n [DefaultWidgetsLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultWidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RepaintBoundary", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that creates a separate display list for its child.\n\nThis widget creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree.\n\nThis is useful since [RenderObject.paint] may be triggered even if its\nassociated [Widget] instances did not change or rebuild. A [RenderObject]\nwill repaint whenever any [RenderObject] that shares the same [Layer] is\nmarked as being dirty and needing paint (see [RenderObject.markNeedsPaint]),\nsuch as when an ancestor scrolls or when an ancestor or descendant animates.\n\nContaining [RenderObject.paint] to parts of the render subtree that are\nactually visually changing using [RepaintBoundary] explicitly or implicitly\nis therefore critical to minimizing redundant work and improving the app's\nperformance.\n\nWhen a [RenderObject] is flagged as needing to paint via\n[RenderObject.markNeedsPaint], the nearest ancestor [RenderObject] with\n[RenderObject.isRepaintBoundary], up to possibly the root of the application,\nis requested to repaint. That nearest ancestor's [RenderObject.paint] method\nwill cause _all_ of its descendant [RenderObject]s to repaint in the same\nlayer.\n\n[RepaintBoundary] is therefore used, both while propagating the\n`markNeedsPaint` flag up the render tree and while traversing down the\nrender tree via [RenderObject.paintChild], to strategically contain repaints\nto the render subtree that visually changed for performance. This is done\nbecause the [RepaintBoundary] widget creates a [RenderObject] that always\nhas a [Layer], decoupling ancestor render objects from the descendant\nrender objects.\n\n[RepaintBoundary] has the further side-effect of possibly hinting to the\nengine that it should further optimize animation performance if the render\nsubtree behind the [RepaintBoundary] is sufficiently complex and is static\nwhile the surrounding tree changes frequently. In those cases, the engine\nmay choose to pay a one time cost of rasterizing and caching the pixel\nvalues of the subtree for faster future GPU re-rendering speed.\n\nSeveral framework widgets insert [RepaintBoundary] widgets to mark natural\nseparation points in applications. For instance, contents in Material Design\ndrawers typically don't change while the drawer opens and closes, so\nrepaints are automatically contained to regions inside or outside the drawer\nwhen using the [Drawer] widget during transitions.\n\nSee also:\n\n * [debugRepaintRainbowEnabled], a debugging flag to help visually monitor\n render tree repaints in a running app.\n * [debugProfilePaintsEnabled], a debugging flag to show render tree\n repaints in the observatory's timeline view.", "detail": "", "kind": 7, "label": "RepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputCounterWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the [TextField.buildCounter] callback.", "detail": "(BuildContext context, {@required int currentLength, @required int maxLength, @required bool isFocused}) → Widget", "kind": 7, "label": "InputCounterWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RootRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The element at the root of the tree.\n\nOnly root elements may have their owner set explicitly. All other\nelements inherit their owner from their parent.", "detail": "", "kind": 7, "label": "RootRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single child slot. (This superclass only provides the storage\nfor that child, it doesn't actually provide the updating logic.)", "detail": "", "kind": 7, "label": "SingleChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportNotificationMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Mixin for [Notification]s that track how many [RenderAbstractViewport] they\nhave bubbled through.\n\nThis is used by [ScrollNotification] and [OverscrollIndicatorNotification].", "detail": "", "kind": 7, "label": "ViewportNotificationMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticFormatterCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A callback that formats a numeric value from a [Slider] widget.\n\nSee also:\n\n * [Slider.semanticFormatterCallback], which shows an example use case.", "detail": "(double value) → String", "kind": 7, "label": "SemanticFormatterCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeletableChipAttributes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be deleted.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "DeletableChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property describing a [double] [value] with an optional [unit] of measurement.\n\nNumeric formatting is optimized for debug message readability.", "detail": "", "kind": 7, "label": "DoubleProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CachingIterable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A lazy caching version of [Iterable].\n\nThis iterable is efficient in the following ways:\n\n * It will not walk the given iterator more than you ask for.\n\n * If you use it twice (e.g. you check [isNotEmpty], then\n use [single]), it will only walk the given iterator\n once. This caching will even work efficiently if you are\n running two side-by-side iterators on the same iterable.\n\n * [toList] uses its EfficientLength variant to create its\n list quickly.\n\nIt is inefficient in the following ways:\n\n * The first iteration through has caching overhead.\n\n * It requires more memory than a non-caching iterator.\n\n * The [length] and [toList] properties immediately pre-cache the\n entire list. Using these fields therefore loses the laziness of\n the iterable. However, it still gets cached.\n\nThe caching behavior is propagated to the iterators that are\ncreated by [map], [where], [expand], [take], [takeWhile], [skip],\nand [skipWhile], and is used by the built-in methods that use an\niterator like [isNotEmpty] and [single].\n\nBecause a CachingIterable only walks the underlying data once, it\ncannot be used multiple times with the underlying data changing\nbetween each use. You must create a new iterable each time. This\nalso applies to any iterables derived from this one, e.g. as\nreturned by `where`.", "detail": "", "kind": 7, "label": "CachingIterable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Factory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A factory interface that also reports the type of the created objects.", "detail": "", "kind": 7, "label": "Factory" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticableTree", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for providing string and [DiagnosticsNode] debug\nrepresentations describing the properties and children of an object.\n\nThe string debug representation is generated from the intermediate\n[DiagnosticsNode] representation. The [DiagnosticsNode] representation is\nalso used by debugging tools displaying interactive trees of objects and\nproperties.\n\nSee also:\n\n * [DiagnosticableTreeMixin], a mixin that implements this class.\n * [Diagnosticable], which should be used instead of this class to provide\n diagnostics for objects without children.", "detail": "", "kind": 7, "label": "DiagnosticableTree" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectFlagProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A property where the important diagnostic information is primarily whether\nthe [value] is present (non-null) or absent (null), rather than the actual\nvalue of the property itself.\n\nThe [ifPresent] and [ifNull] strings describe the property [value] when it\nis non-null and null respectively. If one of [ifPresent] or [ifNull] is\nomitted, that is taken to mean that [level] should be\n[DiagnosticLevel.hidden] when [value] is non-null or null respectively.\n\nThis kind of diagnostics property is typically used for values mostly opaque\nvalues, like closures, where presenting the actual object is of dubious\nvalue but where reporting the presence or absence of the value is much more\nuseful.\n\nSee also:\n\n * [FlagProperty], which provides similar functionality describing whether\n a [value] is true or false.", "detail": "", "kind": 7, "label": "ObjectFlagProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServiceExtensionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for service extensions.\n\nThe returned map must not contain the keys \"type\" or \"method\", as\nthey will be replaced before the value is sent to the client. The\n\"type\" key will be set to the string `_extensionType` to indicate\nthat this is a return value from a service extension, and the\n\"method\" key will be set to the full name of the method.", "detail": "(Map<String, String> parameters) → Future<Map<String, dynamic>>", "kind": 7, "label": "ServiceExtensionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that filter an iterable.", "detail": "(Iterable<T> input) → Iterable<T>", "kind": 7, "label": "IterableFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Summary", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An annotation that provides a short description of a class for use\nin an index.\n\nUsually the first paragraph of the documentation for a class can be used\nfor this purpose, but on occasion the first paragraph is either too short\nor too long for use in isolation, without the remainder of the documentation.\n\n\n```dart\n/// A famous cat.\n///\n/// Instances of this class can hunt small animals.\n/// This cat has three legs.\n@Category(<String>['Animals', 'Cats'])\n@Category(<String>['Cute', 'Pets'])\n@DocumentationIcon('https://www.examples.net/docs/images/icons/pillar.jpeg')\n@Summary('A famous three-legged cat.')\nclass Pillar extends Cat {\n // ...code...\n}\n```\n\nSee also:\n\n * [Category], to help place the class in an index.\n * [DocumentationIcon], which is used to give the URL to an image that\n represents the class.", "detail": "", "kind": 7, "label": "Summary" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseEntryCollector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks passed to [LicenseRegistry.addLicense].", "detail": "() → Stream<LicenseEntry>", "kind": 7, "label": "LicenseEntryCollector" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObserverList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A list optimized for containment queries.\n\nConsider using an [ObserverList] instead of a [List] when the number of\n[contains] calls dominates the number of [add] and [remove] calls.", "detail": "", "kind": 7, "label": "ObserverList" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComputePropertyValueCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for computing the value of a property.\n\nMay throw exception if accessing the property would throw an exception\nand callers must handle that case gracefully. For example, accessing a\nproperty may trigger an assert that layout constraints were violated.", "detail": "() → T", "kind": 7, "label": "ComputePropertyValueCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An int valued property with an optional unit the value is measured in.\n\nExamples of units include 'px' and 'ms'.", "detail": "", "kind": 7, "label": "IntProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticPropertiesBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builder to accumulate properties and configuration used to assemble a\n[DiagnosticsNode] from a [Diagnosticable] object.", "detail": "", "kind": 7, "label": "DiagnosticPropertiesBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A license that covers part of the application's software or assets, to show\nin an interface such as the [LicensePage].\n\nFor optimal performance, [LicenseEntry] objects should only be created on\ndemand in [LicenseEntryCollector] callbacks passed to\n[LicenseRegistry.addLicense].", "detail": "", "kind": 7, "label": "LicenseEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines diagnostics data for a [value].\n\n[DiagnosticsNode] provides a high quality multi-line string dump via\n[toStringDeep]. The core members are the [name], [toDescription],\n[getProperties], [value], and [getChildren]. All other members exist\ntypically to provide hints for how [toStringDeep] and debugging tools should\nformat output.", "detail": "", "kind": 7, "label": "DiagnosticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticableTreeMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps dump string and [DiagnosticsNode] representations of trees.\n\nThis mixin is identical to class [DiagnosticableTree].", "detail": "", "kind": 7, "label": "DiagnosticableTreeMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextTreeConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration specifying how a particular [DiagnosticsTreeStyle] should be\nrendered as text art.\n\nSee also:\n\n * [sparseTextConfiguration], which is a typical style.\n * [transitionTextConfiguration], which is an example of a complex tree style.\n * [DiagnosticsNode.toStringDeep], for code using [TextTreeConfiguration]\n to render text art for arbitrary trees of [DiagnosticsNode] objects.", "detail": "", "kind": 7, "label": "TextTreeConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReadBuffer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Read-only buffer for reading sequentially from a [ByteData] instance.\n\nThe byte order used is [Endian.host] throughout.", "detail": "", "kind": 7, "label": "ReadBuffer" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncValueSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set and return a\n[Future] that completes when the value has been saved.\n\nSee also:\n\n * [ValueSetter], a synchronous version of this signature.\n * [AsyncValueGetter], the getter equivalent of this signature.", "detail": "(T value) → Future<void>", "kind": 7, "label": "AsyncValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data, but that\nreturn a [Future] to indicate when their work is complete.\n\nSee also:\n\n * [VoidCallback], a synchronous version of this signature.\n * [AsyncValueGetter], a signature for asynchronous getters.\n * [AsyncValueSetter], a signature for asynchronous setters.", "detail": "() → Future<void>", "kind": 7, "label": "AsyncCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WriteBuffer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Write-only buffer for incrementally building a [ByteData] instance.\n\nA WriteBuffer instance can be used only once. Attempts to reuse will result\nin [NoSuchMethodError]s being thrown.\n\nThe byte order used is [Endian.host] throughout.", "detail": "", "kind": 7, "label": "WriteBuffer" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BindingBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for mixins that provide singleton services (also known as\n\"bindings\").\n\nTo use this class in an `on` clause of a mixin, inherit from it and implement\n[initInstances()]. The mixin is guaranteed to only be constructed once in\nthe lifetime of the app (more precisely, it will assert if constructed twice\nin checked mode).\n\nThe top-most layer used to write the application will have a concrete class\nthat inherits from [BindingBase] and uses all the various [BindingBase]\nmixins (such as [ServicesBinding]). For example, the Widgets library in\nFlutter introduces a binding called [WidgetsFlutterBinding]. The relevant\nlibrary defines how to create the binding. It could be implied (for example,\n[WidgetsFlutterBinding] is automatically started from [runApp]), or the\napplication might be required to explicitly call the constructor.", "detail": "", "kind": 7, "label": "BindingBase" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugPrintCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugPrint] implementations.", "detail": "(String message, {int wrapWidth}) → void", "kind": 7, "label": "DebugPrintCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseParagraph", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A string that represents one paragraph in a [LicenseEntry].\n\nSee [LicenseEntry.paragraphs].", "detail": "", "kind": 7, "label": "LicenseParagraph" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SynchronousFuture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Future] whose [then] implementation calls the callback immediately.\n\nThis is similar to [new Future.value], except that the value is available in\nthe same event-loop iteration.\n\n⚠ This class is useful in cases where you want to expose a single API, where\nyou normally want to have everything execute synchronously, but where on\nrare occasions you want the ability to switch to an asynchronous model. **In\ngeneral use of this class should be avoided as it is very difficult to debug\nsuch bimodal behavior.**", "detail": "", "kind": 7, "label": "SynchronousFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property with an `Iterable<T>` [value] that can be displayed with\ndifferent [DiagnosticsTreeStyle] for custom rendering.\n\nIf [style] is [DiagnosticsTreeStyle.singleLine], the iterable is described\nas a comma separated list, otherwise the iterable is described as a line\nbreak separated list.", "detail": "", "kind": 7, "label": "IterableProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Diagnosticable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for providing string and [DiagnosticsNode] debug\nrepresentations describing the properties of an object.\n\nThe string debug representation is generated from the intermediate\n[DiagnosticsNode] representation. The [DiagnosticsNode] representation is\nalso used by debugging tools displaying interactive trees of objects and\nproperties.\n\nSee also:\n\n * [DiagnosticableTree], which extends this class to also describe the\n children of a tree structured object.\n * [Diagnosticable.debugFillProperties], which lists best practices\n for specifying the properties of a [DiagnosticsNode]. The most common use\n case is to override [debugFillProperties] defining custom properties for\n a subclass of [DiagnosticableTreeMixin] using the existing\n [DiagnosticsProperty] subclasses.\n * [DiagnosticableTree.debugDescribeChildren], which lists best practices\n for describing the children of a [DiagnosticsNode]. Typically the base\n class already describes the children of a node properly or a node has\n no children.\n * [DiagnosticsProperty], which should be used to create leaf diagnostic\n nodes without properties or children. There are many\n [DiagnosticsProperty] subclasses to handle common use cases.", "detail": "", "kind": 7, "label": "Diagnosticable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BitField", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A BitField over an enum (or other class whose values implement \"index\").\nOnly the first 62 values of the enum can be used as indices.\n\nWhen compiling to JavaScript, this class is not supported.", "detail": "", "kind": 7, "label": "BitField" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsTreeStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles for displaying a node in a [DiagnosticsNode] tree.\n\nSee also:\n\n * [DiagnosticsNode.toStringDeep], which dumps text art trees for these\n styles.", "detail": "", "kind": 13, "label": "DiagnosticsTreeStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticableNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[DiagnosticsNode] that lazily calls the associated [Diagnosticable] [value]\nto implement [getChildren] and [getProperties].", "detail": "", "kind": 7, "label": "DiagnosticableNode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Unicode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Constants for useful Unicode characters.\n\nCurrently, these characters are all related to bidirectional text.\n\nSee also:\n\n * <http://unicode.org/reports/tr9/>, which describes the Unicode\n bidirectional text algorithm.", "detail": "", "kind": 7, "label": "Unicode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PercentProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which clamps a [double] to between 0 and 1 and formats it as a\npercentage.", "detail": "", "kind": 7, "label": "PercentProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for subclasses of [Listenable] that expose a [value].\n\nThis interface is implemented by [ValueNotifier<T>] and [Animation<T>], and\nallows other APIs to accept either of those implementations interchangeably.", "detail": "", "kind": 7, "label": "ValueListenable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlagProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property where the description is either [ifTrue] or [ifFalse] depending on\nwhether [value] is true or false.\n\nUsing [FlagProperty] instead of [DiagnosticsProperty<bool>] can make\ndiagnostics display more polished. For example, given a property named\n`visible` that is typically true, the following code will return 'hidden'\nwhen `visible` is false and nothing when visible is true, in contrast to\n`visible: true` or `visible: false`.\n\n\n```dart\nFlagProperty(\n 'visible',\n value: true,\n ifFalse: 'hidden',\n)\n```\n\n[FlagProperty] should also be used instead of [DiagnosticsProperty<bool>]\nif showing the bool value would not clearly indicate the meaning of the\nproperty value.\n\n```dart\nFlagProperty(\n 'inherit',\n value: inherit,\n ifTrue: '<all styles inherited>',\n ifFalse: '<no style specified>',\n)\n```\n\nSee also:\n\n * [ObjectFlagProperty], which provides similar behavior describing whether\n a [value] is null.", "detail": "", "kind": 7, "label": "FlagProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which encloses its string [value] in quotes.\n\nSee also:\n\n * [MessageProperty], which is a better fit for showing a message\n instead of describing a property with a string value.", "detail": "", "kind": 7, "label": "StringProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComputeCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback passed to [compute].\n\n\nInstances of [ComputeCallback] must be top-level functions or static methods\nof classes, not closures or instance methods of objects.\n", "detail": "(Q message) → FutureOr<R>", "kind": 7, "label": "ComputeCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DocumentationIcon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class annotation to provide a URL to an image that represents the class.\n\nEach class should only have one [DocumentationIcon].\n\n\n```dart\n/// Utility class for beginning a dream-sharing sequence.\n/// ...documentation...\n@Category(<String>['Military Technology', 'Experimental'])\n@DocumentationIcon('https://docs.example.org/icons/top.png')\nclass DreamSharing {\n // ...code...\n}\n```\n\nSee also:\n\n * [Category], to help place the class in an index.\n * [Summary], which is used to provide a one-line description of a\n class that overrides the inline documentations' own description.", "detail": "", "kind": 7, "label": "DocumentationIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbstractNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract node in a tree.\n\nAbstractNode has as notion of depth, attachment, and parent, but does not\nhave a model for children.\n\nWhen a subclass is changing the parent of a child, it should call either\n`parent.adoptChild(child)` or `parent.dropChild(child)` as appropriate.\nSubclasses can expose an API for manipulating the tree if desired (e.g. a\nsetter for a `child` property, or an `add()` method to manipulate a list).\n\nThe current parent node is exposed by the [parent] property.\n\nThe current attachment state is exposed by [attached]. The root of any tree\nthat is to be considered attached should be manually attached by calling\n[attach]. Other than that, the [attach] and [detach] methods should not be\ncalled directly; attachment is managed automatically by the aforementioned\n[adoptChild] and [dropChild] methods.\n\nSubclasses that have children must override [attach] and [detach] as\ndescribed in the documentation for those methods.\n\nNodes always have a [depth] greater than their ancestors'. There's no\nguarantee regarding depth between siblings. The depth of a node is used to\nensure that nodes are processed in depth order. The [depth] of a child can\nbe more than one greater than the [depth] of the parent, because the [depth]\nvalues are never decreased: all that matters is that it's greater than the\nparent. Consider a tree with a root node A, a child B, and a grandchild C.\nInitially, A will have [depth] 0, B [depth] 1, and C [depth] 2. If C is\nmoved to be a child of A, sibling of B, then the numbers won't change. C's\n[depth] will still be 2. The [depth] is automatically maintained by the\n[adoptChild] and [dropChild] methods.", "detail": "", "kind": 7, "label": "AbstractNode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Category", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A category with which to annotate a class, for documentation\npurposes.\n\nA category is usually represented as a section and a subsection, each\nof which is a string. The engineering team that owns the library to which\nthe class belongs defines the categories used for classes in that library.\nFor example, the Flutter engineering team has defined categories like\n\"Basic/Buttons\" and \"Material Design/Buttons\" for Flutter widgets.\n\nA class can have multiple categories.\n\n\n```dart\n/// A copper coffee pot, as desired by Ben Turpin.\n/// ...documentation...\n@Category(<String>['Pots', 'Coffee'])\n@Category(<String>['Copper', 'Cookware'])\n@DocumentationIcon('https://example.com/images/coffee.png')\n@Summary('A proper cup of coffee is made in a proper copper coffee pot.')\nclass CopperCoffeePot {\n // ...code...\n}\n```\n\nSee also:\n\n * [DocumentationIcon], which is used to give the URL to an image that\n represents the class.\n * [Summary], which is used to provide a one-line description of a\n class that overrides the inline documentations' own description.", "detail": "", "kind": 7, "label": "Category" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterExceptionHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [FlutterError.onError] handler.", "detail": "(FlutterErrorDetails details) → void", "kind": 7, "label": "FlutterExceptionHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncValueGetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to asynchronously report a value on demand.\n\nSee also:\n\n * [ValueGetter], a synchronous version of this signature.\n * [AsyncValueSetter], the setter equivalent of this signature.", "detail": "() → Future<T>", "kind": 7, "label": "AsyncValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EnumProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An property than displays enum values tersely.\n\nThe enum value is displayed with the class name stripped. For example:\n[HitTestBehavior.deferToChild] is shown as `deferToChild`.\n\nSee also:\n\n * [DiagnosticsProperty] which documents named parameters common to all\n [DiagnosticsProperty].", "detail": "", "kind": 7, "label": "EnumProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InformationCollector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [FlutterErrorDetails.informationCollector] callback\nand other callbacks that collect information into a string buffer.", "detail": "(StringBuffer information) → void", "kind": 7, "label": "InformationCollector" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property with a [value] of type [T].\n\nIf the default `value.toString()` does not provide an adequate description\nof the value, specify `description` defining a custom description.\n\nThe [showSeparator] property indicates whether a separator should be placed\nbetween the property [name] and its [value].", "detail": "", "kind": 7, "label": "DiagnosticsProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseRegistry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A registry for packages to add licenses to, so that they can be displayed\ntogether in an interface such as the [LicensePage].\n\nPackages can register their licenses using [addLicense]. User interfaces\nthat wish to show all the licenses can obtain them by calling [licenses].\n\nThe flutter tool will automatically collect the contents of all the LICENSE\nfiles found at the root of each package into a single LICENSE file in the\ndefault asset bundle. Each license in that file is separated from the next\nby a line of eighty hyphens (`-`), and begins with a list of package names\nthat the license applies to, one to a line, separated from the next by a\nblank line. The `services` package registers a license collector that splits\nthat file and adds each entry to the registry.\n\nThe LICENSE files in each package can either consist of a single license, or\ncan be in the format described above. In the latter case, each component\nlicense and list of package names is merged independently.\n\nSee also:\n\n * [showAboutDialog], which shows a Material-style dialog with information\n about the application, including a button that shows a [LicensePage] that\n uses this API to select licenses to show.\n * [AboutListTile], which is a widget that can be added to a [Drawer]. When\n tapped it calls [showAboutDialog].", "detail": "", "kind": 7, "label": "LicenseRegistry" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MessageProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Debugging message displayed like a property.\n\n\nThe following two properties are better expressed using this\n[MessageProperty] class, rather than [StringProperty], as the intent is to\nshow a message with property style display rather than to describe the value\nof an actual property of the object:\n\n```dart\nvar table = MessageProperty('table size', '$columns\\u00D7$rows');\nvar usefulness = MessageProperty('usefulness ratio', 'no metrics collected yet (never painted)');\n```\n\nOn the other hand, [StringProperty] is better suited when the property has a\nconcrete value that is a string:\n\n```dart\nvar name = StringProperty('name', _name);\n```\n\nSee also:\n\n * [DiagnosticsNode.message], which serves the same role for messages\n without a clear property name.\n * [StringProperty], which is a better fit for properties with string values.", "detail": "", "kind": 7, "label": "MessageProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseEntryWithLineBreaks", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [LicenseEntry] for licenses that separate paragraphs with blank\nlines and that hard-wrap text within paragraphs. Lines that begin with one\nor more space characters are also assumed to introduce new paragraphs,\nunless they start with the same number of spaces as the previous line, in\nwhich case it's assumed they are a continuation of an indented paragraph.\n\n\nFor example, the BSD license in this format could be encoded as follows:\n\n```dart\nvoid initMyLibrary() {\n LicenseRegistry.addLicense(() async* {\n yield LicenseEntryWithLineBreaks(<String>['my_library'], '''\nCopyright 2016 The Sample Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Example Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.''');\n });\n}\n```\n\nThis would result in a license with six [paragraphs], the third, fourth, and\nfifth being indented one level.\n\n## Performance considerations\n\nComputing the paragraphs is relatively expensive. Doing the work for one\nlicense per frame is reasonable; doing more at the same time is ill-advised.\nConsider doing all the work at once using [compute] to move the work to\nanother thread, or spreading the work across multiple frames using\n[scheduleTask].", "detail": "", "kind": 7, "label": "LicenseEntryWithLineBreaks" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showSnackBar]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself had been used, no [Scaffold] would have\nbeen found, and the [Scaffold.of] function would have returned null.\n\n```dart\n @override\n Widget build(BuildContext context) {\n // here, Scaffold.of(context) returns null\n return Scaffold(\n appBar: AppBar(title: Text('Demo')),\n body: Builder(\n builder: (BuildContext context) {\n return FlatButton(\n child: Text('BUTTON'),\n onPressed: () {\n // here, Scaffold.of(context) returns the locally created Scaffold\n Scaffold.of(context).showSnackBar(SnackBar(\n content: Text('Hello.')\n ));\n }\n );\n }\n )\n );\n }\n```\n\nThe [BuildContext] for a particular widget can change location over time as\nthe widget is moved around the tree. Because of this, values returned from\nthe methods on this class should not be cached beyond the execution of a\nsingle synchronous function.\n\n[BuildContext] objects are actually [Element] objects. The [BuildContext]\ninterface is used to discourage direct manipulation of [Element] objects.", "detail": "", "kind": 7, "label": "BuildContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTarget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that receives data when a [Draggable] widget is dropped.\n\nWhen a draggable is dragged on top of a drag target, the drag target is\nasked whether it will accept the data the draggable is carrying. If the user\ndoes drop the draggable on top of the drag target (and the drag target has\nindicated that it will accept the draggable's data), then the drag target is\nasked to accept the draggable's data.\n\nSee also:\n\n * [Draggable]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "DragTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Widget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the configuration for an [Element].\n\nWidgets are the central class hierarchy in the Flutter framework. A widget\nis an immutable description of part of a user interface. Widgets can be\ninflated into elements, which manage the underlying render tree.\n\nWidgets themselves have no mutable state (all their fields must be final).\nIf you wish to associate mutable state with a widget, consider using a\n[StatefulWidget], which creates a [State] object (via\n[StatefulWidget.createState]) whenever it is inflated into an element and\nincorporated into the tree.\n\nA given widget can be included in the tree zero or more times. In particular\na given widget can be placed in the tree multiple times. Each time a widget\nis placed in the tree, it is inflated into an [Element], which means a\nwidget that is incorporated into the tree multiple times will be inflated\nmultiple times.\n\nThe [key] property controls how one widget replaces another widget in the\ntree. If the [runtimeType] and [key] properties of the two widgets are\n[operator==], respectively, then the new widget replaces the old widget by\nupdating the underlying element (i.e., by calling [Element.update] with the\nnew widget). Otherwise, the old element is removed from the tree, the new\nwidget is inflated into an element, and the new element is inserted into the\ntree.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.", "detail": "", "kind": 7, "label": "Widget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPhysicalModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PhysicalModel].\n\nThe [borderRadius] and [elevation] are animated.\n\nThe [color] is animated if the [animateColor] property is set; otherwise,\nthe color changes immediately at the start of the animation for the other\ntwo properties. This allows the color to be animated independently (e.g.\nbecause it is being driven by an [AnimatedTheme]).\n\nThe [shape] is not animated.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].", "detail": "", "kind": 7, "label": "AnimatedPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerLocation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to show a [Banner].\n\nThe start and end locations are relative to the ambient [Directionality]\n(which can be overridden by [Banner.layoutDirection]).", "detail": "", "kind": 13, "label": "BannerLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface that [Scrollable] widgets implement in order to use\n[ScrollPosition].\n\nSee also:\n\n * [ScrollableState], which is the most common implementation of this\n interface.\n * [ScrollPosition], which uses this interface to communicate with the\n scrollable widget.", "detail": "", "kind": 7, "label": "ScrollContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapInjector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [SliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [Viewport], so that it will always be laid out before the\n[SliverOverlapInjector] during a particular frame.\n\nSee also:\n\n * [NestedScrollView], which uses a [SliverOverlapAbsorber] to align its\n children, and which shows sample usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalTranslation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[FractionalTranslation], even if the contents are offset such that\nthey overflow.\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [new Transform.translate], which applies an absolute offset translation\n transformation instead of an offset scaled to the child.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightShuttleBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A function that lets [Hero]s self supply a [Widget] that is shown during the\nhero's flight from one route to another instead of default (which is to\nshow the destination route's instance of the Hero).", "detail": "(BuildContext flightContext, Animation<double> animation, HeroFlightDirection flightDirection, BuildContext fromHeroContext, BuildContext toHeroContext) → Widget", "kind": 7, "label": "HeroFlightShuttleBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State object for a [Scrollable] widget.\n\nTo manipulate a [Scrollable] widget's scroll position, use the object\nobtained from the [position] property.\n\nTo be informed of when a [Scrollable] widget is scrolling, use a\n[NotificationListener] to listen for [ScrollNotification] notifications.\n\nThis class is not intended to be subclassed. To specialize the behavior of a\n[Scrollable], provide it with a [ScrollPhysics].", "detail": "", "kind": 7, "label": "ScrollableState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbsorbPointer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this widget prevents its subtree from receiving\npointer events by terminating hit testing at itself. It still consumes space\nduring layout and paints its child as usual. It just prevents its children\nfrom being the target of located events, because it returns true from\n[RenderBox.hitTest].\n\n\nSee also:\n\n * [IgnorePointer], which also prevents its children from receiving pointer\n events but is itself invisible to hit testing.", "detail": "", "kind": 7, "label": "AbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativePositionedTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which transitions the child's position\nbased on the value of [rect] relative to a bounding box with the\nspecified [size].\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [RelativePositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "RelativePositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that manages a pair of text selection handles.\n\nThe selection handles are displayed in the [Overlay] that most closely\nencloses the given [BuildContext].", "detail": "", "kind": 7, "label": "TextSelectionOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a [Widget] when given a concrete value of a [ValueListenable<T>].\n\nIf the `child` parameter provided to the [ValueListenableBuilder] is not\nnull, the same `child` widget is passed back to this [ValueWidgetBuilder]\nand should typically be incorporated in the returned widget tree.\n\nSee also:\n\n * [ValueListenableBuilder], a widget which invokes this builder each time\n a [ValueListenable] changes value.", "detail": "(BuildContext context, T value, Widget child) → Widget", "kind": 7, "label": "ValueWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverSafeArea", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that insets another sliver by sufficient padding to avoid\nintrusions by the operating system.\n\nFor example, this will indent the sliver by enough to avoid the status bar\nat the top of the screen.\n\nIt will also indent the sliver by the amount necessary to avoid The Notch\non the iPhone X, or other similar creative physical features of the\ndisplay.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\nSee also:\n\n * [SafeArea], for insetting widgets to avoid operating system intrusions.\n * [SliverPadding], for insetting slivers in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SliverSafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Navigator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that manages a set of child widgets with a stack discipline.\n\nMany apps have a navigator near the top of their widget hierarchy in order\nto display their logical history using an [Overlay] with the most recently\nvisited pages visually on top of the older pages. Using this pattern lets\nthe navigator visually transition from one page to another by moving the widgets\naround in the overlay. Similarly, the navigator can be used to show a dialog\nby positioning the dialog widget above the current page.\n\n## Using the Navigator\n\nMobile apps typically reveal their contents via full-screen elements\ncalled \"screens\" or \"pages\". In Flutter these elements are called\nroutes and they're managed by a [Navigator] widget. The navigator\nmanages a stack of [Route] objects and provides methods for managing\nthe stack, like [Navigator.push] and [Navigator.pop].\n\n### Displaying a full-screen route\n\nAlthough you can create a navigator directly, it's most common to use\nthe navigator created by a [WidgetsApp] or a [MaterialApp] widget. You\ncan refer to that navigator with [Navigator.of].\n\nA [MaterialApp] is the simplest way to set things up. The [MaterialApp]'s\nhome becomes the route at the bottom of the [Navigator]'s stack. It is what\nyou see when the app is launched.\n\n```dart\nvoid main() {\n runApp(MaterialApp(home: MyAppHome()));\n}\n```\n\nTo push a new route on the stack you can create an instance of\n[MaterialPageRoute] with a builder function that creates whatever you\nwant to appear on the screen. For example:\n\n```dart\nNavigator.push(context, MaterialPageRoute<void>(\n builder: (BuildContext context) {\n return Scaffold(\n appBar: AppBar(title: Text('My Page')),\n body: Center(\n child: FlatButton(\n child: Text('POP'),\n onPressed: () {\n Navigator.pop(context);\n },\n ),\n ),\n );\n },\n));\n```\n\nThe route defines its widget with a builder function instead of a\nchild widget because it will be built and rebuilt in different\ncontexts depending on when it's pushed and popped.\n\nAs you can see, the new route can be popped, revealing the app's home\npage, with the Navigator's pop method:\n\n```dart\nNavigator.pop(context);\n```\n\nIt usually isn't necessary to provide a widget that pops the Navigator\nin a route with a [Scaffold] because the Scaffold automatically adds a\n'back' button to its AppBar. Pressing the back button causes\n[Navigator.pop] to be called. On Android, pressing the system back\nbutton does the same thing.\n\n### Using named navigator routes\n\nMobile apps often manage a large number of routes and it's often\neasiest to refer to them by name. Route names, by convention,\nuse a path-like structure (for example, '/a/b/c').\nThe app's home page route is named '/' by default.\n\nThe [MaterialApp] can be created\nwith a [Map<String, WidgetBuilder>] which maps from a route's name to\na builder function that will create it. The [MaterialApp] uses this\nmap to create a value for its navigator's [onGenerateRoute] callback.\n\n```dart\nvoid main() {\n runApp(MaterialApp(\n home: MyAppHome(), // becomes the route named '/'\n routes: <String, WidgetBuilder> {\n '/a': (BuildContext context) => MyPage(title: 'page A'),\n '/b': (BuildContext context) => MyPage(title: 'page B'),\n '/c': (BuildContext context) => MyPage(title: 'page C'),\n },\n ));\n}\n```\n\nTo show a route by name:\n\n```dart\nNavigator.pushNamed(context, '/b');\n```\n\n### Routes can return a value\n\nWhen a route is pushed to ask the user for a value, the value can be\nreturned via the [pop] method's result parameter.\n\nMethods that push a route return a [Future]. The Future resolves when the\nroute is popped and the [Future]'s value is the [pop] method's `result`\nparameter.\n\nFor example if we wanted to ask the user to press 'OK' to confirm an\noperation we could `await` the result of [Navigator.push]:\n\n```dart\nbool value = await Navigator.push(context, MaterialPageRoute<bool>(\n builder: (BuildContext context) {\n return Center(\n child: GestureDetector(\n child: Text('OK'),\n onTap: () { Navigator.pop(context, true); }\n ),\n );\n }\n));\n```\n\nIf the user presses 'OK' then value will be true. If the user backs\nout of the route, for example by pressing the Scaffold's back button,\nthe value will be null.\n\nWhen a route is used to return a value, the route's type parameter must\nmatch the type of [pop]'s result. That's why we've used\n`MaterialPageRoute<bool>` instead of `MaterialPageRoute<void>` or just\n`MaterialPageRoute`. (If you prefer to not specify the types, though, that's\nfine too.)\n\n### Popup routes\n\nRoutes don't have to obscure the entire screen. [PopupRoute]s cover the\nscreen with a [ModalRoute.barrierColor] that can be only partially opaque to\nallow the current screen to show through. Popup routes are \"modal\" because\nthey block input to the widgets below.\n\nThere are functions which create and show popup routes. For\nexample: [showDialog], [showMenu], and [showModalBottomSheet]. These\nfunctions return their pushed route's Future as described above.\nCallers can await the returned value to take an action when the\nroute is popped, or to discover the route's value.\n\nThere are also widgets which create popup routes, like [PopupMenuButton] and\n[DropdownButton]. These widgets create internal subclasses of PopupRoute\nand use the Navigator's push and pop methods to show and dismiss them.\n\n### Custom routes\n\nYou can create your own subclass of one of the widget library route classes\nlike [PopupRoute], [ModalRoute], or [PageRoute], to control the animated\ntransition employed to show the route, the color and behavior of the route's\nmodal barrier, and other aspects of the route.\n\nThe [PageRouteBuilder] class makes it possible to define a custom route\nin terms of callbacks. Here's an example that rotates and fades its child\nwhen the route appears or disappears. This route does not obscure the entire\nscreen because it specifies `opaque: false`, just as a popup route does.\n\n```dart\nNavigator.push(context, PageRouteBuilder(\n opaque: false,\n pageBuilder: (BuildContext context, _, __) {\n return Center(child: Text('My PageRoute'));\n },\n transitionsBuilder: (___, Animation<double> animation, ____, Widget child) {\n return FadeTransition(\n opacity: animation,\n child: RotationTransition(\n turns: Tween<double>(begin: 0.5, end: 1.0).animate(animation),\n child: child,\n ),\n );\n }\n));\n```\n\nThe page route is built in two parts, the \"page\" and the\n\"transitions\". The page becomes a descendant of the child passed to\nthe `transitionsBuilder` function. Typically the page is only built once,\nbecause it doesn't depend on its animation parameters (elided with `_`\nand `__` in this example). The transition is built on every frame\nfor its duration.\n\n### Nesting Navigators\n\nAn app can use more than one Navigator. Nesting one Navigator below\nanother Navigator can be used to create an \"inner journey\" such as tabbed\nnavigation, user registration, store checkout, or other independent journeys\nthat represent a subsection of your overall application.\n\n#### Real World Example\n\nIt is standard practice for iOS apps to use tabbed navigation where each\ntab maintains its own navigation history. Therefore, each tab has its own\n[Navigator], creating a kind of \"parallel navigation.\"\n\nIn addition to the parallel navigation of the tabs, it is still possible to\nlaunch full-screen pages that completely cover the tabs. For example: an\non-boarding flow, or an alert dialog. Therefore, there must exist a \"root\"\n[Navigator] that sits above the tab navigation. As a result, each of the\ntab's [Navigator]s are actually nested [Navigator]s sitting below a single\nroot [Navigator].\n\nThe nested [Navigator]s for tabbed navigation sit in [WidgetApp] and\n[CupertinoTabView], so you don't need to worry about nested [Navigator]s\nin this situation, but it's a real world example where nested [Navigator]s\nare used.\n\nThe following example demonstrates how a nested [Navigator] can be used to\npresent a standalone user registration journey.\n\nEven though this example uses two [Navigator]s to demonstrate nested\n[Navigator]s, a similar result is possible using only a single [Navigator].\n\nRun this example with `flutter run --route=/signup` to start it with\nthe signup flow instead of on the home page.\n\n```dart\nimport 'package:flutter/material.dart';\n```\n\n```dart\nvoid main() => runApp(new MyApp());\n```\n\n```dart\nclass MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Code Sample for Navigator',\n // MaterialApp contains our top-level Navigator\n initialRoute: '/',\n routes: {\n '/': (BuildContext context) => HomePage(),\n '/signup': (BuildContext context) => SignUpPage(),\n },\n );\n }\n}\n\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: Text('Home Page'),\n ),\n );\n }\n}\n\nclass CollectPersonalInfoPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: GestureDetector(\n onTap: () {\n // This moves from the personal info page to the credentials page,\n // replacing this page with that one.\n Navigator.of(context)\n .pushReplacementNamed('signup/choose_credentials');\n },\n child: Container(\n color: Colors.lightBlue,\n alignment: Alignment.center,\n child: Text('Collect Personal Info Page'),\n ),\n ),\n );\n }\n}\n\nclass ChooseCredentialsPage extends StatelessWidget {\n const ChooseCredentialsPage({\n this.onSignupComplete,\n });\n\n final VoidCallback onSignupComplete;\n\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: onSignupComplete,\n child: DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.pinkAccent,\n alignment: Alignment.center,\n child: Text('Choose Credentials Page'),\n ),\n ),\n );\n }\n}\n\nclass SignUpPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n // SignUpPage builds its own Navigator which ends up being a nested\n // Navigator in our app.\n return Navigator(\n initialRoute: 'signup/personal_info',\n onGenerateRoute: (RouteSettings settings) {\n WidgetBuilder builder;\n switch (settings.name) {\n case 'signup/personal_info':\n // Assume CollectPersonalInfoPage collects personal info and then\n // navigates to 'signup/choose_credentials'.\n builder = (BuildContext _) => CollectPersonalInfoPage();\n break;\n case 'signup/choose_credentials':\n // Assume ChooseCredentialsPage collects new credentials and then\n // invokes 'onSignupComplete()'.\n builder = (BuildContext _) => ChooseCredentialsPage(\n onSignupComplete: () {\n // Referencing Navigator.of(context) from here refers to the\n // top level Navigator because SignUpPage is above the\n // nested Navigator that it created. Therefore, this pop()\n // will pop the entire \"sign up\" journey and return to the\n // \"/\" route, AKA HomePage.\n Navigator.of(context).pop();\n },\n );\n break;\n default:\n throw Exception('Invalid route: ${settings.name}');\n }\n return MaterialPageRoute(builder: builder, settings: settings);\n },\n );\n }\n}\n```\n\n[Navigator.of] operates on the nearest ancestor [Navigator] from the given\n[BuildContext]. Be sure to provide a [BuildContext] below the intended\n[Navigator], especially in large [build] methods where nested [Navigator]s\nare created. The [Builder] widget can be used to access a [BuildContext] at\na desired location in the widget subtree.", "detail": "", "kind": 7, "label": "Navigator" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Texture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture widget refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture widgets are repainted autonomously as dictated by the backend (e.g.\non arrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by its parent widget, and the\ntexture is automatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "Texture" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePredicate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [Navigator.popUntil] predicate argument.", "detail": "(Route<dynamic> route) → bool", "kind": 7, "label": "RoutePredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "RenderObjectWidgets provide the configuration for [RenderObjectElement]s,\nwhich wrap [RenderObject]s, which provide the actual rendering of the\napplication.", "detail": "", "kind": 7, "label": "RenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures described by the given gesture\nfactories.\n\nFor common gestures, use a [GestureRecognizer].\n[RawGestureDetector] is useful primarily when developing your\nown gesture recognizers.\n\nConfiguring the gesture recognizers requires a carefully constructed map, as\ndescribed in [gestures] and as shown in the example below.\n\n\nThis example shows how to hook up a [TapGestureRecognizer]. It assumes that\nthe code is being used inside a [State] object with a `_last` field that is\nthen displayed as the child of the gesture detector.\n\n```dart\nRawGestureDetector(\n gestures: <Type, GestureRecognizerFactory>{\n TapGestureRecognizer: GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(\n () => TapGestureRecognizer(),\n (TapGestureRecognizer instance) {\n instance\n ..onTapDown = (TapDownDetails details) { setState(() { _last = 'down'; }); }\n ..onTapUp = (TapUpDetails details) { setState(() { _last = 'up'; }); }\n ..onTap = () { setState(() { _last = 'tap'; }); }\n ..onTapCancel = () { setState(() { _last = 'cancel'; }); };\n },\n ),\n },\n child: Container(width: 300.0, height: 300.0, color: Colors.yellow, child: Text(_last)),\n)\n```\n\nSee also:\n\n * [GestureDetector], a less flexible but much simpler widget that does the same thing.\n * [Listener], a widget that reports raw pointer events.\n * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.", "detail": "", "kind": 7, "label": "RawGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedModeBanner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a [Banner] saying \"DEBUG\" when running in checked mode.\n[MaterialApp] builds one of these by default.\nDoes nothing in release mode.", "detail": "", "kind": 7, "label": "CheckedModeBanner" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Associates a [ScrollController] with a subtree.\n\nWhen a [ScrollView] has [ScrollView.primary] set to true and is not given\nan explicit [ScrollController], the [ScrollView] uses [of] to find the\n[ScrollController] associated with its subtree.\n\nThis mechanism can be used to provide default behavior for scroll views in a\nsubtree. For example, the [Scaffold] uses this mechanism to implement the\nscroll-to-top gesture on iOS.", "detail": "", "kind": 7, "label": "PrimaryScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MetaData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "MetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an iOS view in the Widget hierarchy.\n\n\nEmbedding iOS views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\n\n\n\nConstruction of UIViews is done asynchronously, before the UIView is ready this widget paints\nnothing while maintaining the same layout constraints.", "detail": "", "kind": 7, "label": "UiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Element", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An instantiation of a [Widget] at a particular location in the tree.\n\nWidgets describe how to configure a subtree but the same widget can be used\nto configure multiple subtrees simultaneously because widgets are immutable.\nAn [Element] represents the use of a widget to configure a specific location\nin the tree. Over time, the widget associated with a given element can\nchange, for example, if the parent widget rebuilds and creates a new widget\nfor this location.\n\nElements form a tree. Most elements have a unique child, but some widgets\n(e.g., subclasses of [RenderObjectElement]) can have multiple children.\n\nElements have the following lifecycle:\n\n * The framework creates an element by calling [Widget.createElement] on the\n widget that will be used as the element's initial configuration.\n * The framework calls [mount] to add the newly created element to the tree\n at a given slot in a given parent. The [mount] method is responsible for\n inflating any child widgets and calling [attachRenderObject] as\n necessary to attach any associated render objects to the render tree.\n * At this point, the element is considered \"active\" and might appear on\n screen.\n * At some point, the parent might decide to change the widget used to\n configure this element, for example because the parent rebuilt with new\n state. When this happens, the framework will call [update] with the new\n widget. The new widget will always have the same [runtimeType] and key as\n old widget. If the parent wishes to change the [runtimeType] or key of\n the widget at this location in the tree, can do so by unmounting this\n element and inflating the new widget at this location.\n * At some point, an ancestor might decide to remove this element (or an\n intermediate ancestor) from the tree, which the ancestor does by calling\n [deactivateChild] on itself. Deactivating the intermediate ancestor will\n remove that element's render object from the render tree and add this\n element to the [owner]'s list of inactive elements, causing the framework\n to call [deactivate] on this element.\n * At this point, the element is considered \"inactive\" and will not appear\n on screen. An element can remain in the inactive state only until\n the end of the current animation frame. At the end of the animation\n frame, any elements that are still inactive will be unmounted.\n * If the element gets reincorporated into the tree (e.g., because it or one\n of its ancestors has a global key that is reused), the framework will\n remove the element from the [owner]'s list of inactive elements, call\n [activate] on the element, and reattach the element's render object to\n the render tree. (At this point, the element is again considered \"active\"\n and might appear on screen.)\n * If the element does not get reincorporated into the tree by the end of\n the current animation frame, the framework will call [unmount] on the\n element.\n * At this point, the element is considered \"defunct\" and will not be\n incorporated into the tree in the future.", "detail": "", "kind": 7, "label": "Element" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a scrolling container that animates items when they are\ninserted or removed.\n\nWhen an item is inserted with [insertItem] an animation begins running. The\nanimation is passed to [AnimatedList.itemBuilder] whenever the item's widget\nis needed.\n\nWhen an item is removed with [removeItem] its animation is reversed.\nThe removed item's animation is passed to the [removeItem] builder\nparameter.\n\nAn app that needs to insert or remove items in response to an event\ncan refer to the [AnimatedList]'s state with a global key:\n\n```dart\nGlobalKey<AnimatedListState> listKey = GlobalKey<AnimatedListState>();\n...\nAnimatedList(key: listKey, ...);\n...\nlistKey.currentState.insert(123);\n```\n\n[AnimatedList] item input handlers can also refer to their [AnimatedListState]\nwith the static [AnimatedList.of] method.", "detail": "", "kind": 7, "label": "AnimatedListState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dismissible", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dismissed by dragging in the indicated [direction].\n\nDragging or flinging this widget in the [DismissDirection] causes the child\nto slide out of view. Following the slide animation, if [resizeDuration] is\nnon-null, the Dismissible widget animates its height (or width, whichever is\nperpendicular to the dismiss direction) to zero over the [resizeDuration].\n\n\nBackgrounds can be used to implement the \"leave-behind\" idiom. If a background\nis specified it is stacked behind the Dismissible's child and is exposed when\nthe child moves.\n\nThe widget calls the [onDismissed] callback either after its size has\ncollapsed to zero (if [resizeDuration] is non-null) or immediately after\nthe slide animation (if [resizeDuration] is null). If the Dismissible is a\nlist item, it must have a key that distinguishes it from the other items and\nits [onDismissed] callback must remove the item from the list.", "detail": "", "kind": 7, "label": "Dismissible" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mutable selection state of the inspector.", "detail": "", "kind": 7, "label": "InspectorSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State associated with a [Form] widget.\n\nA [FormState] object can be used to [save], [reset], and [validate] every\n[FormField] that is a descendant of the associated [Form].\n\nTypically obtained via [Form.of].", "detail": "", "kind": 7, "label": "FormState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionHandleType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Which type of selection handle to be displayed.\n\nWith mixed-direction text, both handles may be the same type. Examples:\n\n* LTR text: 'the <quick brown> fox':\n\n The '<' is drawn with the [left] type, the '>' with the [right]\n\n* RTL text: 'XOF <NWORB KCIUQ> EHT':\n\n Same as above.\n\n* mixed text: '<the NWOR<B KCIUQ fox'\n\n Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn\n with the [left] type.\n\nSee also:\n\n * [TextDirection], which discusses left-to-right and right-to-left text in\n more detail.", "detail": "", "kind": 13, "label": "TextSelectionHandleType" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stack", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its children relative to the edges of its box.\n\nThis class is useful if you want to overlap several children in a simple\nway, for example having some text and an image, overlaid with a gradient and\na button attached to the bottom.\n\nEach child of a [Stack] widget is either _positioned_ or _non-positioned_.\nPositioned children are those wrapped in a [Positioned] widget that has at\nleast one non-null property. The stack sizes itself to contain all the\nnon-positioned children, which are positioned according to [alignment]\n(which defaults to the top-left corner in left-to-right environments and the\ntop-right corner in right-to-left environments). The positioned children are\nthen placed relative to the stack according to their top, right, bottom, and\nleft properties.\n\nThe stack paints its children in order with the first child being at the\nbottom. If you want to change the order in which the children paint, you\ncan rebuild the stack with the children in the new order. If you reorder\nthe children in this way, consider giving the children non-null keys.\nThese keys will cause the framework to move the underlying objects for\nthe children to their new locations rather than recreate them at their\nnew location.\n\nFor more details about the stack layout algorithm, see [RenderStack].\n\nIf you want to lay a number of children out in a particular pattern, or if\nyou want to make a custom layout manager, you probably want to use\n[CustomMultiChildLayout] instead. In particular, when using a [Stack] you\ncan't position children relative to their size or the stack's own size.\n\n\nUsing a [Stack] you can position widgets over one another.\n\n```dart\nStack(\n children: <Widget>[\n Container(\n width: 100,\n height: 100,\n color: Colors.red,\n ),\n Container(\n width: 90,\n height: 90,\n color: Colors.green,\n ),\n Container(\n width: 80,\n height: 80,\n color: Colors.blue,\n ),\n ],\n)\n```\n\n\nThis example shows how [Stack] can be used to enhance text visibility\nby adding gradient backdrops.\n\n```dart\nSizedBox(\n width: 250,\n height: 250,\n child: Stack(\n children: <Widget>[\n Container(\n width: 250,\n height: 250,\n color: Colors.white,\n ),\n Container(\n padding: EdgeInsets.all(5.0),\n alignment: Alignment.bottomCenter,\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: <Color>[\n Colors.black.withAlpha(0),\n Colors.black12,\n Colors.black45\n ],\n ),\n ),\n child: Text(\n \"Foreground Text\",\n style: TextStyle(color: Colors.white, fontSize: 20.0),\n ),\n ),\n ],\n ),\n)\n```\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * [Flow], which provides paint-time control of its children using transform\n matrices.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Stack" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeaderDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Delegate for configuring a [SliverPersistentHeader].", "detail": "", "kind": 7, "label": "SliverPersistentHeaderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A leaf node in the focus tree that can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nTo request focus, find the [FocusScopeNode] for the current [BuildContext]\nand call the [FocusScopeNode.requestFocus] method:\n\n```dart\nFocusScope.of(context).requestFocus(focusNode);\n```\n\nIf your widget requests focus, be sure to call\n`FocusScope.of(context).reparentIfNeeded(focusNode);` in your `build`\nmethod to reparent your [FocusNode] if your widget moves from one\nlocation in the tree to another.\n\n## Lifetime\n\nFocus nodes are long-lived objects. For example, if a stateful widget has a\nfocusable child widget, it should create a [FocusNode] in the\n[State.initState] method, and [dispose] it in the [State.dispose] method,\nproviding the same [FocusNode] to the focusable child each time the\n[State.build] method is run. In particular, creating a [FocusNode] each time\n[State.build] is invoked will cause the focus to be lost each time the\nwidget is built.\n\nSee also:\n\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusNode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the scale of a transformed widget.\n\nHere's an illustration of the [ScaleTransition] widget, with it's [alignment]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "ScaleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegion", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Annotates a region of the layer tree with a value.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer pushed into the layer tree.", "detail": "", "kind": 7, "label": "AnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the child semantics with an index.\n\nSemantic indexes are used by TalkBack/Voiceover to make announcements about\nthe current scroll state. Certain widgets like the [ListView] will\nautomatically provide a child index for building semantics. A user may wish\nto manually provide semantic indexes if not all child of the scrollable\ncontribute semantics.\n\n\nThe example below handles spacers in a scrollable that don't contribute\nsemantics. The automatic indexes would give the spaces a semantic index,\ncausing scroll announcements to erroneously state that there are four items\nvisible.\n\n```dart\nListView(\n addSemanticIndexes: false,\n semanticChildCount: 2,\n children: const <Widget>[\n IndexedSemantics(index: 0, child: Text('First')),\n Spacer(),\n IndexedSemantics(index: 1, child: Text('Second')),\n Spacer(),\n ],\n)\n```\n\nSee also:\n\n * [CustomScrollView], for an explanation of index semantics.", "detail": "", "kind": 7, "label": "IndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the physics of a [Scrollable] widget.\n\nFor example, determines how the [Scrollable] will behave when the user\nreaches the maximum scroll extent or when the user stops scrolling.\n\nWhen starting a physics [Simulation], the current scroll position and\nvelocity are used as the initial conditions for the particle in the\nsimulation. The movement of the particle in the simulation is then used to\ndetermine the scroll position for the widget.", "detail": "", "kind": 7, "label": "ScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridPaper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a rectilinear grid of lines one pixel wide.\n\nUseful with a [Stack] for visualizing your layout along a grid.\n\nThe grid's origin (where the first primary horizontal line and the first\nprimary vertical line intersect) is at the top left of the widget.\n\nThe grid is drawn over the [child] widget.", "detail": "", "kind": 7, "label": "GridPaper" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directionality", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the ambient directionality of text and\ntext-direction-sensitive render objects.\n\nFor example, [Padding] depends on the [Directionality] to resolve\n[EdgeInsetsDirectional] objects into absolute [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "Directionality" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that paints a [Decoration] either before or after its child paints.\n\n[Container] insets its child by the widths of the borders; this widget does\nnot.\n\nCommonly used with [BoxDecoration].\n\nThe [child] is not clipped. To clip a child to the shape of a particular\n[ShapeDecoration], consider using a [ClipPath] widget.\n\n\nThis sample shows a radial gradient that draws a moon on a night sky:\n\n```dart\nDecoratedBox(\n decoration: BoxDecoration(\n gradient: RadialGradient(\n center: const Alignment(-0.5, -0.6),\n radius: 0.15,\n colors: <Color>[\n const Color(0xFFEEEEEE),\n const Color(0xFF111133),\n ],\n stops: <double>[0.9, 1.0],\n ),\n ),\n)\n```\n\nSee also:\n\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * [DecoratedBoxTransition], the version of this class that animates on the\n [decoration] property.\n * [Decoration], which you can extend to provide other effects with\n [DecoratedBox].\n * [CustomPaint], another way to draw custom effects from the widget layer.", "detail": "", "kind": 7, "label": "DecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the size of one of the descendants of the object receiving\nthis notification has changed, and that therefore any assumptions about that\nlayout are no longer valid.\n\nFor example, sent by the [SizeChangedLayoutNotifier] widget whenever that\nwidget changes size.\n\nThis notification can be used for triggering repaints, but if you use this\nnotification to trigger rebuilds or relayouts, you'll create a backwards\ndependency in the frame pipeline because [SizeChangedLayoutNotification]s\nare generated during layout, which is after the build phase and in the\nmiddle of the layout phase. This backwards dependency can lead to visual\ncorruption or lags.\n\nSee [LayoutChangedNotification] for additional discussion of layout\nnotifications such as this one.\n\nSee also:\n\n * [SizeChangedLayoutNotifier], which sends this notification.\n * [LayoutChangedNotification], of which this is a subclass.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "State", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The logic and internal state for a [StatefulWidget].\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\n[State] objects are created by the framework by calling the\n[StatefulWidget.createState] method when inflating a [StatefulWidget] to\ninsert it into the tree. Because a given [StatefulWidget] instance can be\ninflated multiple times (e.g., the widget is incorporated into the tree in\nmultiple places at once), there might be more than one [State] object\nassociated with a given [StatefulWidget] instance. Similarly, if a\n[StatefulWidget] is removed from the tree and later inserted in to the tree\nagain, the framework will call [StatefulWidget.createState] again to create\na fresh [State] object, simplifying the lifecycle of [State] objects.\n\n[State] objects have the following lifecycle:\n\n * The framework creates a [State] object by calling\n [StatefulWidget.createState].\n * The newly created [State] object is associated with a [BuildContext].\n This association is permanent: the [State] object will never change its\n [BuildContext]. However, the [BuildContext] itself can be moved around\n the tree along with its subtree. At this point, the [State] object is\n considered [mounted].\n * The framework calls [initState]. Subclasses of [State] should override\n [initState] to perform one-time initialization that depends on the\n [BuildContext] or the widget, which are available as the [context] and\n [widget] properties, respectively, when the [initState] method is\n called.\n * The framework calls [didChangeDependencies]. Subclasses of [State] should\n override [didChangeDependencies] to perform initialization involving\n [InheritedWidget]s. If [BuildContext.inheritFromWidgetOfExactType] is\n called, the [didChangeDependencies] method will be called again if the\n inherited widgets subsequently change or if the widget moves in the tree.\n * At this point, the [State] object is fully initialized and the framework\n might call its [build] method any number of times to obtain a\n description of the user interface for this subtree. [State] objects can\n spontaneously request to rebuild their subtree by callings their\n [setState] method, which indicates that some of their internal state\n has changed in a way that might impact the user interface in this\n subtree.\n * During this time, a parent widget might rebuild and request that this\n location in the tree update to display a new widget with the same\n [runtimeType] and [Widget.key]. When this happens, the framework will\n update the [widget] property to refer to the new widget and then call the\n [didUpdateWidget] method with the previous widget as an argument. [State]\n objects should override [didUpdateWidget] to respond to changes in their\n associated widget (e.g., to start implicit animations). The framework\n always calls [build] after calling [didUpdateWidget], which means any\n calls to [setState] in [didUpdateWidget] are redundant.\n * During development, if a hot reload occurs (whether initiated from the\n command line `flutter` tool by pressing `r`, or from an IDE), the\n [reassemble] method is called. This provides an opportunity to\n reinitialize any data that was prepared in the [initState] method.\n * If the subtree containing the [State] object is removed from the tree\n (e.g., because the parent built a widget with a different [runtimeType]\n or [Widget.key]), the framework calls the [deactivate] method. Subclasses\n should override this method to clean up any links between this object\n and other elements in the tree (e.g. if you have provided an ancestor\n with a pointer to a descendant's [RenderObject]).\n * At this point, the framework might reinsert this subtree into another\n part of the tree. If that happens, the framework will ensure that it\n calls [build] to give the [State] object a chance to adapt to its new\n location in the tree. If the framework does reinsert this subtree, it\n will do so before the end of the animation frame in which the subtree was\n removed from the tree. For this reason, [State] objects can defer\n releasing most resources until the framework calls their [dispose]\n method.\n * If the framework does not reinsert this subtree by the end of the current\n animation frame, the framework will call [dispose], which indicates that\n this [State] object will never build again. Subclasses should override\n this method to release any resources retained by this object (e.g.,\n stop any active animations).\n * After the framework calls [dispose], the [State] object is considered\n unmounted and the [mounted] property is false. It is an error to call\n [setState] at this point. This stage of the lifecycle is terminal: there\n is no way to remount a [State] object that has been disposed.\n\nSee also:\n\n * [StatefulWidget], where the current configuration of a [State] is hosted,\n and whose documentation has sample code for [State].\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "State" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Title", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that describes this app in the operating system.", "detail": "", "kind": 7, "label": "Title" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls a scrollable widget.\n\nScroll controllers are typically stored as member variables in [State]\nobjects and are reused in each [State.build]. A single scroll controller can\nbe used to control multiple scrollable widgets, but some operations, such\nas reading the scroll [offset], require the controller to be used with a\nsingle scrollable widget.\n\nA scroll controller creates a [ScrollPosition] to manage the state specific\nto an individual [Scrollable] widget. To use a custom [ScrollPosition],\nsubclass [ScrollController] and override [createScrollPosition].\n\nA [ScrollController] is a [Listenable]. It notifies its listeners whenever\nany of the attached [ScrollPosition]s notify _their_ listeners (i.e.\nwhenever any of them scroll). It does not notify its listeners when the list\nof attached [ScrollPosition]s changes.\n\nTypically used with [ListView], [GridView], [CustomScrollView].\n\nSee also:\n\n * [ListView], [GridView], [CustomScrollView], which can be controlled by a\n [ScrollController].\n * [Scrollable], which is the lower-level widget that creates and associates\n [ScrollPosition] objects with [ScrollController] objects.\n * [PageController], which is an analogous object for controlling a\n [PageView].\n * [ScrollPosition], which manages the scroll offset for an individual\n scrolling widget.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's orientation\n(distinct from the device orientation).\n\nSee also:\n\n * [LayoutBuilder], which exposes the complete constraints, not just the\n orientation.\n * [CustomSingleChildLayout], which positions its child during layout.\n * [CustomMultiChildLayout], with which you can define the precise layout\n of a list of children during the layout phase.\n * [MediaQueryData.orientation], which exposes whether the device is in\n landscape or portrait mode.", "detail": "", "kind": 7, "label": "OrientationBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expanded", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that expands a child of a [Row], [Column], or [Flex]\nso that the child fills the available space.\n\nUsing an [Expanded] widget makes a child of a [Row], [Column], or [Flex]\nexpand to fill the available space along the main axis (e.g., horizontally for\na [Row] or vertically for a [Column]). If multiple children are expanded,\nthe available space is divided among them according to the [flex] factor.\n\nAn [Expanded] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Expanded] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\n\nThis example shows how to use an [Expanded] widget in a [Column] so that\nit's middle child, a [Container] here, expands to fill the space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Column Sample'),\n ),\n body: Center(\n child: Column(\n children: <Widget>[\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n Expanded(\n child: Container(\n color: Colors.blue,\n width: 100,\n ),\n ),\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n ],\n ),\n ),\n );\n}\n```\n\nThis example shows how to use an [Expanded] widget in a [Row] with multiple\nchildren expanded, utilizing the [flex] factor to prioritize available space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Row Sample'),\n ),\n body: Center(\n child: Row(\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n Container(\n color: Colors.blue,\n height: 100,\n width: 50,\n ),\n Expanded(\n flex: 1,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Flexible], which does not force the child to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Expanded" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that uses a single child layout model.\n\nSee also:\n\n * [ListView], which is a [BoxScrollView] that uses a linear layout model.\n * [GridView], which is a [BoxScrollView] that uses a 2D layout model.\n * [CustomScrollView], which can combine multiple child layout models into a\n single scroll view.", "detail": "", "kind": 7, "label": "BoxScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The text style to apply to descendant [Text] widgets without explicit style.", "detail": "", "kind": 7, "label": "DefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BallisticScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on a physics [Simulation].\n\nA [BallisticScrollActivity] is typically used when the user lifts their\nfinger off the screen to continue the scrolling gesture with the current velocity.\n\n[BallisticScrollActivity] is also used to restore a scroll view to a valid\nscroll offset when the geometry of the scroll view changes. In these\nsituations, the [Simulation] typically starts with a zero velocity.\n\nSee also:\n\n * [DrivenScrollActivity], which animates a scroll view based on a set of\n animation parameters.", "detail": "", "kind": 7, "label": "BallisticScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenVisitor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks passed to [AnimatedWidgetBaseState.forEachTween].", "detail": "(Tween<T> tween, T targetValue, TweenConstructor<T> constructor) → Tween<T>", "kind": 7, "label": "TweenVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints a [Banner].", "detail": "", "kind": 7, "label": "BannerPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two relative rects.\n\nThis class specializes the interpolation of [Tween<RelativeRect>] to\nuse [RelativeRect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RelativeRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has mutable state.\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\nA stateful widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\nStateful widgets are useful when the part of the user interface you are\ndescribing can change dynamically, e.g. due to having an internal\nclock-driven state, or depending on some system state. For compositions that\ndepend only on the configuration information in the object itself and the\n[BuildContext] in which the widget is inflated, consider using\n[StatelessWidget].\n\n\n[StatefulWidget] instances themselves are immutable and store their mutable\nstate either in separate [State] objects that are created by the\n[createState] method, or in objects to which that [State] subscribes, for\nexample [Stream] or [ChangeNotifier] objects, to which references are stored\nin final fields on the [StatefulWidget] itself.\n\nThe framework calls [createState] whenever it inflates a\n[StatefulWidget], which means that multiple [State] objects might be\nassociated with the same [StatefulWidget] if that widget has been inserted\ninto the tree in multiple places. Similarly, if a [StatefulWidget] is\nremoved from the tree and later inserted in to the tree again, the framework\nwill call [createState] again to create a fresh [State] object, simplifying\nthe lifecycle of [State] objects.\n\nA [StatefulWidget] keeps the same [State] object when moving from one\nlocation in the tree to another if its creator used a [GlobalKey] for its\n[key]. Because a widget with a [GlobalKey] can be used in at most one\nlocation in the tree, a widget that uses a [GlobalKey] has at most one\nassociated element. The framework takes advantage of this property when\nmoving a widget with a global key from one location in the tree to another\nby grafting the (unique) subtree associated with that widget from the old\nlocation to the new location (instead of recreating the subtree at the new\nlocation). The [State] objects associated with [StatefulWidget] are grafted\nalong with the rest of the subtree, which means the [State] object is reused\n(instead of being recreated) in the new location. However, in order to be\neligible for grafting, the widget must be inserted into the new location in\nthe same animation frame in which it was removed from the old location.\n\n## Performance considerations\n\nThere are two primary categories of [StatefulWidget]s.\n\nThe first is one which allocates resources in [State.initState] and disposes\nof them in [State.dispose], but which does not depend on [InheritedWidget]s\nor call [State.setState]. Such widgets are commonly used at the root of an\napplication or page, and communicate with subwidgets via [ChangeNotifier]s,\n[Stream]s, or other such objects. Stateful widgets following such a pattern\nare relatively cheap (in terms of CPU and GPU cycles), because they are\nbuilt once then never update. They can, therefore, have somewhat complicated\nand deep build methods.\n\nThe second category is widgets that use [State.setState] or depend on\n[InheritedWidget]s. These will typically rebuild many times during the\napplication's lifetime, and it is therefore important to minimize the impact\nof rebuilding such a widget. (They may also use [State.initState] or\n[State.didChangeDependencies] and allocate resources, but the important part\nis that they rebuild.)\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateful widget:\n\n * Push the state to the leaves. For example, if your page has a ticking\n clock, rather than putting the state at the top of the page and\n rebuilding the entire page each time the clock ticks, create a dedicated\n clock widget that only updates itself.\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. Ideally, a stateful widget would only create a\n single widget, and that widget would be a [RenderObjectWidget].\n (Obviously this isn't always practical, but the closer a widget gets to\n this ideal, the more efficient it will be.)\n\n * If a subtree does not change, cache the widget that represents that\n subtree and re-use it each time it can be used. It is massively more\n efficient for a widget to be re-used than for a new (but\n identically-configured) widget to be created. Factoring out the stateful\n part into a widget that takes a child argument is a common way of doing\n this.\n\n * Use `const` widgets where possible. (This is equivalent to caching a\n widget and re-using it.)\n\n * Avoid changing the depth of any created subtrees or changing the type of\n any widgets in the subtree. For example, rather than returning either the\n child or the child wrapped in an [IgnorePointer], always wrap the child\n widget in an [IgnorePointer] and control the [IgnorePointer.ignoring]\n property. This is because changing the depth of the subtree requires\n rebuilding, laying out, and painting the entire subtree, whereas just\n changing the property will require the least possible change to the\n render tree (in the case of [IgnorePointer], for example, no layout or\n repaint is necessary at all).\n\n * If the depth must be changed for some reason, consider wrapping the\n common parts of the subtrees in widgets that have a [GlobalKey] that\n remains consistent for the life of the stateful widget. (The\n [KeyedSubtree] widget may be useful for this purpose if no other widget\n can conveniently be assigned the key.)\n\n\nThis is a skeleton of a stateful widget subclass called `YellowBird`.\n\nIn this example. the [State] has no actual state. State is normally\nrepresented as private member fields. Also, normally widgets have more\nconstructor arguments, each of which corresponds to a `final` property.\n\n```dart\nclass YellowBird extends StatefulWidget {\n const YellowBird({ Key key }) : super(key: key);\n\n @override\n _YellowBirdState createState() => _YellowBirdState();\n}\n\nclass _YellowBirdState extends State<YellowBird> {\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFFFFE306));\n }\n}\n```\n\nThis example shows the more generic widget `Bird` which can be given a\ncolor and a child, and which has some internal state with a method that\ncan be called to mutate it:\n\n```dart\nclass Bird extends StatefulWidget {\n const Bird({\n Key key,\n this.color = const Color(0xFFFFE306),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n _BirdState createState() => _BirdState();\n}\n\nclass _BirdState extends State<Bird> {\n double _size = 1.0;\n\n void grow() {\n setState(() { _size += 0.1; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(\n color: widget.color,\n transform: Matrix4.diagonal3Values(_size, _size, 1.0),\n child: widget.child,\n );\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [State], where the logic behind a [StatefulWidget] is hosted.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatefulWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. Rather than receiving\ntheir children as an explicit [List], they receive their children using a\n[SliverChildDelegate].\n\nIt's uncommon to subclass [SliverChildDelegate]. Instead, consider using one\nof the existing subclasses that provide adaptors to builder callbacks or\nexplicit child lists.\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as in the\ncase of [SliverChildListDelegate]) or lazily provided ones (such as in the\ncase of [SliverChildBuilderDelegate]).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree, states\nand render objects are destroyed. A new child at the same position in the\nsliver will be lazily recreated along with new elements, states and render\nobjects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the sliver child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the sliver child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child widget\n subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the sliver child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the sliver keeps the child's\n render object (and by extension, its associated elements and states) in a\n cache list instead of destroying them. When scrolled back into view, the\n render object is repainted as-is (if it wasn't marked dirty in the\n interim).\n\n This only works if the [SliverChildDelegate] subclasses don't wrap the\n child widget subtree with other widgets such as [AutomaticKeepAlive] and\n [RepaintBoundary] via `addAutomaticKeepAlives` and\n `addRepaintBoundaries`.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default in\n [SliverChildListDelegate] or [SliverChildListDelegate]). Instead of\n unconditionally caching the child element subtree when scrolling\n off-screen like [KeepAlive], [AutomaticKeepAlive] can let whether to\n cache the subtree be determined by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its sliver child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the sliver child element subtree will be\n destroyed when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive by\n using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.", "detail": "", "kind": 7, "label": "SliverChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildListDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using an\nexplicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollIndicatorNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that an [GlowingOverscrollIndicator] will start showing an\noverscroll indication.\n\nTo prevent the indicator from showing the indication, call [disallowGlow] on\nthe notification.\n\nSee also:\n\n * [GlowingOverscrollIndicator], which generates this type of notification.", "detail": "", "kind": 7, "label": "OverscrollIndicatorNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget with a preferred size.\n\nThis widget does not impose any constraints on its child, and it doesn't\naffect the child's layout in any way. It just advertises a preferred size\nwhich can be used by the parent.\n\nSee also:\n\n * [AppBar.bottom] and [Scaffold.appBar], which require preferred size widgets.\n * [PreferredSizeWidget], the interface which this widget implements to expose\n its preferred size.\n * [AppBar] and [TabBar], which implement PreferredSizeWidget.", "detail": "", "kind": 7, "label": "PreferredSize" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [InheritedWidget] that's intended to be used as the base class for\nmodels whose dependents may only depend on one part or \"aspect\" of the\noverall model.\n\nAn inherited widget's dependents are unconditionally rebuilt when the\ninherited widget changes per [InheritedWidget.updateShouldNotify].\nThis widget is similar except that dependents aren't rebuilt\nunconditionally.\n\nWidgets that depend on an [InheritedModel] qualify their dependence\nwith a value that indicates what \"aspect\" of the model they depend\non. When the model is rebuilt, dependents will also be rebuilt, but\nonly if there was a change in the model that corresponds to the aspect\nthey provided.\n\nThe type parameter `T` is the type of the model aspect objects.\n\n\nWidgets create a dependency on an [InheritedModel] with a static method:\n[InheritedModel.inheritFrom]. This method's `context` parameter\ndefines the subtree that will be rebuilt when the model changes.\nTypically the `inheritFrom` method is called from a model-specific\nstatic `of` method. For example:\n\n```dart\nclass MyModel extends InheritedModel<String> {\n // ...\n static MyModel of(BuildContext context, String aspect) {\n return InheritedModel.inheritFrom<MyModel>(context, aspect: aspect);\n }\n}\n```\n\nCalling `MyModel.of(context, 'foo')` means that `context` should only\nbe rebuilt when the `foo` aspect of `MyModel` changes. If the aspect\nis null, then the model supports all aspects.\n\nWhen the inherited model is rebuilt the [updateShouldNotify] and\n[updateShouldNotifyDependent] methods are used to decide what\nshould be rebuilt. If [updateShouldNotify] returns true, then the\ninherited model's [updateShouldNotifyDependent] method is tested for\neach dependent and the set of aspect objects it depends on.\nThe [updateShouldNotifyDependent] method must compare the set of aspect\ndependencies with the changes in the model itself.\n\nFor example:\n\n```dart\nclass ABModel extends InheritedModel<String> {\n ABModel({ this.a, this.b, Widget child }) : super(child: child);\n\n final int a;\n final int b;\n\n @override\n bool updateShouldNotify(ABModel old) {\n return a != old.a || b != old.b;\n }\n\n @override\n bool updateShouldNotifyDependent(ABModel old, Set<String> aspects) {\n return (a != old.a && aspects.contains('a'))\n || (b != old.b && aspects.contains('b'))\n }\n\n // ...\n}\n```\n\nIn the previous example the dependencies checked by\n[updateShouldNotifyDependent] are just the aspect strings passed to\n`inheritFromWidgetOfExactType`. They're represented as a [Set] because\none Widget can depend on more than one aspect of the model.\nIf a widget depends on the model but doesn't specify an aspect,\nthen changes in the model will cause the widget to be rebuilt\nunconditionally.\n\nSee also:\n\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.", "detail": "", "kind": 7, "label": "InheritedModel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollbarPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomPainter] for painting scrollbars.\n\nUnlike [CustomPainter]s that subclasses [CustomPainter] and only repaint\nwhen [shouldRepaint] returns true (which requires this [CustomPainter] to\nbe rebuilt), this painter has the added optimization of repainting and not\nrebuilding when:\n\n * the scroll position changes; and\n * when the scrollbar fades away.\n\nCalling [update] with the new [ScrollMetrics] will repaint the new scrollbar\nposition.\n\nUpdating the value on the provided [fadeoutOpacityAnimation] will repaint\nwith the new opacity.\n\nYou must call [dispose] on this [ScrollbarPainter] when it's no longer used.\n\nSee also:\n\n * [Scrollbar] for a widget showing a scrollbar around a [Scrollable] in the\n Material Design style.\n * [CupertinoScrollbar] for a widget showing a scrollbar around a\n [Scrollable] in the iOS style.", "detail": "", "kind": 7, "label": "ScrollbarPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that displays widgets in the [Navigator]'s [Overlay].", "detail": "", "kind": 7, "label": "OverlayRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListItemBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedList].", "detail": "(BuildContext context, int index, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionControls", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for building the selection UI, to be provided by the\nimplementor of the toolbar widget.\n\nOverride text operations such as [handleCut] if needed.", "detail": "", "kind": 7, "label": "TextSelectionControls" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the opacity of a widget.\n\nFor a widget that automatically animates between the sizes of two children,\nfading between them, see [AnimatedCrossFade].\n\n\nHere's an illustration of the [FadeTransition] widget, with it's [opacity]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:", "detail": "", "kind": 7, "label": "FadeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that establishes a page storage bucket for this widget subtree.", "detail": "", "kind": 7, "label": "PageStorage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPadding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Padding] which automatically transitions the\nindentation over a given duration whenever the given inset changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.", "detail": "", "kind": 7, "label": "AnimatedPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for localized resource values for the lowest levels of the Flutter\nframework.\n\nIn particular, this maps locales to a specific [Directionality] using the\n[textDirection] property.\n\nSee also:\n\n * [DefaultWidgetsLocalizations], which implements this interface and\n supports a variety of locales.", "detail": "", "kind": 7, "label": "WidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Orientation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether in portrait or landscape.", "detail": "", "kind": 13, "label": "Orientation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that listens for [Notification]s bubbling up the tree.\n\nNotifications will trigger the [onNotification] callback only if their\n[runtimeType] is a subtype of `T`.\n\nTo dispatch notifications, use the [Notification.dispatch] method.", "detail": "", "kind": 7, "label": "NotificationListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics used by a [PageView].\n\nThese physics cause the page view to snap to page boundaries.\n\nSee also:\n\n * [ScrollPhysics], the base class which defines the API for scrolling\n physics.\n * [PageView.physics], which can override the physics used by a page view.", "detail": "", "kind": 7, "label": "PageScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers.\n\n`T` is the type of gesture recognizer this class manages.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal group of cells in a [Table].\n\nEvery row in a table must have the same number of children.\n\nThe alignment of individual cells in a row can be controlled using a\n[TableCell].", "detail": "", "kind": 7, "label": "TableRow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollUpdateNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has changed its scroll position.\n\nSee also:\n\n * [OverscrollNotification], which indicates that a [Scrollable] widget\n has not changed its scroll position because the change would have caused\n its scroll position to go outside its scroll bounds.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollUpdateNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [ScrollPosition] to a scroll view with fixed item sizes.\n\nThe metrics are available on [ScrollNotification]s generated from a scroll\nviews such as [ListWheelScrollView]s with a [FixedExtentScrollController] and\nexposes the current [itemIndex] and the scroll view's [itemExtent].\n\n`FixedExtent` refers to the fact that the scrollable items have the same size.\nThis is distinct from `Fixed` in the parent class name's [FixedScrollMetric]\nwhich refers to its immutability.", "detail": "", "kind": 7, "label": "FixedExtentMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that renders an exception's message.\n\nThis widget is used when a build method fails, to help with determining\nwhere the problem lies. Exceptions are also logged to the console, which you\ncan read using `flutter logs`. The console will also include additional\ninformation such as the stack trace for the exception.", "detail": "", "kind": 7, "label": "ErrorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFade", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that cross-fades between two given children and animates itself\nbetween their sizes.\n\nThe animation is controlled through the [crossFadeState] parameter.\n[firstCurve] and [secondCurve] represent the opacity curves of the two\nchildren. The [firstCurve] is inverted, i.e. it fades out when providing a\ngrowing curve like [Curves.linear]. The [sizeCurve] is the curve used to\nanimate between the size of the fading-out child and the size of the\nfading-in child.\n\nThis widget is intended to be used to fade a pair of widgets with the same\nwidth. In the case where the two children have different heights, the\nanimation crops overflowing children during the animation by aligning their\ntop edge, which means that the bottom will be clipped.\n\nThe animation is automatically triggered when an existing\n[AnimatedCrossFade] is rebuilt with a different value for the\n[crossFadeState] property.\n\n\nThis code fades between two representations of the Flutter logo. It depends\non a boolean field `_first`; when `_first` is true, the first logo is shown,\notherwise the second logo is shown. When the field changes state, the\n[AnimatedCrossFade] widget cross-fades between the two forms of the logo\nover three seconds.\n\n```dart\nAnimatedCrossFade(\n duration: const Duration(seconds: 3),\n firstChild: const FlutterLogo(style: FlutterLogoStyle.horizontal, size: 100.0),\n secondChild: const FlutterLogo(style: FlutterLogoStyle.stacked, size: 100.0),\n crossFadeState: _first ? CrossFadeState.showFirst : CrossFadeState.showSecond,\n)\n```\n\nSee also:\n\n * [AnimatedSize], the lower-level widget which [AnimatedCrossFade] uses to\n automatically change size.\n * [AnimatedSwitcher], which switches out a child for a new one with a\n customizable transition.", "detail": "", "kind": 7, "label": "AnimatedCrossFade" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flexible", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Row], [Column], or [Flex] flexes.\n\nUsing a [Flexible] widget gives a child of a [Row], [Column], or [Flex]\nthe flexibility to expand to fill the available space in the main axis\n(e.g., horizontally for a [Row] or vertically for a [Column]), but, unlike\n[Expanded], [Flexible] does not require the child to fill the available\nspace.\n\nA [Flexible] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Flexible] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\nSee also:\n\n * [Expanded], which forces the child to expand to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flexible" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrivenScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on animation parameters.\n\nFor example, a [DrivenScrollActivity] is used to implement\n[ScrollController.animateTo].\n\nSee also:\n\n * [BallisticScrollActivity], which animates a scroll view based on a\n physics [Simulation].", "detail": "", "kind": 7, "label": "DrivenScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Spacer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Spacer creates an adjustable, empty spacer that can be used to tune the\nspacing between widgets in a [Flex] container, like [Row] or [Column].\n\nThe [Spacer] widget will take up any available space, so setting the\n[Flex.mainAxisAlignment] on a flex container that contains a [Spacer] to\n[MainAxisAlignment.spaceAround], [MainAxisAlignment.spaceBetween], or\n[MainAxisAlignment.spaceEvenly] will not have any visible effect: the\n[Spacer] has taken up all of the additional space, therefore there is none\nleft to redistribute.\n\n\n```dart\nRow(\n children: <Widget>[\n Text('Begin'),\n Spacer(), // Defaults to a flex of one.\n Text('Middle'),\n // Gives twice the space between Middle and End than Begin and Middle.\n Spacer(flex: 2),\n Text('End'),\n ],\n)\n```\n\nSee also:\n\n * [Row] and [Column], which are the most common containers to use a Spacer\n in.\n * [SizedBox], to create a box with a specific size and an optional child.", "detail": "", "kind": 7, "label": "Spacer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollStartNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has started scrolling.\n\nSee also:\n\n * [ScrollEndNotification], which indicates that scrolling has stopped.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollStartNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [Viewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "NestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Row", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a horizontal array.\n\nTo cause a child to expand to fill the available horizontal space, wrap the\nchild in an [Expanded] widget.\n\nThe [Row] widget does not scroll (and in general it is considered an error\nto have more children in a [Row] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a vertical variant, see [Column].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example divides the available space into three (horizontally), and\nplaces text centered in the first two cells and the Flutter logo centered in\nthe third:\n\n```dart\nRow(\n children: <Widget>[\n Expanded(\n child: Text('Deliver features faster', textAlign: TextAlign.center),\n ),\n Expanded(\n child: Text('Craft beautiful UIs', textAlign: TextAlign.center),\n ),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\n## Troubleshooting\n\n### Why does my row have a yellow and black warning stripe?\n\nIf the non-flexible contents of the row (those that are not wrapped in\n[Expanded] or [Flexible] widgets) are together wider than the row itself,\nthen the row is said to have overflowed. When a row overflows, the row does\nnot have any remaining space to share between its [Expanded] and [Flexible]\nchildren. The row reports this by drawing a yellow and black striped\nwarning box on the edge that is overflowing. If there is room on the outside\nof the row, the amount of overflow is printed in red lettering.\n\n\n#### Story time\n\nSuppose, for instance, that you had this code:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nThe row first asks its first child, the [FlutterLogo], to lay out, at\nwhatever size the logo would like. The logo is friendly and happily decides\nto be 24 pixels to a side. This leaves lots of room for the next child. The\nrow then asks that next child, the text, to lay out, at whatever size it\nthinks is best.\n\nAt this point, the text, not knowing how wide is too wide, says \"Ok, I will\nbe thiiiiiiiiiiiiiiiiiiiis wide.\", and goes well beyond the space that the\nrow has available, not wrapping. The row responds, \"That's not fair, now I\nhave no more room available for my other children!\", and gets angry and\nsprouts a yellow and black strip.\n\nThe fix is to wrap the second child in an [Expanded] widget, which tells the\nrow that the child should be given the remaining room:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Expanded(\n child: Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n ),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nNow, the row first asks the logo to lay out, and then asks the _icon_ to lay\nout. The [Icon], like the logo, is happy to take on a reasonable size (also\n24 pixels, not coincidentally, since both [FlutterLogo] and [Icon] honor the\nambient [IconTheme]). This leaves some room left over, and now the row tells\nthe text exactly how wide to be: the exact width of the remaining space. The\ntext, now happy to comply to a reasonable request, wraps the text within\nthat width, and you end up with a paragraph split over several lines.\n\n## Layout algorithm\n\n_This section describes how a [Row] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Row] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded horizontal constraints and the incoming\n vertical constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight vertical constraints that\n match the incoming max height.\n2. Divide the remaining horizontal space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of horizontal space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same vertical constraints\n as in step 1, but instead of using unbounded horizontal constraints, use\n horizontal constraints based on the amount of space allocated in step 2.\n Children with [Flexible.fit] properties that are [FlexFit.tight] are\n given tight constraints (i.e., forced to fill the allocated space), and\n children with [Flexible.fit] properties that are [FlexFit.loose] are\n given loose constraints (i.e., not forced to fill the allocated space).\n4. The height of the [Row] is the maximum height of the children (which will\n always satisfy the incoming vertical constraints).\n5. The width of the [Row] is determined by the [mainAxisSize] property. If\n the [mainAxisSize] property is [MainAxisSize.max], then the width of the\n [Row] is the max width of the incoming constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the width of the [Row] is the sum\n of widths of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any horizontal\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Column], for a vertical equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may by sized smaller (leaving some remaining room unused).\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Row" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A snapping physics that always lands directly on items instead of anywhere\nwithin the scroll extent.\n\nBehaves similarly to a slot machine wheel except the ballistics simulation\nnever overshoots and rolls back within a single item if it's to settle on\nthat item.\n\nMust be used with a scrollable that uses a [FixedExtentScrollController].\n\nDefers back to the parent beyond the scroll extents.", "detail": "", "kind": 7, "label": "FixedExtentScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveHandle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Listenable] which can be manually triggered.\n\nUsed with [KeepAliveNotification] objects as their\n[KeepAliveNotification.handle].\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses a\n[KeepAliveHandle] internally.", "detail": "", "kind": 7, "label": "KeepAliveHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SafeArea", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by sufficient padding to avoid intrusions by\nthe operating system.\n\nFor example, this will indent the child by enough to avoid the status bar at\nthe top of the screen.\n\nIt will also indent the child by the amount necessary to avoid The Notch on\nthe iPhone X, or other similar creative physical features of the display.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\n\nSee also:\n\n * [SliverSafeArea], for insetting slivers to avoid operating system\n intrusions.\n * [Padding], for insetting widgets in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedOpacity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Opacity] which automatically transitions the child's\nopacity over a given duration whenever the given opacity changes.\n\nAnimating an opacity is relatively expensive because it requires painting\nthe child into an intermediate buffer.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\n\n```dart\nclass LogoFade extends StatefulWidget {\n @override\n createState() => LogoFadeState();\n}\n\nclass LogoFadeState extends State<LogoFade> {\n double opacityLevel = 1.0;\n\n void _changeOpacity() {\n setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedOpacity(\n opacity: opacityLevel,\n duration: Duration(seconds: 3),\n child: FlutterLogo(),\n ),\n RaisedButton(\n child: Text('Fade Logo'),\n onPressed: _changeOpacity,\n ),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [FadeTransition], an explicitly animated version of this widget, where\n an [Animation] is provided by the caller instead of being built in.", "detail": "", "kind": 7, "label": "AnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboardListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls a callback whenever the user presses or releases a key\non a keyboard.\n\nA [RawKeyboardListener] is useful for listening to raw key events and\nhardware buttons that are represented as keys. Typically used by games and\nother apps that use keyboards for purposes other than text entry.\n\nFor text entry, consider using a [EditableText], which integrates with\non-screen keyboards and input method editors (IMEs).\n\nSee also:\n\n * [EditableText], which should be used instead of this widget for text\n entry.", "detail": "", "kind": 7, "label": "RawKeyboardListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedDefaultTextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [DefaultTextStyle] which automatically transitions the\ndefault text style (the text style to apply to descendant [Text] widgets\nwithout explicit style) over a given duration whenever the given style\nchanges.\n\nThe [textAlign], [softWrap], [textOverflow], and [maxLines] properties are\nnot animated and take effect immediately when changed.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].", "detail": "", "kind": 7, "label": "AnimatedDefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that composes other [Element]s.\n\nRather than creating a [RenderObject] directly, a [ComponentElement] creates\n[RenderObject]s indirectly by creating other [Element]s.\n\nContrast with [RenderObjectElement].", "detail": "", "kind": 7, "label": "ComponentElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleListResolutionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeListResolutionCallback].\n\nA [LocaleListResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the list of\nlocales for the device.\n\nThe [locales] list is the device's preferred locales when the app started, or the\ndevice's preferred locales the user selected after the app was started. This list\nis in order of preference. If this list is null or empty, then Flutter has not yet\nreceived the locale information from the platform. The [supportedLocales] parameter\nis just the value of [WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleResolutionCallback], which takes only one default locale (instead of a list)\n and is attempted only after this callback fails or is null. [LocaleListResolutionCallback]\n is recommended over [LocaleResolutionCallback].", "detail": "(List<Locale> locales, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleListResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place in an [Overlay] that can contain a widget.\n\nOverlay entries are inserted into an [Overlay] using the\n[OverlayState.insert] or [OverlayState.insertAll] functions. To find the\nclosest enclosing overlay for a given [BuildContext], use the [Overlay.of]\nfunction.\n\nAn overlay entry can be in at most one overlay at a time. To remove an entry\nfrom its overlay, call the [remove] function on the overlay entry.\n\nBecause an [Overlay] uses a [Stack] layout, overlay entries can use\n[Positioned] and [AnimatedPositioned] to position themselves within the\noverlay.\n\nFor example, [Draggable] uses an [OverlayEntry] to show the drag avatar that\nfollows the user's finger across the screen after the drag begins. Using the\noverlay to display the drag avatar lets the avatar float over the other\nwidgets in the app. As the user's finger moves, draggable calls\n[markNeedsBuild] on the overlay entry to cause it to rebuild. It its build,\nthe entry includes a [Positioned] with its top and left property set to\nposition the drag avatar near the user's finger. When the drag is over,\n[Draggable] removes the entry from the overlay to remove the drag avatar\nfrom view.\n\nBy default, if there is an entirely [opaque] entry over this one, then this\none will not be included in the widget tree (in particular, stateful widgets\nwithin the overlay entry will not be instantiated). To ensure that your\noverlay entry is still built even if it is not visible, set [maintainState]\nto true. This is more expensive, so should be done with care. In particular,\nif widgets in an overlay entry with [maintainState] set to true repeatedly\ncall [State.setState], the user's battery will be drained unnecessarily.\n\nSee also:\n\n * [Overlay]\n * [OverlayState]\n * [WidgetsApp]\n * [MaterialApp]", "detail": "", "kind": 7, "label": "OverlayEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HoldScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing but can be released to resume\nnormal idle behavior.\n\nThis is used while the user is touching the [Scrollable] but before the\ntouch has become a [Drag].\n\nFor the purposes of [ScrollNotification]s, this activity does not constitute\nscrolling, and does not prevent the user from interacting with the contents\nof the [Scrollable] (unlike when a drag has begun or there is a scroll\nanimation underway).", "detail": "", "kind": 7, "label": "HoldScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a [Scrollable]'s contents, useful for modeling the state\nof its viewport.\n\nThis class defines a current position, [pixels], and a range of values\nconsidered \"in bounds\" for that position. The range has a minimum value at\n[minScrollExtent] and a maximum value at [maxScrollExtent] (inclusive). The\nviewport scrolls in the direction and axis described by [axisDirection]\nand [axis].\n\nThe [outOfRange] getter will return true if [pixels] is outside this defined\nrange. The [atEdge] getter will return true if the [pixels] position equals\neither the [minScrollExtent] or the [maxScrollExtent].\n\nThe dimensions of the viewport in the given [axis] are described by\n[viewportDimension].\n\nThe above values are also exposed in terms of [extentBefore],\n[extentInside], and [extentAfter], which may be more useful for use cases\nsuch as scroll bars; for example, see [Scrollbar].\n\nSee also:\n\n * [FixedScrollMetrics], which is an immutable object that implements this\n interface.", "detail": "", "kind": 7, "label": "ScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAliveClientMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin with convenience methods for clients of [AutomaticKeepAlive]. Used\nwith [State] subclasses.\n\nSubclasses must implement [wantKeepAlive], and their [build] methods must\ncall `super.build` (the return value will always return null, and should be\nignored).\n\nThen, whenever [wantKeepAlive]'s value changes (or might change), the\nsubclass should call [updateKeepAlive].\n\nThe type argument `T` is the type of the [StatefulWidget] subclass of the\n[State] into which this class is being mixed.\n\nSee also:\n\n * [AutomaticKeepAlive], which listens to messages from this mixin.\n * [KeepAliveNotification], the notifications sent by this mixin.", "detail": "", "kind": 7, "label": "AutomaticKeepAliveClientMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offstage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that lays the child out as if it was in the tree, but without\npainting anything, without making the child available for hit testing, and\nwithout taking any room in the parent.\n\nAnimations continue to run in offstage children, and therefore use battery\nand CPU time, regardless of whether the animations end up being visible.\n\n[Offstage] can be used to measure the dimensions of a widget without\nbringing it on screen (yet). To hide a widget from view while it is not\nneeded, prefer removing the widget from the tree entirely rather than\nkeeping it alive in an [Offstage] subtree.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly).\n * [TickerMode], which can be used to disable animations in a subtree.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Offstage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state of connection to an asynchronous computation.\n\nSee also:\n\n * [AsyncSnapshot], which augments a connection state with information\n received from the asynchronous computation.", "detail": "", "kind": 13, "label": "ConnectionState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ParentDataWidget] as its configuration.", "detail": "", "kind": 7, "label": "ParentDataElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenableBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget whose content stays synced with a [ValueListenable].\n\nGiven a [ValueListenable<T>] and a [builder] which builds widgets from\nconcrete values of `T`, this class will automatically register itself as a\nlistener of the [ValueListenable] and call the [builder] with updated values\nwhen the value changes.\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nvalue of the [ValueListenable], it's more efficient to build that subtree\nonce instead of rebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\n[ValueListenableBuilder] will pass it back to your [builder] function so\nthat you can incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis sample shows how you could use a [ValueListenableBuilder] instead of\nsetting state on the whole [Scaffold] in the default `flutter create` app.\n\n```dart\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State<MyHomePage> {\n final ValueNotifier<int> _counter = ValueNotifier<int>(0);\n final Widget goodJob = const Text('Good job!');\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title)\n ),\n body: Center(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pushed the button this many times:'),\n ValueListenableBuilder(\n builder: (BuildContext context, int value, Widget child) {\n // This builder will only get called when the _counter\n // is updated.\n return Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: <Widget>[\n Text('$value'),\n child,\n ],\n );\n },\n valueListenable: _counter,\n // The child parameter is most helpful if the child is\n // expensive to build and does not depend on the value from\n // the notifier.\n child: goodJob,\n )\n ],\n ),\n ),\n floatingActionButton: FloatingActionButton(\n child: Icon(Icons.plus_one),\n onPressed: () => _counter.value += 1,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedBuilder], which also triggers rebuilds from a [Listenable]\n without passing back a specific value from a [ValueListenable].\n * [NotificationListener], which lets you rebuild based on [Notification]\n coming from its descendant widgets rather than a [ValueListenable] that\n you have a direct reference to.\n * [StreamBuilder], where a builder can depend on a [Stream] rather than\n a [ValueListenable] for more advanced use cases.", "detail": "", "kind": 7, "label": "ValueListenableBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route with entrance and exit transitions.", "detail": "", "kind": 7, "label": "TransitionRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePageBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's primary contents.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildPage] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) → Widget", "kind": 7, "label": "RoutePageBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of a method that provides a [BuildContext] and\n[ScrollController] for building a widget that may overflow the draggable\n[Axis] of the containing [DraggableScrollSheet].\n\nUsers should apply the [scrollController] to a [ScrollView] subclass, such\nas a [SingleChildScrollView], [ListView] or [GridView], to have the whole\nsheet be draggable.", "detail": "(BuildContext context, ScrollController scrollController) → Widget", "kind": 7, "label": "ScrollableWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that builds a widget given an [Orientation].\n\nUsed by [OrientationBuilder.builder].", "detail": "(BuildContext context, Orientation orientation) → Widget", "kind": 7, "label": "OrientationWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A viewport showing a subset of children on a wheel.\n\nTypically used with [ListWheelScrollView], this viewport is similar to\n[Viewport] in that it shows a subset of children in a scrollable based\non the scrolling offset and the children's dimensions. But uses\n[RenderListWheelViewport] to display the children on a wheel.\n\nSee also:\n\n * [ListWheelScrollView], widget that combines this viewport with a scrollable.\n * [RenderListWheelViewport], the render object that renders the children\n on a wheel.", "detail": "", "kind": 7, "label": "ListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget, e.g. [StatelessWidget.build]\nor [State.build].\n\nUsed by [Builder.builder], [OverlayEntry.builder], etc.\n\nSee also:\n\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [TransitionBuilder], which is similar but also takes a child.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context) → Widget", "kind": 7, "label": "WidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the draggable is dropped.\n\nThe velocity and offset at which the pointer was moving when the draggable\nwas dropped is available in the [DraggableDetails]. Also included in the\n`details` is whether the draggable's [DragTarget] accepted it.\n\nUsed by [Draggable.onDragEnd]", "detail": "(DraggableDetails details) → void", "kind": 7, "label": "DragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the constructor that is called when an error occurs while\nbuilding a widget.\n\nThe argument provides information regarding the cause of the error.\n\nSee also:\n\n * [ErrorWidget.builder], which can be set to override the default\n [ErrorWidget] builder.\n * [FlutterError.reportError], which is typically called with the same\n [FlutterErrorDetails] object immediately prior to [ErrorWidget.builder]\n being called.", "detail": "(FlutterErrorDetails details) → Widget", "kind": 7, "label": "ErrorWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewHeaderSliversBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [NestedScrollView] for building its header.\n\nThe `innerBoxIsScrolled` argument is typically used to control the\n[SliverAppBar.forceElevated] property to ensure that the app bar shows a\nshadow, since it would otherwise not necessarily be aware that it had\ncontent ostensibly below it.", "detail": "(BuildContext context, bool innerBoxIsScrolled) → List<Widget>", "kind": 7, "label": "NestedScrollViewHeaderSliversBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes how [Scrollable] widgets should behave.\n\nUsed by [ScrollConfiguration] to configure the [Scrollable] widgets in a\nsubtree.", "detail": "", "kind": 7, "label": "ScrollBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AspectRatio", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that attempts to size the child to a specific aspect ratio.\n\nThe widget first tries the largest width permitted by the layout\nconstraints. The height of the widget is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The widget will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the widget would\ncontinue iterating through the constraints. If the widget does not\nfind a feasible size after consulting each constraint, the widget\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "AspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetAccept", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for causing a [DragTarget] to accept the given data.\n\nUsed by [DragTarget.onAccept].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that overlays a widget over the current route.", "detail": "", "kind": 7, "label": "PopupRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has a child widget provided to it, instead of building a new\nwidget.\n\nUseful as a base class for other widgets, such as [InheritedWidget] and\n[ParentDataWidget].\n\nSee also:\n\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [ParentDataWidget], for widgets that populate the\n [RenderObject.parentData] slot of their child's [RenderObject] to\n configure the parent widget's layout.\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "ProxyWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleTickerProviderStateMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides a single [Ticker] that is configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create the [AnimationController] in a [State] that only uses a single\n[AnimationController], mix in this class, then pass `vsync: this`\nto the animation controller constructor.\n\nThis mixin only supports vending a single ticker. If you might have multiple\n[AnimationController] objects over the lifetime of the [State], use a full\n[TickerProviderStateMixin] instead.", "detail": "", "kind": 7, "label": "SingleTickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NeverScrollableScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that does not allow the user to scroll.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "NeverScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectionChangedCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the selection change callback used by\n[WidgetInspectorService.selectionChangedCallback].", "detail": "() → void", "kind": 7, "label": "InspectorSelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcher", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that by default does a [FadeTransition] between a new widget and\nthe widget previously set on the [AnimatedSwitcher] as a child.\n\nIf they are swapped fast enough (i.e. before [duration] elapses), more than\none previous child can exist and be transitioning out while the newest one\nis transitioning in.\n\nIf the \"new\" child is the same widget type and key as the \"old\" child, but\nwith different parameters, then [AnimatedSwitcher] will *not* do a\ntransition between them, since as far as the framework is concerned, they\nare the same widget and the existing widget can be updated with the new\nparameters. To force the transition to occur, set a [Key] on each child\nwidget that you wish to be considered unique (typically a [ValueKey] on the\nwidget data that distinguishes this child from the others).\n\nThe same key can be used for a new child as was used for an already-outgoing\nchild; the two will not be considered related. (For example, if a progress\nindicator with key A is first shown, then an image with key B, then another\nprogress indicator with key A again, all in rapid succession, then the old\nprogress indicator and the image will be fading out while a new progress\nindicator is fading in.)\n\n\n```dart\nclass ClickCounter extends StatefulWidget {\n const ClickCounter({Key key}) : super(key: key);\n\n @override\n _ClickCounterState createState() => _ClickCounterState();\n}\n\nclass _ClickCounterState extends State<ClickCounter> {\n int _count = 0;\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Material(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n AnimatedSwitcher(\n duration: const Duration(milliseconds: 500),\n transitionBuilder: (Widget child, Animation<double> animation) {\n return ScaleTransition(child: child, scale: animation);\n },\n child: Text(\n '$_count',\n // This key causes the AnimatedSwitcher to interpret this as a \"new\"\n // child each time the count changes, so that it will begin its animation\n // when the count changes.\n key: ValueKey<int>(_count),\n style: Theme.of(context).textTheme.display1,\n ),\n ),\n RaisedButton(\n child: const Text('Increment'),\n onPressed: () {\n setState(() {\n _count += 1;\n });\n },\n ),\n ],\n ),\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedCrossFade], which only fades between two children, but also\n interpolates their sizes, and is reversible.\n * [FadeTransition] which [AnimatedSwitcher] uses to perform the transition.", "detail": "", "kind": 7, "label": "AnimatedSwitcher" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building the widget representing the form field.\n\nUsed by [FormField.builder].", "detail": "(FormFieldState<T> field) → Widget", "kind": 7, "label": "FormFieldBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Builder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that calls a closure to obtain its child widget.\n\nSee also:\n\n * [StatefulBuilder], a platonic widget which also has state.", "detail": "", "kind": 7, "label": "Builder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPrototypeExtentList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places its box children in a linear array and constrains them\nto have the same extent as a prototype item along the main axis.\n\n[SliverPrototypeExtentList] arranges its children in a line along\nthe main axis starting at offset zero and without gaps. Each child is\nconstrained to the same extent as the [prototypeItem] along the main axis\nand the [SliverConstraints.crossAxisExtent] along the cross axis.\n\n[SliverPrototypeExtentList] is more efficient than [SliverList] because\n[SliverPrototypeExtentList] does not need to lay out its children to obtain\ntheir extent along the main axis. It's a little more flexible than\n[SliverFixedExtentList] because there's no need to determine the appropriate\nitem extent in pixels.\n\nSee also:\n\n * [SliverFixedExtentList], whose itemExtent is a pixel value.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverPrototypeExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Center", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that centers its child within itself.\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\nSee also:\n\n * [Align], which lets you arbitrarily position a child within itself,\n rather than just centering it.\n * [Row], a widget that displays its children in a horizontal array.\n * [Column], a widget that displays its children in a vertical array.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Center" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Text", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A run of text with a single style.\n\nThe [Text] widget displays a string of text with single style. The string\nmight break across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nThe [style] argument is optional. When omitted, the text will use the style\nfrom the closest enclosing [DefaultTextStyle]. If the given style's\n[TextStyle.inherit] property is true (the default), the given style will\nbe merged with the closest enclosing [DefaultTextStyle]. This merging\nbehavior is useful, for example, to make the text bold while using the\ndefault font family and size.\n\n\n```dart\nText(\n 'Hello, $_name! How are you?',\n textAlign: TextAlign.center,\n overflow: TextOverflow.ellipsis,\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\nUsing the [Text.rich] constructor, the [Text] widget can\ndisplay a paragraph with differently styled [TextSpan]s. The sample\nthat follows displays \"Hello beautiful world\" with different styles\nfor each word.\n\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'Hello', // default text style\n children: <TextSpan>[\n TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),\n TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),\n ],\n ),\n)\n```\n\n## Interactivity\n\nTo make [Text] react to touch events, wrap it in a [GestureDetector] widget\nwith a [GestureDetector.onTap] handler.\n\nIn a material design application, consider using a [FlatButton] instead, or\nif that isn't appropriate, at least using an [InkWell] instead of\n[GestureDetector].\n\nTo make sections of the text interactive, use [RichText] and specify a\n[TapGestureRecognizer] as the [TextSpan.recognizer] of the relevant part of\nthe text.\n\nSee also:\n\n * [RichText], which gives you more control over the text styles.\n * [DefaultTextStyle], which sets default styles for [Text] widgets.", "detail": "", "kind": 7, "label": "Text" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes and positions children efficiently, according to the\nlogic in a [FlowDelegate].\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow, which happens\nwithout the children being laid out again (contrast this with a [Stack],\nwhich does the sizing and positioning together during layout).\n\nThe most efficient way to trigger a repaint of the flow is to supply an\nanimation to the constructor of the [FlowDelegate]. The flow will listen to\nthis animation and repaint whenever the animation ticks, avoiding both the\nbuild and layout phases of the pipeline.\n\nSee also:\n\n * [Wrap], which provides the layout model that some other frameworks call\n \"flow\", and is otherwise unrelated to [Flow].\n * [FlowDelegate], which controls the visual presentation of the children.\n * [Stack], which arranges children relative to the edges of the container.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that both has state and calls a closure to obtain its child widget.\n\nSee also:\n\n * [Builder], the platonic stateless widget.", "detail": "", "kind": 7, "label": "StatefulBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A bridge from a [RenderObject] to an [Element] tree.\n\nThe given container is the [RenderObject] that the [Element] tree should be\ninserted into. It must be a [RenderObject] that implements the\n[RenderObjectWithChildMixin] protocol. The type argument `T` is the kind of\n[RenderObject] that the container expects as its child.\n\nUsed by [runApp] to bootstrap applications.", "detail": "", "kind": 7, "label": "RenderObjectToWidgetAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivityDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A backend for a [ScrollActivity].\n\nUsed by subclasses of [ScrollActivity] to manipulate the scroll view that\nthey are acting upon.\n\nSee also:\n\n * [ScrollActivity], which uses this class as its delegate.\n * [ScrollPositionWithSingleContext], the main implementation of this interface.", "detail": "", "kind": 7, "label": "ScrollActivityDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rectangle.\n\nBy default, [ClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].\n\n[ClipRect] is commonly used with these widgets, which commonly paint outside\ntheir bounds:\n\n * [CustomPaint]\n * [CustomSingleChildLayout]\n * [CustomMultiChildLayout]\n * [Align] and [Center] (e.g., if [Align.widthFactor] or\n [Align.heightFactor] is less than 1.0).\n * [OverflowBox]\n * [SizedOverflowBox]\n\n\nFor example, by combining a [ClipRect] with an [Align], one can show just\nthe top half of an [Image]:\n\n```dart\nClipRect(\n child: Align(\n alignment: Alignment.topCenter,\n heightFactor: 0.5,\n child: Image.network(userAvatarUrl),\n ),\n)\n```\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutId", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metadata for identifying children in a [CustomMultiChildLayout].\n\nThe [MultiChildLayoutDelegate.hasChild],\n[MultiChildLayoutDelegate.layoutChild], and\n[MultiChildLayoutDelegate.positionChild] methods use these identifiers.", "detail": "", "kind": 7, "label": "LayoutId" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Placeholder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a box that represents where other widgets will one day\nbe added.\n\nThis widget is useful during development to indicate that the interface is\nnot yet complete.\n\nBy default, the placeholder is sized to fit its container. If the\nplaceholder is in an unbounded space, it will size itself according to the\ngiven [fallbackWidth] and [fallbackHeight].", "detail": "", "kind": 7, "label": "Placeholder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RebuildDirtyWidgetCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugOnRebuildDirtyWidget] implementations.", "detail": "(Element e, bool builtOnce) → void", "kind": 7, "label": "RebuildDirtyWidgetCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConfirmDismissCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to give the application an opportunity to\nconfirm or veto a dismiss gesture.\n\nUsed by [Dismissible.confirmDismiss].", "detail": "(DismissDirection direction) → Future<bool>", "kind": 7, "label": "ConfirmDismissCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a multiple box children that each fill the viewport.\n\n[SliverFillViewport] places its children in a linear array along the main\naxis. Each child is sized to fill the viewport, both in the main and cross\naxis.\n\nSee also:\n\n * [SliverFixedExtentList], which has a configurable\n [SliverFixedExtentList.itemExtent].\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LimitedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box that limits its size only when it's unconstrained.\n\nIf this widget's maximum width is unconstrained then its child's width is\nlimited to [maxWidth]. Similarly, if this widget's maximum height is\nunconstrained then its child's height is limited to [maxHeight].\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).\n\nSee also:\n\n * [ConstrainedBox], which applies its constraints in all cases, not just\n when the incoming constraints are unbounded.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "LimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncSnapshot", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable representation of the most recent interaction with an asynchronous\ncomputation.\n\nSee also:\n\n * [StreamBuilder], which builds itself based on a snapshot from interacting\n with a [Stream].\n * [FutureBuilder], which builds itself based on a snapshot from interacting\n with a [Future].", "detail": "", "kind": 7, "label": "AsyncSnapshot" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultAssetBundle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the default asset bundle for its descendants.\n\nFor example, used by [Image] to determine which bundle to use for\n[AssetImage]s if no bundle is specified explicitly.\n\n\nThis can be used in tests to override what the current asset bundle is, thus\nallowing specific resources to be injected into the widget under test.\n\nFor example, a test could create a test asset bundle like this:\n\n```dart\nclass TestAssetBundle extends CachingAssetBundle {\n @override\n Future<ByteData> load(String key) async {\n if (key == 'resources/test')\n return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);\n return null;\n }\n}\n```\n\n...then wrap the widget under test with a [DefaultAssetBundle] using this\nbundle implementation:\n\n```dart\nawait tester.pumpWidget(\n MaterialApp(\n home: DefaultAssetBundle(\n bundle: TestAssetBundle(),\n child: TestWidget(),\n ),\n ),\n);\n```\n\nAssuming that `TestWidget` uses [DefaultAssetBundle.of] to obtain its\n[AssetBundle], it will now see the [TestAssetBundle]'s \"Hello World!\" data\nwhen requesting the \"resources/test\" asset.\n\nSee also:\n\n * [AssetBundle], the interface for asset bundles.\n * [rootBundle], the default default asset bundle.", "detail": "", "kind": 7, "label": "DefaultAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Banner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a diagonal message above the corner of another widget.\n\nUseful for showing the execution mode of an app (e.g., that asserts are\nenabled.)\n\nSee also:\n\n * [CheckedModeBanner], which the [WidgetsApp] widget includes by default in\n debug mode, to show a banner that says \"DEBUG\".", "detail": "", "kind": 7, "label": "Banner" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay show two time series. The first shows how much time was required\non this thread to produce each frame. The second shows how much time was\nrequired on the GPU thread to produce each frame. Ideally, both these values\nwould be less than the total frame budget for the hardware on which the app\nis running. For example, if the hardware has a screen that updates at 60 Hz,\neach thread should ideally spend less than 16ms producing each frame. This\nideal condition is indicated by a green vertical line for each thread.\nOtherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "PerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildListDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using an explicit list.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[SliverChildBuilderDelegate] or by subclassing [SliverChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.\n\nThe widgets in the given [children] list are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\nSee [SliverChildBuilderDelegate] for sample code using\n`semanticIndexOffset` and `semanticIndexCallback`.\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.", "detail": "", "kind": 7, "label": "SliverChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling view inside of which can be nested other scrolling views, with\ntheir scroll positions being intrinsically linked.\n\nThe most common use case for this widget is a scrollable view with a\nflexible [SliverAppBar] containing a [TabBar] in the header (build by\n[headerSliverBuilder], and with a [TabBarView] in the [body], such that the\nscrollable view's contents vary based on which tab is visible.\n\n## Motivation\n\nIn a normal [ScrollView], there is one set of slivers (the components of the\nscrolling view). If one of those slivers hosted a [TabBarView] which scrolls\nin the opposite direction (e.g. allowing the user to swipe horizontally\nbetween the pages represented by the tabs, while the list scrolls\nvertically), then any list inside that [TabBarView] would not interact with\nthe outer [ScrollView]. For example, flinging the inner list to scroll to\nthe top would not cause a collapsed [SliverAppBar] in the outer [ScrollView]\nto expand.\n\n[NestedScrollView] solves this problem by providing custom\n[ScrollController]s for the outer [ScrollView] and the inner [ScrollView]s\n(those inside the [TabBarView], hooking them together so that they appear,\nto the user, as one coherent scroll view.\n\n\nThis example shows a [NestedScrollView] whose header is the combination of a\n[TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a\n[SliverOverlapAbsorber]/[SliverOverlapInjector] pair to make the inner lists\nalign correctly, and it uses [SafeArea] to avoid any horizontal disturbances\n(e.g. the \"notch\" on iOS when the phone is horizontal). In addition,\n[PageStorageKey]s are used to remember the scroll position of each tab's\nlist.\n\nIn the example below, `_tabs` is a list of strings, one for each tab, giving\nthe tab labels. In a real application, it would be replaced by the actual\ndata model being represented.\n\n```dart\nDefaultTabController(\n length: _tabs.length, // This is the number of tabs.\n child: NestedScrollView(\n headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {\n // These are the slivers that show up in the \"outer\" scroll view.\n return <Widget>[\n SliverOverlapAbsorber(\n // This widget takes the overlapping behavior of the SliverAppBar,\n // and redirects it to the SliverOverlapInjector below. If it is\n // missing, then it is possible for the nested \"inner\" scroll view\n // below to end up under the SliverAppBar even when the inner\n // scroll view thinks it has not been scrolled.\n // This is not necessary if the \"headerSliverBuilder\" only builds\n // widgets that do not overlap the next sliver.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n child: SliverAppBar(\n title: const Text('Books'), // This is the title in the app bar.\n pinned: true,\n expandedHeight: 150.0,\n // The \"forceElevated\" property causes the SliverAppBar to show\n // a shadow. The \"innerBoxIsScrolled\" parameter is true when the\n // inner scroll view is scrolled beyond its \"zero\" point, i.e.\n // when it appears to be scrolled below the SliverAppBar.\n // Without this, there are cases where the shadow would appear\n // or not appear inappropriately, because the SliverAppBar is\n // not actually aware of the precise position of the inner\n // scroll views.\n forceElevated: innerBoxIsScrolled,\n bottom: TabBar(\n // These are the widgets to put in each tab in the tab bar.\n tabs: _tabs.map((String name) => Tab(text: name)).toList(),\n ),\n ),\n ),\n ];\n },\n body: TabBarView(\n // These are the contents of the tab views, below the tabs.\n children: _tabs.map((String name) {\n return SafeArea(\n top: false,\n bottom: false,\n child: Builder(\n // This Builder is needed to provide a BuildContext that is \"inside\"\n // the NestedScrollView, so that sliverOverlapAbsorberHandleFor() can\n // find the NestedScrollView.\n builder: (BuildContext context) {\n return CustomScrollView(\n // The \"controller\" and \"primary\" members should be left\n // unset, so that the NestedScrollView can control this\n // inner scroll view.\n // If the \"controller\" property is set, then this scroll\n // view will not be associated with the NestedScrollView.\n // The PageStorageKey should be unique to this ScrollView;\n // it allows the list to remember its scroll position when\n // the tab view is not on the screen.\n key: PageStorageKey<String>(name),\n slivers: <Widget>[\n SliverOverlapInjector(\n // This is the flip side of the SliverOverlapAbsorber above.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n ),\n SliverPadding(\n padding: const EdgeInsets.all(8.0),\n // In this example, the inner scroll view has\n // fixed-height list items, hence the use of\n // SliverFixedExtentList. However, one could use any\n // sliver widget here, e.g. SliverList or SliverGrid.\n sliver: SliverFixedExtentList(\n // The items in this example are fixed to 48 pixels\n // high. This matches the Material Design spec for\n // ListTile widgets.\n itemExtent: 48.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n // This builder is called for each child.\n // In this example, we just number each list item.\n return ListTile(\n title: Text('Item $index'),\n );\n },\n // The childCount of the SliverChildBuilderDelegate\n // specifies how many children this inner list\n // has. In this example, each tab has a list of\n // exactly 30 items, but this is arbitrary.\n childCount: 30,\n ),\n ),\n ),\n ],\n );\n },\n ),\n );\n }).toList(),\n ),\n ),\n)\n```", "detail": "", "kind": 7, "label": "NestedScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list that works page by page.\n\nEach child of a page view is forced to be the same size as the viewport.\n\nYou can use a [PageController] to control which page is visible in the view.\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nThe [PageController] can also be used to control the\n[PageController.initialPage], which determines which page is shown when the\n[PageView] is first constructed, and the [PageController.viewportFraction],\nwhich determines the size of the pages as a fraction of the viewport size.\n\n\nSee also:\n\n * [PageController], which controls which page is visible in the view.\n * [SingleChildScrollView], when you need to make a single child scrollable.\n * [ListView], for a scrollable list of boxes.\n * [GridView], for a scrollable grid of boxes.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "PageView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBoxTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DecoratedBox] that animates the different properties\nof its [Decoration].\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [DecoratedBox], which also draws a [Decoration] but is not animated.\n * [AnimatedContainer], a more full-featured container that also animates on\n decoration using an internal animation.", "detail": "", "kind": 7, "label": "DecoratedBoxTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetectorState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [RawGestureDetector].", "detail": "", "kind": 7, "label": "RawGestureDetectorState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Decoration]s.\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[Decoration.lerp].\n\nFor [ShapeDecoration]s which know how to [ShapeDecoration.lerpTo] or\n[ShapeDecoration.lerpFrom] each other, this will produce a smooth\ninterpolation between decorations.\n\nSee also:\n\n * [Tween] for a discussion on how to use interpolation objects.\n * [ShapeDecoration], [RoundedRectangleBorder], [CircleBorder], and\n [StadiumBorder] for examples of shape borders that can be smoothly\n interpolated.\n * [BoxBorder] for a border that can only be smoothly interpolated between other\n [BoxBorder]s.", "detail": "", "kind": 7, "label": "DecorationTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [RenderObjectWidget] as its configuration.\n\n[RenderObjectElement] objects have an associated [RenderObject] widget in\nthe render tree, which handles concrete operations like laying out,\npainting, and hit testing.\n\nContrast with [ComponentElement].\n\nFor details on the lifecycle of an element, see the discussion at [Element].\n\n## Writing a RenderObjectElement subclass\n\nThere are three common child models used by most [RenderObject]s:\n\n* Leaf render objects, with no children: The [LeafRenderObjectElement] class\n handles this case.\n\n* A single child: The [SingleChildRenderObjectElement] class handles this\n case.\n\n* A linked list of children: The [MultiChildRenderObjectElement] class\n handles this case.\n\nSometimes, however, a render object's child model is more complicated. Maybe\nit has a two-dimensional array of children. Maybe it constructs children on\ndemand. Maybe it features multiple lists. In such situations, the\ncorresponding [Element] for the [Widget] that configures that [RenderObject]\nwill be a new subclass of [RenderObjectElement].\n\nSuch a subclass is responsible for managing children, specifically the\n[Element] children of this object, and the [RenderObject] children of its\ncorresponding [RenderObject].\n\n### Specializing the getters\n\n[RenderObjectElement] objects spend much of their time acting as\nintermediaries between their [widget] and their [renderObject]. To make this\nmore tractable, most [RenderObjectElement] subclasses override these getters\nso that they return the specific type that the element expects, e.g.:\n\n```dart\nclass FooElement extends RenderObjectElement {\n\n @override\n Foo get widget => super.widget;\n\n @override\n RenderFoo get renderObject => super.renderObject;\n\n // ...\n}\n```\n\n### Slots\n\nEach child [Element] corresponds to a [RenderObject] which should be\nattached to this element's render object as a child.\n\nHowever, the immediate children of the element may not be the ones that\neventually produce the actual [RenderObject] that they correspond to. For\nexample a [StatelessElement] (the element of a [StatelessWidget]) simply\ncorresponds to whatever [RenderObject] its child (the element returned by\nits [StatelessWidget.build] method) corresponds to.\n\nEach child is therefore assigned a _slot_ token. This is an identifier whose\nmeaning is private to this [RenderObjectElement] node. When the descendant\nthat finally produces the [RenderObject] is ready to attach it to this\nnode's render object, it passes that slot token back to this node, and that\nallows this node to cheaply identify where to put the child render object\nrelative to the others in the parent render object.\n\n### Updating children\n\nEarly in the lifecycle of an element, the framework calls the [mount]\nmethod. This method should call [updateChild] for each child, passing in\nthe widget for that child, and the slot for that child, thus obtaining a\nlist of child [Element]s.\n\nSubsequently, the framework will call the [update] method. In this method,\nthe [RenderObjectElement] should call [updateChild] for each child, passing\nin the [Element] that was obtained during [mount] or the last time [update]\nwas run (whichever happened most recently), the new [Widget], and the slot.\nThis provides the object with a new list of [Element] objects.\n\nWhere possible, the [update] method should attempt to map the elements from\nthe last pass to the widgets in the new pass. For example, if one of the\nelements from the last pass was configured with a particular [Key], and one\nof the widgets in this new pass has that same key, they should be paired up,\nand the old element should be updated with the widget (and the slot\ncorresponding to the new widget's new position, also). The [updateChildren]\nmethod may be useful in this regard.\n\n[updateChild] should be called for children in their logical order. The\norder can matter; for example, if two of the children use [PageStorage]'s\n`writeState` feature in their build method (and neither has a [Widget.key]),\nthen the state written by the first will be overwritten by the second.\n\n#### Dynamically determining the children during the build phase\n\nThe child widgets need not necessarily come from this element's widget\nverbatim. They could be generated dynamically from a callback, or generated\nin other more creative ways.\n\n#### Dynamically determining the children during layout\n\nIf the widgets are to be generated at layout time, then generating them when\nthe [update] method won't work: layout of this element's render object\nhasn't started yet at that point. Instead, the [update] method can mark the\nrender object as needing layout (see [RenderObject.markNeedsLayout]), and\nthen the render object's [RenderObject.performLayout] method can call back\nto the element to have it generate the widgets and call [updateChild]\naccordingly.\n\nFor a render object to call an element during layout, it must use\n[RenderObject.invokeLayoutCallback]. For an element to call [updateChild]\noutside of its [update] method, it must use [BuildOwner.buildScope].\n\nThe framework provides many more checks in normal operation than it does\nwhen doing a build during layout. For this reason, creating widgets with\nlayout-time build semantics should be done with great care.\n\n#### Handling errors when building\n\nIf an element calls a builder function to obtain widgets for its children,\nit may find that the build throws an exception. Such exceptions should be\ncaught and reported using [FlutterError.reportError]. If a child is needed\nbut a builder has failed in this way, an instance of [ErrorWidget] can be\nused instead.\n\n### Detaching children\n\nIt is possible, when using [GlobalKey]s, for a child to be proactively\nremoved by another element before this element has been updated.\n(Specifically, this happens when the subtree rooted at a widget with a\nparticular [GlobalKey] is being moved from this element to an element\nprocessed earlier in the build phase.) When this happens, this element's\n[forgetChild] method will be called with a reference to the affected child\nelement.\n\nThe [forgetChild] method of a [RenderObjectElement] subclass must remove the\nchild element from its child list, so that when it next [update]s its\nchildren, the removed child is not considered.\n\nFor performance reasons, if there are many elements, it may be quicker to\ntrack which elements were forgotten by storing them in a [Set], rather than\nproactively mutating the local record of the child list and the identities\nof all the slots. For example, see the implementation of\n[MultiChildRenderObjectElement].\n\n### Maintaining the render object tree\n\nOnce a descendant produces a render object, it will call\n[insertChildRenderObject]. If the descendant's slot changes identity, it\nwill call [moveChildRenderObject]. If a descendant goes away, it will call\n[removeChildRenderObject].\n\nThese three methods should update the render tree accordingly, attaching,\nmoving, and detaching the given child render object from this element's own\nrender object respectively.\n\n### Walking the children\n\nIf a [RenderObjectElement] object has any children [Element]s, it must\nexpose them in its implementation of the [visitChildren] method. This method\nis used by many of the framework's internal mechanisms, and so should be\nfast. It is also used by the test framework and [debugDumpApp].", "detail": "", "kind": 7, "label": "RenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ProxyWidget] as its configuration.", "detail": "", "kind": 7, "label": "ProxyElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which takes a specific\n[Animation<RelativeRect>] to transition the child's position from a start\nposition to an end position over the lifetime of the animation.\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [PositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "PositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CreateRectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that takes two [Rect] instances and returns a\n[RectTween] that transitions between them.\n\nThis is typically used with a [HeroController] to provide an animation for\n[Hero] positions that looks nicer than a linear movement. For example, see\n[MaterialRectArcTween].", "detail": "(Rect begin, Rect end) → Tween<Rect>", "kind": 7, "label": "CreateRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for strategies that build widgets based on asynchronous\ninteraction.\n\nSee also:\n\n * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Stream].\n * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Future].", "detail": "(BuildContext context, AsyncSnapshot<T> snapshot) → Widget", "kind": 7, "label": "AsyncWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlockSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops the semantics of all widget that were painted before it\nin the same semantic container.\n\nThis is useful to hide widgets from accessibility tools that are painted\nbehind a certain widget, e.g. an alert should usually disallow interaction\nwith any widget located \"behind\" the alert (even when they are still\npartially visible). Similarly, an open [Drawer] blocks interactions with\nany widget outside the drawer.\n\nSee also:\n\n * [ExcludeSemantics] which drops all semantics of its descendants.", "detail": "", "kind": 7, "label": "BlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[SliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [SliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children.\n\n\nIf the children have a fixed extent in the main axis, consider using\n[SliverFixedExtentList] rather than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis and is therefore more efficient.\n\n\nSee also:\n\n * [SliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDetector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures.\n\nAttempts to recognize gestures that correspond to its non-null callbacks.\n\nIf this widget has a child, it defers to that child for its sizing behavior.\nIf it does not have a child, it grows to fit the parent instead.\n\nBy default a GestureDetector with an invisible child ignores touches;\nthis behavior can be controlled with [behavior].\n\nGestureDetector also listens for accessibility events and maps\nthem to the callbacks. To ignore accessibility events, set\n[excludeFromSemantics] to true.\n\nSee <http://flutter.dev/gestures/> for additional information.\n\nMaterial design applications typically react to touches with ink splash\neffects. The [InkWell] class implements this effect and can be used in place\nof a [GestureDetector] for handling taps.\n\n\nThis example makes a rectangle react to being tapped by setting the\n`_lights` field:\n\n```dart\nGestureDetector(\n onTap: () {\n setState(() { _lights = true; });\n },\n child: Container(\n color: Colors.yellow,\n child: Text('TURN LIGHTS ON'),\n ),\n)\n```\n\n## Debugging\n\nTo see how large the hit test box of a [GestureDetector] is for debugging\npurposes, set [debugPaintPointersEnabled] to true.", "detail": "", "kind": 7, "label": "GestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalizationsDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A factory for a set of localized resources of type `T`, to be loaded by a\n[Localizations] widget.\n\nTypical applications have one [Localizations] widget which is created by the\n[WidgetsApp] and configured with the app's `localizationsDelegates`\nparameter (a list of delegates). The delegate's [type] is used to identify\nthe object created by an individual delegate's [load] method.", "detail": "", "kind": 7, "label": "LocalizationsDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProviderStateMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides [Ticker] objects that are configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create an [AnimationController] in a class that uses this mixin, pass\n`vsync: this` to the animation controller constructor whenever you\ncreate a new animation controller.\n\nIf you only have a single [Ticker] (for example only a single\n[AnimationController]) for the lifetime of your [State], then using a\n[SingleTickerProviderStateMixin] is more efficient. This is the common case.", "detail": "", "kind": 7, "label": "TickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that hook [ParentData] information to children of\n[RenderObjectWidget]s.\n\nThis can be used to provide per-child configuration for\n[RenderObjectWidget]s with more than one child. For example, [Stack] uses\nthe [Positioned] parent data widget to position each child.\n\nA [ParentDataWidget] is specific to a particular kind of [RenderObject], and\nthus also to a particular [RenderObjectWidget] class. That class is `T`, the\n[ParentDataWidget] type argument.\n\n\nThis example shows how you would build a [ParentDataWidget] to configure a\n`FrogJar` widget's children by specifying a [Size] for each one.\n\n```dart\nclass FrogSize extends ParentDataWidget<FrogJar> {\n FrogSize({\n Key key,\n @required this.size,\n @required Widget child,\n }) : assert(child != null),\n assert(size != null),\n super(key: key, child: child);\n\n final Size size;\n\n @override\n void applyParentData(RenderObject renderObject) {\n final FrogJarParentData parentData = renderObject.parentData;\n if (parentData.size != size) {\n parentData.size = size;\n final RenderFrogJar targetParent = renderObject.parent;\n targetParent.markNeedsLayout();\n }\n }\n}\n```\n\nSee also:\n\n * [RenderObject], the superclass for layout algorithms.\n * [RenderObject.parentData], the slot that this class configures.\n * [ParentData], the superclass of the data that will be placed in\n [RenderObject.parentData] slots.\n * [RenderObjectWidget], the class for widgets that wrap [RenderObject]s.\n The `T` type parameter for [ParentDataWidget] is a [RenderObjectWidget].\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.", "detail": "", "kind": 7, "label": "ParentDataWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for scrolling activities like dragging and flinging.\n\nSee also:\n\n * [ScrollPosition], which uses [ScrollActivity] objects to manage the\n [ScrollPosition] of a [Scrollable].", "detail": "", "kind": 7, "label": "ScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageIcon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An icon that comes from an [ImageProvider], e.g. an [AssetImage].\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for icons based on glyphs from fonts instead of images.\n * [Icons], a predefined font based set of icons from the material design library.", "detail": "", "kind": 7, "label": "ImageIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorberHandle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Handle to provide to a [SliverOverlapAbsorber], a [SliverOverlapInjector],\nand an [NestedScrollViewViewport], to shift overlap in a [NestedScrollView].\n\nA particular [SliverOverlapAbsorberHandle] can only be assigned to a single\n[SliverOverlapAbsorber] at a time. It can also be (and normally is) assigned\nto one or more [SliverOverlapInjector]s, which must be later descendants of\nthe same [NestedScrollViewViewport] as the [SliverOverlapAbsorber]. The\n[SliverOverlapAbsorber] must be a direct descendant of the\n[NestedScrollViewViewport], taking part in the same sliver layout. (The\n[SliverOverlapInjector] can be a descendant that takes part in a nested\nscroll view's sliver layout.)\n\nWhenever the [NestedScrollViewViewport] is marked dirty for layout, it will\ncause its assigned [SliverOverlapAbsorberHandle] to fire notifications. It\nis the responsibility of the [SliverOverlapInjector]s (and any other\nclients) to mark themselves dirty when this happens, in case the geometry\nsubsequently changes during layout.\n\nSee also:\n\n * [NestedScrollView], which uses a [NestedScrollViewViewport] and a\n [SliverOverlapAbsorber] to align its children, and which shows sample\n usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorberHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nSee also the discussions at [Key] and [Widget.key].", "detail": "", "kind": 7, "label": "ObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetToRenderBoxAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An adapter for placing a specific [RenderBox] in the widget tree.\n\nA given render object can be placed at most once in the widget tree. This\nwidget enforces that restriction by keying itself using a [GlobalObjectKey]\nfor the given render object.", "detail": "", "kind": 7, "label": "WidgetToRenderBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ValueKey] that defines where [PageStorage] values will be saved.\n\n[Scrollable]s ([ScrollPosition]s really) use [PageStorage] to save their\nscroll offset. Each time a scroll completes, the scrollable's page\nstorage is updated.\n\n[PageStorage] is used to save and restore values that can outlive the widget.\nThe values are stored in a per-route [Map] whose keys are defined by the\n[PageStorageKey]s for the widget and its ancestors. To make it possible\nfor a saved value to be found when a widget is recreated, the key's values\nmust not be objects whose identity will change each time the widget is created.\n\nFor example, to ensure that the scroll offsets for the scrollable within\neach `MyScrollableTabView` below are restored when the [TabBarView]\nis recreated, we've specified [PageStorageKey]s whose values are the\ntabs' string labels.\n\n```dart\nTabBarView(\n children: myTabs.map((Tab tab) {\n MyScrollableTabView(\n key: PageStorageKey<String>(tab.text), // like 'Tab 1'\n tab: tab,\n ),\n }),\n)\n```", "detail": "", "kind": 7, "label": "PageStorageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectButtonBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by\n[WidgetInspector.selectButtonBuilder].", "detail": "(BuildContext context, VoidCallback onPressed) → Widget", "kind": 7, "label": "InspectorSelectButtonBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOval", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildBuilderDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using a builder\ncallback.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot have to be built until they are displayed.", "detail": "", "kind": 7, "label": "ListWheelChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatelessWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatelessElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenConstructor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a [Tween] factory.\n\nThis is the type of one of the arguments of [TweenVisitor], the signature\nused by [AnimatedWidgetBaseState.forEachTween].", "detail": "(T targetValue) → Tween<T>", "kind": 7, "label": "TweenConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetLeave", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] leaves a [DragTarget].\n\nUsed by [DragTarget.onLeave].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetLeave" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigationToolbar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[NavigationToolbar] is a layout helper to position 3 widgets or groups of\nwidgets along a horizontal axis that's sensible for an application's\nnavigation bar such as in Material Design and in iOS.\n\nThe [leading] and [trailing] widgets occupy the edges of the widget with\nreasonable size constraints while the [middle] widget occupies the remaining\nspace in either a center aligned or start aligned fashion.\n\nEither directly use the themed app bars such as the Material [AppBar] or\nthe iOS [CupertinoNavigationBar] or wrap this widget with more theming\nspecifications for your own custom app bar.", "detail": "", "kind": 7, "label": "NavigationToolbar" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines which portion of the content is visible in a scroll view.\n\nThe [pixels] value determines the scroll offset that the scroll view uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThe [ScrollPosition] applies [physics] to scrolling, and stores the\n[minScrollExtent] and [maxScrollExtent].\n\nScrolling is controlled by the current [activity], which is set by\n[beginActivity]. [ScrollPosition] itself does not start any activities.\nInstead, concrete subclasses, such as [ScrollPositionWithSingleContext],\ntypically start activities in response to user input or instructions from a\n[ScrollController].\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\n## Subclassing ScrollPosition\n\nOver time, a [Scrollable] might have many different [ScrollPosition]\nobjects. For example, if [Scrollable.physics] changes type, [Scrollable]\ncreates a new [ScrollPosition] with the new physics. To transfer state from\nthe old instance to the new instance, subclasses implement [absorb]. See\n[absorb] for more details.\n\nSubclasses also need to call [didUpdateScrollDirection] whenever\n[userScrollDirection] changes values.\n\nSee also:\n\n * [Scrollable], which uses a [ScrollPosition] to determine which portion of\n its content to display.\n * [ScrollController], which can be used with [ListView], [GridView] and\n other scrollable widgets to control a [ScrollPosition].\n * [ScrollPositionWithSingleContext], which is the most commonly used\n concrete subclass of [ScrollPosition].\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents the details when a specific pointer event occurred on\nthe [Draggable].\n\nThis includes the [Velocity] at which the pointer was moving and [Offset]\nwhen the draggable event occurred, and whether its [DragTarget] accepted it.\n\nAlso, this is the details object for callbacks that use [DragEndCallback].", "detail": "", "kind": 7, "label": "DraggableDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeMatcher", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This class is a work-around for the \"is\" operator not accepting a variable value as its right operand", "detail": "", "kind": 7, "label": "TypeMatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [MultiChildRenderObjectWidget] as its configuration.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [ContainerRenderObjectMixin] mixin with a parent data\ntype that implements [ContainerParentDataMixin<RenderObject>]. Such widgets\nare expected to inherit from [MultiChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "MultiChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given [Listenable] changes value.\n\n[AnimatedWidget] is most commonly used with [Animation] objects, which are\n[Listenable], but it can be used with any [Listenable], including\n[ChangeNotifier] and [ValueNotifier].\n\n[AnimatedWidget] is most useful for widgets that are otherwise stateless. To\nuse [AnimatedWidget], simply subclass it and implement the build function.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedWidget].\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with TickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return SpinningContainer(controller: _controller);\n }\n}\n\nclass SpinningContainer extends AnimatedWidget {\n const SpinningContainer({Key key, AnimationController controller})\n : super(key: key, listenable: controller);\n\n Animation<double> get _progress => listenable;\n\n @override\n Widget build(BuildContext context) {\n return Transform.rotate(\n angle: _progress.value * 2.0 * math.pi,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n );\n }\n}\n```\n\nFor more complex case involving additional state, consider using\n[AnimatedBuilder].\n\nSee also:\n\n * [AnimatedBuilder], which is useful for more complex use cases.\n * [Animation], which is a [Listenable] object that can be used for\n [listenable].\n * [ChangeNotifier], which is another [Listenable] object that can be used\n for [listenable].", "detail": "", "kind": 7, "label": "AnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Localizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the [Locale] for its `child` and the localized resources that the\nchild depends on.\n\nLocalized resources are loaded by the list of [LocalizationsDelegate]\n`delegates`. Each delegate is essentially a factory for a collection\nof localized resources. There are multiple delegates because there are\nmultiple sources for localizations within an app.\n\nDelegates are typically simple subclasses of [LocalizationsDelegate] that\noverride [LocalizationsDelegate.load]. For example a delegate for the\n`MyLocalizations` class defined below would be:\n\n```dart\nclass _MyDelegate extends LocalizationsDelegate<MyLocalizations> {\n @override\n Future<MyLocalizations> load(Locale locale) => MyLocalizations.load(locale);\n\n @override\n bool shouldReload(MyLocalizationsDelegate old) => false;\n}\n```\n\nEach delegate can be viewed as a factory for objects that encapsulate a\na set of localized resources. These objects are retrieved with\nby runtime type with [Localizations.of].\n\nThe [WidgetsApp] class creates a `Localizations` widget so most apps\nwill not need to create one. The widget app's `Localizations` delegates can\nbe initialized with [WidgetsApp.localizationsDelegates]. The [MaterialApp]\nclass also provides a `localizationsDelegates` parameter that's just\npassed along to the [WidgetsApp].\n\nApps should retrieve collections of localized resources with\n`Localizations.of<MyLocalizations>(context, MyLocalizations)`,\nwhere MyLocalizations is an app specific class defines one function per\nresource. This is conventionally done by a static `.of` method on the\nMyLocalizations class.\n\nFor example, using the `MyLocalizations` class defined below, one would\nlookup a localized title string like this:\n```dart\nMyLocalizations.of(context).title()\n```\nIf `Localizations` were to be rebuilt with a new `locale` then\nthe widget subtree that corresponds to [BuildContext] `context` would\nbe rebuilt after the corresponding resources had been loaded.\n\nThis class is effectively an [InheritedWidget]. If it's rebuilt with\na new `locale` or a different list of delegates or any of its\ndelegates' [LocalizationsDelegate.shouldReload()] methods returns true,\nthen widgets that have created a dependency by calling\n`Localizations.of(context)` will be rebuilt after the resources\nfor the new locale have been loaded.\n\n\nThis following class is defined in terms of the\n[Dart `intl` package](https://github.com/dart-lang/intl). Using the `intl`\npackage isn't required.\n\n```dart\nclass MyLocalizations {\n MyLocalizations(this.locale);\n\n final Locale locale;\n\n static Future<MyLocalizations> load(Locale locale) {\n return initializeMessages(locale.toString())\n .then((void _) {\n return MyLocalizations(locale);\n });\n }\n\n static MyLocalizations of(BuildContext context) {\n return Localizations.of<MyLocalizations>(context, MyLocalizations);\n }\n\n String title() => Intl.message('<title>', name: 'title', locale: locale.toString());\n // ... more Intl.message() methods like title()\n}\n```\nA class based on the `intl` package imports a generated message catalog that provides\nthe `initializeMessages()` function and the per-locale backing store for `Intl.message()`.\nThe message catalog is produced by an `intl` tool that analyzes the source code for\nclasses that contain `Intl.message()` calls. In this case that would just be the\n`MyLocalizations` class.\n\nOne could choose another approach for loading localized resources and looking them up while\nstill conforming to the structure of this example.", "detail": "", "kind": 7, "label": "Localizations" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformTarget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be targeted by a [CompositedTransformFollower].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\nupdates the [link] object so that any [CompositedTransformFollower] widgets\nthat are subsequently composited in the same frame and were given the same\n[LayerLink] can position themselves at the same screen location.\n\nA single [CompositedTransformTarget] can be followed by multiple\n[CompositedTransformFollower] widgets.\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nany linked [CompositedTransformFollower]s.\n\nSee also:\n\n * [CompositedTransformFollower], the widget that can target this one.\n * [LeaderLayer], the layer that implements this widget's logic.", "detail": "", "kind": 7, "label": "CompositedTransformTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for being notified when a form field changes value.\n\nUsed by [FormField.onSaved].", "detail": "(T newValue) → void", "kind": 7, "label": "FormFieldSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFadeBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [AnimatedCrossFade.layoutBuilder] callback.\n\nThe `topChild` is the child fading in, which is normally drawn on top. The\n`bottomChild` is the child fading out, normally drawn on the bottom.\n\nFor good performance, the returned widget tree should contain both the\n`topChild` and the `bottomChild`; the depth of the tree, and the types of\nthe widgets in the tree, from the returned widget to each of the children\nshould be the same; and where there is a widget with multiple children, the\ntop child and the bottom child should be keyed using the provided\n`topChildKey` and `bottomChildKey` keys respectively.\n\n\n```dart\nWidget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) {\n return Stack(\n fit: StackFit.loose,\n children: <Widget>[\n Positioned(\n key: bottomChildKey,\n left: 0.0,\n top: 0.0,\n right: 0.0,\n child: bottomChild,\n ),\n Positioned(\n key: topChildKey,\n child: topChild,\n )\n ],\n );\n}\n```", "detail": "(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) → Widget", "kind": 7, "label": "AnimatedCrossFadeBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableScrollableSheet", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container for a [Scrollable] that responds to drag gestures by resizing\nthe scrollable until a limit is reached, and then scrolling.\n\nThis widget can be dragged along the vertical axis between its\n[minChildSize], which defaults to `0.25` and [maxChildSize], which defaults\nto `1.0`. These sizes are percentages of the height of the parent container.\n\nThe widget coordinates resizing and scrolling of the widget returned by\nbuilder as the user drags along the horizontal axis.\n\nThe widget will initially be displayed at its initialChildSize which\ndefaults to `0.5`, meaning half the height of its parent. Dragging will work\nbetween the range of minChildSize and maxChildSize (as percentages of the\nparent container's height) as long as the builder creates a widget which\nuses the provided [ScrollController]. If the widget created by the\n[ScrollableWidgetBuilder] does not use provided [ScrollController], the\nsheet will remain at the initialChildSize.\n\n\nThis is a sample widget which shows a [ListView] that has 25 [ListTile]s.\nIt starts out as taking up half the body of the [Scaffold], and can be\ndragged up to the full height of the scaffold or down to 25% of the height\nof the scaffold. Upon reaching full height, the list contents will be\nscrolled up or down, until they reach the top of the list again and the user\ndrags the sheet back down.\n\n```dart\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('DraggableScrollableSheet'),\n ),\n body: SizedBox.expand(\n child: DraggableScrollableSheet(\n builder: (BuildContext context, ScrollController scrollController) {\n return Container(\n color: Colors.blue[100],\n child: ListView.builder(\n controller: scrollController,\n itemCount: 25,\n itemBuilder: (BuildContext context, int index) {\n return ListTile(title: Text('Item $index'));\n },\n ),\n );\n },\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DraggableScrollableSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ControlsWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that creates a widget given the two callbacks `onStepContinue` and\n`onStepCancel`.\n\nUsed by [Stepper.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].", "detail": "(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) → Widget", "kind": 7, "label": "ControlsWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.pageRouteBuilder].\n\nCreates a [PageRoute] using the given [RouteSettings] and [WidgetBuilder].", "detail": "(RouteSettings settings, WidgetBuilder builder) → PageRoute<T>", "kind": 7, "label": "PageRouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverToBoxAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box widget.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverToBoxAdapter]\nis a basic sliver that creates a bridge back to one of the usual box-based\nwidgets.\n\nRather than using multiple [SliverToBoxAdapter] widgets to display multiple\nbox widgets in a [CustomScrollView], consider using [SliverList],\n[SliverFixedExtentList], [SliverPrototypeExtentList], or [SliverGrid],\nwhich are more efficient because they instantiate only those children that\nare actually visible through the scroll view's viewport.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.\n * [SliverList], which displays multiple box widgets in a linear array.\n * [SliverFixedExtentList], which displays multiple box widgets with the\n same main-axis extent in a linear array.\n * [SliverPrototypeExtentList], which displays multiple box widgets with the\n same main-axis extent as a prototype item, in a linear array.\n * [SliverGrid], which displays multiple box widgets in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin used by routes to handle back navigations internally by popping a list.\n\nWhen a [Navigator] is instructed to pop, the current route is given an\nopportunity to handle the pop internally. A `LocalHistoryRoute` handles the\npop internally if its list of local history entries is non-empty. Rather\nthan being removed as the current route, the most recent [LocalHistoryEntry]\nis removed from the list and its [LocalHistoryEntry.onRemove] is called.", "detail": "", "kind": 7, "label": "LocalHistoryRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An element that lazily builds children for a [SliverMultiBoxAdaptorWidget].\n\nImplements [RenderSliverBoxChildManager], which lets this element manage\nthe children of subclasses of [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flex", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a one-dimensional array.\n\nThe [Flex] widget allows you to control the axis along which the children are\nplaced (horizontal or vertical). This is referred to as the _main axis_. If\nyou know the main axis in advance, then consider using a [Row] (if it's\nhorizontal) or [Column] (if it's vertical) instead, because that will be less\nverbose.\n\nTo cause a child to expand to fill the available space in the [direction]\nof this widget's main axis, wrap the child in an [Expanded] widget.\n\nThe [Flex] widget does not scroll (and in general it is considered an error\nto have more children in a [Flex] than will fit in the available room). If\nyou have some widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nIf you only have one child, then rather than using [Flex], [Row], or\n[Column], consider using [Align] or [Center] to position the child.\n\n## Layout algorithm\n\n_This section describes how a [Flex] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Flex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded main axis constraints and the incoming\n cross axis constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight cross axis constraints\n that match the incoming max extent in the cross axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of main axis space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [Flex] is the maximum cross axis extent of\n the children (which will always satisfy the incoming constraints).\n5. The main axis extent of the [Flex] is determined by the [mainAxisSize]\n property. If the [mainAxisSize] property is [MainAxisSize.max], then the\n main axis extent of the [Flex] is the max extent of the incoming main\n axis constraints. If the [mainAxisSize] property is [MainAxisSize.min],\n then the main axis extent of the [Flex] is the sum of the main axis\n extents of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a version of this widget that is always horizontal.\n * [Column], for a version of this widget that is always vertical.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n that may be sized smaller (leaving some remaining room unused).\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flex" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GenerateAppTitle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.onGenerateTitle].\n\nUsed to generate a value for the app's [Title.title], which the device uses\nto identify the app for the user. The `context` includes the [WidgetsApp]'s\n[Localizations] widget so that this method can be used to produce a\nlocalized title.\n\nThis function must not return null.", "detail": "(BuildContext context) → String", "kind": 7, "label": "GenerateAppTitle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExcludeSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops all the semantics of its descendants.\n\nWhen [excluding] is true, this widget (and its subtree) is excluded from\nthe semantics tree.\n\nThis can be used to hide descendant widgets that would otherwise be\nreported but that would only be confusing. For example, the\nmaterial library's [Chip] widget hides the avatar since it is\nredundant with the chip label.\n\nSee also:\n\n * [BlockSemantics] which drops semantics of widgets earlier in the tree.", "detail": "", "kind": 7, "label": "ExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlayChanged", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting changes to the selection component of a\n[TextEditingValue] for the purposes of a [TextSelectionOverlay]. The\n[caretRect] argument gives the location of the caret in the coordinate space\nof the [RenderBox] given by the [TextSelectionOverlay.renderObject].\n\nUsed by [TextSelectionOverlay.onSelectionOverlayChanged].", "detail": "(TextEditingValue value, Rect caretRect) → void", "kind": 7, "label": "TextSelectionOverlayChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollEndNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has stopped scrolling.\n\nSee also:\n\n * [ScrollStartNotification], which indicates that scrolling has started.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollEndNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatefulWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatefulElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of the [LayoutBuilder] builder function.", "detail": "(BuildContext context, BoxConstraints constraints) → Widget", "kind": 7, "label": "LayoutWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImagePhase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The phases a [FadeInImage] goes through.", "detail": "", "kind": 13, "label": "FadeInImagePhase" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SlideTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the position of a widget relative to its normal position.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nBy default, the offsets are applied in the coordinate system of the canvas\n(so positive x offsets move the child towards the right). If a\n[textDirection] is provided, then the offsets are applied in the reading\ndirection, so in right-to-left text, positive x offsets move towards the\nleft, and in left-to-right text, positive x offsets move towards the right.\n\nHere's an illustration of the [SlideTransition] widget, with it's [position]\nanimated by a [CurvedAnimation] set to [Curves.elasticIn]:\n\nSee also:\n\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SlideTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyleTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [TextStyle]s.\n\nThis class specializes the interpolation of [Tween<TextStyle>] to use\n[TextStyle.lerp].\n\nThis will not work well if the styles don't set the same fields.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "TextStyleTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches Android.\n\nSee also:\n\n * [BouncingScrollSimulation], which implements iOS scroll physics.", "detail": "", "kind": 7, "label": "ClampingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The activity a scroll view performs when a the user drags their finger\nacross the screen.\n\nSee also:\n\n * [ScrollDragController], which listens to the [Drag] and actually scrolls\n the scroll view.", "detail": "", "kind": 7, "label": "DragScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildLoopingListDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies infinite children for [ListWheelScrollView] by\nlooping an explicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildLoopingListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsFlutterBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A concrete binding for applications based on the Widgets framework.\n\nThis is the glue that binds the framework to the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Route", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstraction for an entry managed by a [Navigator].\n\nThis class defines an abstract interface between the navigator and the\n\"routes\" that are pushed on and popped off the navigator. Most routes have\nvisual affordances, which they place in the navigators [Overlay] using one\nor more [OverlayEntry] objects.\n\nSee [Navigator] for more explanation of how to use a Route\nwith navigation, including code examples.\n\nSee [MaterialPageRoute] for a route that replaces the\nentire screen with a platform-adaptive transition.", "detail": "", "kind": 7, "label": "Route" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates its own size and clips and aligns its child.\n\n[SizeTransition] acts as a [ClipRect] that animates either its width or its\nheight, depending upon the value of [axis]. The alignment of the child along\nthe [axis] is specified by the [axisAlignment].\n\nLike most widgets, [SizeTransition] will conform to the constraints it is\ngiven, so be sure to put it in a context where it can change size. For\ninstance, if you place it into a [Container] with a fixed size, then the\n[SizeTransition] will not be able to change size, and will appear to do\nnothing.\n\nHere's an illustration of the [SizeTransition] widget, with it's [sizeFactor]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [AnimatedCrossFade], for a widget that automatically animates between\n the sizes of two children, fading between them.\n * [ScaleTransition], a widget that scales the size of the child instead of\n clipping it.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SizeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IdleScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing.\n\nWhen a scroll view is not scrolling, it is performing the idle activity.\n\nIf the [Scrollable] changes dimensions, this activity triggers a ballistic\nactivity to restore the view.", "detail": "", "kind": 7, "label": "IdleScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building children of a [DragTarget].\n\nThe `candidateData` argument contains the list of drag data that is hovering\nover this [DragTarget] and that has passed [DragTarget.onWillAccept]. The\n`rejectedData` argument contains the list of drag data that is hovering over\nthis [DragTarget] and that will not be accepted by the [DragTarget].\n\nUsed by [DragTarget.builder].", "detail": "(BuildContext context, List<T> candidateData, List<dynamic> rejectedData) → Widget", "kind": 7, "label": "DragTargetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticIndexCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback which produces a semantic index given a widget and the local index.\n\nReturn a null value to prevent a widget from receiving an index.\n\nA semantic index is used to tag child semantic nodes for accessibility\nannouncements in scroll view.\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.\n * [SliverChildBuilderDelegate], for an explanation of how this is used to\n generate indexes.", "detail": "(Widget widget, int localIndex) → int", "kind": 7, "label": "SemanticIndexCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDragController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scrolls a scroll view as the user drags their finger across the screen.\n\nSee also:\n\n * [DragScrollActivity], which is the activity the scroll view performs\n while a drag is underway.", "detail": "", "kind": 7, "label": "ScrollDragController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedStack", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] that shows a single child from a list of children.\n\nThe displayed child is the one with the given [index]. The stack is\nalways as big as the largest child.\n\nIf value is null, then nothing is displayed.\n\nSee also:\n\n * [Stack], for more details about stacks.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Transform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a transformation before painting its child.\n\n\n\nThis example rotates and skews an orange box containing text, keeping the\ntop right corner pinned to its original position.\n\n```dart\nContainer(\n color: Colors.black,\n child: Transform(\n alignment: Alignment.topRight,\n transform: Matrix4.skewY(0.3)..rotateZ(-math.pi / 12.0),\n child: Container(\n padding: const EdgeInsets.all(8.0),\n color: const Color(0xFFE8581C),\n child: const Text('Apartment for rent!'),\n ),\n ),\n)\n```\n\nSee also:\n\n * [RotatedBox], which rotates the child widget during layout, not just\n during painting.\n * [FractionalTranslation], which applies a translation to the child\n that is relative to the child's size.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.", "detail": "", "kind": 7, "label": "Transform" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotificationPredicate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A predicate for [ScrollNotification], used to customize widgets that\nlisten to notifications from their children.", "detail": "(ScrollNotification notification) → bool", "kind": 7, "label": "ScrollNotificationPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated widget that automatically transitions its size over a given\nduration whenever the given child's size changes.", "detail": "", "kind": 7, "label": "AnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysScrollableScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that always lets the user scroll.\n\nOn Android, overscrolls will be clamped by default and result in an\noverscroll glow. On iOS, overscrolls will load a spring that will return\nthe scroll view to its normal range when released.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "AlwaysScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that prevent the scroll offset from reaching\nbeyond the bounds of the content.\n\nThis is the behavior typically seen on Android.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on Android.\n * [BouncingScrollPhysics], which is the analogous physics for iOS' bouncing\n behavior.\n * [GlowingOverscrollIndicator], which is used by [ScrollConfiguration] to\n provide the glowing effect that is usually found with this clamping effect\n on Android. When using a [MaterialApp], the [GlowingOverscrollIndicator]'s\n glow color is specified to use [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "ClampingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RichText", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A paragraph of rich text.\n\nThe [RichText] widget displays text that uses multiple different styles. The\ntext to display is described using a tree of [TextSpan] objects, each of\nwhich has an associated style that is used for that subtree. The text might\nbreak across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nText displayed in a [RichText] widget must be explicitly styled. When\npicking which style to use, consider using [DefaultTextStyle.of] the current\n[BuildContext] to provide defaults. For more details on how to style text in\na [RichText] widget, see the documentation for [TextStyle].\n\nConsider using the [Text] widget to integrate with the [DefaultTextStyle]\nautomatically. When all the text uses the same style, the default constructor\nis less verbose. The [Text.rich] constructor allows you to style multiple\nspans with the default text style while still allowing specified styles per\nspan.\n\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Hello ',\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),\n TextSpan(text: ' world!'),\n ],\n ),\n)\n```\n\nSee also:\n\n * [TextStyle], which discusses how to style text.\n * [TextSpan], which is used to describe the text in a paragraph.\n * [Text], which automatically applies the ambient styles described by a\n [DefaultTextStyle] to a single string.", "detail": "", "kind": 7, "label": "RichText" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScope", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a scope in which widgets can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nA focus scope does not itself receive focus but instead helps remember\nprevious focus states. A scope is currently active when its [node] is the\nfirst focus of its parent scope. To activate a [FocusScope], either use the\n[autofocus] property or explicitly make the [node] the first focus in the\nparent scope:\n\n```dart\nFocusScope.of(context).setFirstFocus(node);\n```\n\nIf a [FocusScope] is removed from the widget tree, then the previously\nfocused node will be focused, but only if the [node] is the same [node]\nobject as in the previous frame. To assure this, you can use a GlobalKey to\nkeep the [FocusScope] widget from being rebuilt from one frame to the next,\nor pass in the [node] from a parent that is not rebuilt. If there is no next\nsibling, then the parent scope node will be focused.\n\nSee also:\n\n * [FocusScopeNode], which is the associated node in the focus tree.\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.", "detail": "", "kind": 7, "label": "FocusScope" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Form", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An optional container for grouping together multiple form field widgets\n(e.g. [TextField] widgets).\n\nEach individual form field should be wrapped in a [FormField] widget, with\nthe [Form] widget as a common ancestor of all of those. Call methods on\n[FormState] to save, reset, or validate each [FormField] that is a\ndescendant of this [Form]. To obtain the [FormState], you may use [Form.of]\nwith a context whose ancestor is the [Form], or pass a [GlobalKey] to the\n[Form] constructor and call [GlobalKey.currentState].\n\nThis example shows a [Form] with one [TextFormField] and a [RaisedButton]. A\n[GlobalKey] is used here to identify the [Form] and validate input.\n\n```dart\nfinal _formKey = GlobalKey<FormState>();\n\n@override\nWidget build(BuildContext context) {\n return Form(\n key: _formKey,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n TextFormField(\n validator: (value) {\n if (value.isEmpty) {\n return 'Please enter some text';\n }\n },\n ),\n Padding(\n padding: const EdgeInsets.symmetric(vertical: 16.0),\n child: RaisedButton(\n onPressed: () {\n // Validate will return true if the form is valid, or false if\n // the form is invalid.\n if (_formKey.currentState.validate()) {\n // Process data.\n }\n },\n child: Text('Submit'),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [GlobalKey], a key that is unique across the entire app.\n * [FormField], a single form field widget that maintains the current state.\n * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].", "detail": "", "kind": 7, "label": "Form" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4Tween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Matrix4]s.\n\nThis class specializes the interpolation of [Tween<Matrix4>] to be\nappropriate for transformation matrices.\n\nCurrently this class works only for translations.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "Matrix4Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IgnorePointer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is invisible during hit testing.\n\nWhen [ignoring] is true, this widget (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because it returns\nfalse from [RenderBox.hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [AbsorbPointer], which also prevents its children from receiving pointer\n events but is itself visible to hit testing.", "detail": "", "kind": 7, "label": "IgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Table", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses the table layout algorithm for its children.\n\n\nIf you only have one row, the [Row] widget is more appropriate. If you only\nhave one column, the [SliverList] or [Column] widgets will be more\nappropriate.\n\nRows size vertically based on their contents. To control the column widths,\nuse the [columnWidths] property.\n\nFor more details about the table layout algorithm, see [RenderTable].\nTo control the alignment of children, see [TableCell].", "detail": "", "kind": 7, "label": "Table" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that does not require mutable state.\n\nA stateless widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\n\nStateless widget are useful when the part of the user interface you are\ndescribing does not depend on anything other than the configuration\ninformation in the object itself and the [BuildContext] in which the widget\nis inflated. For compositions that can change dynamically, e.g. due to\nhaving an internal clock-driven state, or depending on some system state,\nconsider using [StatefulWidget].\n\n## Performance considerations\n\nThe [build] method of a stateless widget is typically only called in three\nsituations: the first time the widget is inserted in the tree, when the\nwidget's parent changes its configuration, and when an [InheritedWidget] it\ndepends on changes.\n\nIf a widget's parent will regularly change the widget's configuration, or if\nit depends on inherited widgets that frequently change, then it is important\nto optimize the performance of the [build] method to maintain a fluid\nrendering performance.\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateless widget:\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. For example, instead of an elaborate arrangement\n of [Row]s, [Column]s, [Padding]s, and [SizedBox]es to position a single\n child in a particularly fancy manner, consider using just an [Align] or a\n [CustomSingleChildLayout]. Instead of an intricate layering of multiple\n [Container]s and with [Decoration]s to draw just the right graphical\n effect, consider a single [CustomPaint] widget.\n\n * Use `const` widgets where possible, and provide a `const` constructor for\n the widget so that users of the widget can also do so.\n\n * Consider refactoring the stateless widget into a stateful widget so that\n it can use some of the techniques described at [StatefulWidget], such as\n caching common parts of subtrees and using [GlobalKey]s when changing the\n tree structure.\n\n * If the widget is likely to get rebuilt frequently due to the use of\n [InheritedWidget]s, consider refactoring the stateless widget into\n multiple widgets, with the parts of the tree that change being pushed to\n the leaves. For example instead of building a tree with four widgets, the\n inner-most widget depending on the [Theme], consider factoring out the\n part of the build function that builds the inner-most widget into its own\n widget, so that only the inner-most widget needs to be rebuilt when the\n theme changes.\n\n\nThe following is a skeleton of a stateless widget subclass called `GreenFrog`.\n\nNormally, widgets have more constructor arguments, each of which corresponds\nto a `final` property.\n\n```dart\nclass GreenFrog extends StatelessWidget {\n const GreenFrog({ Key key }) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFF2DBD3A));\n }\n}\n```\n\n\nThis next example shows the more generic widget `Frog` which can be given\na color and a child:\n\n```dart\nclass Frog extends StatelessWidget {\n const Frog({\n Key key,\n this.color = const Color(0xFF2DBD3A),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n @override\n Widget build(BuildContext context) {\n return Container(color: color, child: child);\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatelessWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteObserver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that notifies [RouteAware]s of changes to the\nstate of their [Route].\n\n[RouteObserver] informs subscribers whenever a route of type `R` is pushed\non top of their own route of type `R` or popped from it. This is for example\nuseful to keep track of page transitions, e.g. a `RouteObserver<PageRoute>`\nwill inform subscribed [RouteAware]s whenever the user navigates away from\nthe current page route to another page route.\n\nTo be informed about route changes of any type, consider instantiating a\n`RouteObserver<Route>`.\n\n## Type arguments\n\nWhen using more aggressive\n[lints](http://dart-lang.github.io/linter/lints/), in particular lints such\nas `always_specify_types`, the Dart analyzer will require that certain types\nbe given with their type arguments. Since the [Route] class and its\nsubclasses have a type argument, this includes the arguments passed to this\nclass. Consider using `dynamic` to specify the entire class of routes rather\nthan only specific subtypes. For example, to watch for all [PageRoute]\nvariants, the `RouteObserver<PageRoute<dynamic>>` type may be used.\n\n\nTo make a [StatefulWidget] aware of its current [Route] state, implement\n[RouteAware] in its [State] and subscribe it to a [RouteObserver]:\n\n```dart\n// Register the RouteObserver as a navigation observer.\nfinal RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();\nvoid main() {\n runApp(MaterialApp(\n home: Container(),\n navigatorObservers: [routeObserver],\n ));\n}\n\nclass RouteAwareWidget extends StatefulWidget {\n State<RouteAwareWidget> createState() => RouteAwareWidgetState();\n}\n\n// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.\nclass RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n routeObserver.subscribe(this, ModalRoute.of(context));\n }\n\n @override\n void dispose() {\n routeObserver.unsubscribe(this);\n super.dispose();\n }\n\n @override\n void didPush() {\n // Route was pushed onto navigator and is now topmost route.\n }\n\n @override\n void didPopNext() {\n // Covering route was popped off the navigator.\n }\n\n @override\n Widget build(BuildContext context) => Container();\n\n}\n```", "detail": "", "kind": 7, "label": "RouteObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Future].\n\nThe [future] must have been obtained earlier, e.g. during [State.initState],\n[State.didUpdateConfig], or [State.didChangeDependencies]. It must not be\ncreated during the [State.build] or [StatelessWidget.build] method call when\nconstructing the [FutureBuilder]. If the [future] is created at the same\ntime as the [FutureBuilder], then every time the [FutureBuilder]'s parent is\nrebuilt, the asynchronous task will be restarted.\n\nA general guideline is to assume that every `build` method could get called\nevery frame, and to treat omitted calls as an optimization.\n\n\n## Timing\n\nWidget rebuilding is scheduled by the completion of the future, using\n[State.setState], but is otherwise decoupled from the timing of the future.\nThe [builder] callback is called at the discretion of the Flutter pipeline, and\nwill thus receive a timing-dependent sub-sequence of the snapshots that\nrepresent the interaction with the future.\n\nA side-effect of this is that providing a new but already-completed future\nto a [FutureBuilder] will result in a single frame in the\n[ConnectionState.waiting] state. This is because there is no way to\nsynchronously determine that a [Future] has already completed.\n\n## Builder contract\n\nFor a future that completes successfully with data, assuming [initialData]\nis null, the [builder] will be called with either both or only the latter of\nthe following snapshots:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withData(ConnectionState.done, 'some data')`\n\nIf that same future instead completed with an error, the [builder] would be\ncalled with either both or only the latter of:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withError(ConnectionState.done, 'some error')`\n\nThe initial snapshot data can be controlled by specifying [initialData]. You\nwould use this facility to ensure that if the [builder] is invoked before\nthe future completes, the snapshot carries data of your choice rather than\nthe default null value.\n\nThe data and error fields of the snapshot change only as the connection\nstate field transitions from `waiting` to `done`, and they will be retained\nwhen changing the [FutureBuilder] configuration to another future. If the\nold future has already completed successfully with data as above, changing\nconfiguration to a new future results in snapshot pairs of the form:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.none, 'data of first future')`\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, 'data of second future')`\n\nIn general, the latter will be produced only when the new future is\nnon-null, and the former only when the old future is non-null.\n\nA [FutureBuilder] behaves identically to a [StreamBuilder] configured with\n`future?.asStream()`, except that snapshots with `ConnectionState.active`\nmay appear for the latter, depending on how the stream is implemented.\n\n\nThis sample shows a [FutureBuilder] configuring a text label to show the\nstate of an asynchronous calculation returning a string. Assume the\n`_calculation` field is set by pressing a button elsewhere in the UI.\n\n```dart\nFutureBuilder<String>(\n future: _calculation, // a previously-obtained Future<String> or null\n builder: (BuildContext context, AsyncSnapshot<String> snapshot) {\n switch (snapshot.connectionState) {\n case ConnectionState.none:\n return Text('Press button to start.');\n case ConnectionState.active:\n case ConnectionState.waiting:\n return Text('Awaiting result...');\n case ConnectionState.done:\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n return Text('Result: ${snapshot.data}');\n }\n return null; // unreachable\n },\n)\n```", "detail": "", "kind": 7, "label": "FutureBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossFadeState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Specifies which of two children to show. See [AnimatedCrossFade].\n\nThe child that is shown will fade in, while the other will fade out.", "detail": "", "kind": 13, "label": "CrossFadeState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalObjectKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nIf the object is not private, then it is possible that collisions will occur\nwhere independent widgets will reuse the same object as their\n[GlobalObjectKey] value in a different part of the tree, leading to a global\nkey conflict. To avoid this problem, create a private [GlobalObjectKey]\nsubclass, as in:\n\n```dart\nclass _MyKey extends GlobalObjectKey {\n const _MyKey(Object value) : super(value);\n}\n```\n\nSince the [runtimeType] of the key is part of its identity, this will\nprevent clashes with other [GlobalObjectKey]s even if they have the same\nvalue.\n\nAny [GlobalObjectKey] created for the same value will match.", "detail": "", "kind": 7, "label": "GlobalObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the default color, opacity, and size of icons in a widget subtree.\n\nThe icon theme is honored by [Icon] and [ImageIcon] widgets.", "detail": "", "kind": 7, "label": "IconTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyedSubtree", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that builds its child.\n\nUseful for attaching a key to an existing widget.", "detail": "", "kind": 7, "label": "KeyedSubtree" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of an [Align] that animates its [Align.alignment] property.\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "AlignTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls callbacks in response to pointer events.\n\nRather than listening for raw pointer events, consider listening for\nhigher-level gestures using [GestureDetector].\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nIf it has a child, this widget defers to the child for sizing behavior. If\nit does not have a child, it grows to fit the parent instead.\n\nThis example makes a [Container] react to being entered by a mouse\npointer, showing a count of the number of entries and exits.\n\n```dart\nimport 'package:flutter/gestures.dart';\n```\n\n```dart\nint _enterCounter = 0;\nint _exitCounter = 0;\ndouble x = 0.0;\ndouble y = 0.0;\n\nvoid _incrementCounter(PointerEnterEvent details) {\n setState(() {\n _enterCounter++;\n });\n}\n\nvoid _decrementCounter(PointerExitEvent details) {\n setState(() {\n _exitCounter++;\n });\n}\n\nvoid _updateLocation(PointerHoverEvent details) {\n setState(() {\n x = details.position.dx;\n y = details.position.dy;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Center(\n child: ConstrainedBox(\n constraints: new BoxConstraints.tight(Size(300.0, 200.0)),\n child: Listener(\n onPointerEnter: _incrementCounter,\n onPointerHover: _updateLocation,\n onPointerExit: _decrementCounter,\n child: Container(\n color: Colors.lightBlueAccent,\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pointed at this box this many times:'),\n Text(\n '$_enterCounter Entries\\n$_exitCounter Exits',\n style: Theme.of(context).textTheme.display1,\n ),\n Text(\n 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [MouseTracker] an object that tracks mouse locations in the [GestureBinding].", "detail": "", "kind": 7, "label": "Listener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherLayoutBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom layouts for\n[AnimatedSwitcher].\n\nThe builder should return a widget which contains the given children, laid\nout as desired. It must not return null. The builder should be able to\nhandle an empty list of `previousChildren`, or a null `currentChild`.\n\nThe `previousChildren` list is an unmodifiable list, sorted with the oldest\nat the beginning and the newest at the end. It does not include the\n`currentChild`.", "detail": "(Widget currentChild, List<Widget> previousChildren) → Widget", "kind": 7, "label": "AnimatedSwitcherLayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView].\n\n[ListWheelScrollView] lazily constructs its children during layout to avoid\ncreating more children than are visible through the [Viewport]. This\ndelegate is responsible for providing children to [ListWheelScrollView]\nduring that stage.\n\nSee also:\n\n * [ListWheelChildListDelegate], a delegate that supplies children using an\n explicit list.\n * [ListWheelChildLoopingListDelegate], a delegate that supplies infinite\n children by looping an explicit list.\n * [ListWheelChildBuilderDelegate], a delegate that supplies children using\n a builder callback.", "detail": "", "kind": 7, "label": "ListWheelChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositionedDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PositionedDirectional] which automatically transitions\nthe child's position over a given duration whenever the given position\nchanges.\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositionedDirectional] will trigger\na relayout as well. ([SlideTransition] is also text-direction-aware.)\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositioned], which specifies the widget's position visually (the\n same as this widget, but for animating [Positioned]).", "detail": "", "kind": 7, "label": "AnimatedPositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopScope", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Registers a callback to veto attempts by the user to dismiss the enclosing\n[ModalRoute].\n\nSee also:\n\n * [ModalRoute.addScopedWillPopCallback] and [ModalRoute.removeScopedWillPopCallback],\n which this widget uses to register and unregister [onWillPop].", "detail": "", "kind": 7, "label": "WillPopScope" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetWillAccept", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for determining whether the given data will be accepted by a [DragTarget].\n\nUsed by [DragTarget.onWillAccept].", "detail": "(T data) → bool", "kind": 7, "label": "DragTargetWillAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCell", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Table] is aligned.\n\nA [TableCell] widget must be a descendant of a [Table], and the path from\nthe [TableCell] widget to its enclosing [Table] must contain only\n[TableRow]s, [StatelessWidget]s, or [StatefulWidget]s (not\nother kinds of widgets, like [RenderObjectWidget]s).", "detail": "", "kind": 7, "label": "TableCell" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableTextState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [EditableText].", "detail": "", "kind": 7, "label": "EditableTextState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteAware", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for objects that are aware of their current [Route].\n\nThis is used with [RouteObserver] to make a widget aware of changes to the\n[Navigator]'s session history.", "detail": "", "kind": 7, "label": "RouteAware" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [LeafRenderObjectWidget] as its configuration.", "detail": "", "kind": 7, "label": "LeafRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorObserver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for observing the behavior of a [Navigator].", "detail": "", "kind": 7, "label": "NavigatorObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [State.setState] functions.", "detail": "(VoidCallback fn) → void", "kind": 7, "label": "StateSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list of widgets arranged linearly.\n\n[ListView] is the most commonly used scrolling widget. It displays its\nchildren one after another in the scroll direction. In the cross axis, the\nchildren are required to fill the [ListView].\n\nIf non-null, the [itemExtent] forces the children to have the given extent\nin the scroll direction. Specifying an [itemExtent] is more efficient than\nletting the children determine their own extent because the scrolling\nmachinery can make use of the foreknowledge of the children's extent to save\nwork, for example when the scroll position changes drastically.\n\nThere are four options for constructing a [ListView]:\n\n 1. The default constructor takes an explicit [List<Widget>] of children. This\n constructor is appropriate for list views with a small number of\n children because constructing the [List] requires doing work for every\n child that could possibly be displayed in the list view instead of just\n those children that are actually visible.\n\n 2. The [ListView.builder] constructor takes an [IndexedWidgetBuilder], which\n builds the children on demand. This constructor is appropriate for list views\n with a large (or infinite) number of children because the builder is called\n only for those children that are actually visible.\n\n 3. The [ListView.separated] constructor takes two [IndexedWidgetBuilder]s:\n `itemBuilder` builds child items on demand, and `separatorBuilder`\n similarly builds separator children which appear in between the child items.\n This constructor is appropriate for list views with a fixed number of children.\n\n 4. The [ListView.custom] constructor takes a [SliverChildDelegate], which provides\n the ability to customize additional aspects of the child model. For example,\n a [SliverChildDelegate] can control the algorithm used to estimate the\n size of children that are not actually visible.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nThis example uses the default constructor for [ListView] which takes an\nexplicit [List<Widget>] of children. This [ListView]'s children are made up\nof [Container]s with [Text].\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view.png)\n\n```dart\nListView(\n padding: const EdgeInsets.all(8.0),\n children: <Widget>[\n Container(\n height: 50,\n color: Colors.amber[600],\n child: const Center(child: Text('Entry A')),\n ),\n Container(\n height: 50,\n color: Colors.amber[500],\n child: const Center(child: Text('Entry B')),\n ),\n Container(\n height: 50,\n color: Colors.amber[100],\n child: const Center(child: Text('Entry C')),\n ),\n ],\n)\n```\n\nThis example mirrors the previous one, creating the same list using the\n[ListView.builder] constructor. Using the [IndexedWidgetBuilder], children\nare built lazily and can be infinite in number.\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_builder.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.builder(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n }\n);\n```\n\nThis example continues to build from our the previous ones, creating a\nsimilar list using [ListView.separated]. Here, a [Divider] is used as a\nseparator.\n\n![A ListView of 3 amber colored containers with sample text and a Divider\nbetween each of them.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_separated.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.separated(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n },\n separatorBuilder: (BuildContext context, int index) => const Divider(),\n);\n```\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as when using\nthe default constructor) or lazily provided ones (such as when using the\n[ListView.builder] constructor).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree,\nstates and render objects are destroyed. A new child at the same position\nin the list will be lazily recreated along with new elements, states and\nrender objects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the list child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the list child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child\n widget subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the list child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the list keeps the child's render\n object (and by extension, its associated elements and states) in a cache\n list instead of destroying them. When scrolled back into view, the render\n object is repainted as-is (if it wasn't marked dirty in the interim).\n\n This only works if [addAutomaticKeepAlives] and [addRepaintBoundaries]\n are false since those parameters cause the [ListView] to wrap each child\n widget subtree with other widgets.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default when\n [addAutomaticKeepAlives] is true). Instead of unconditionally caching the\n child element subtree when scrolling off-screen like [KeepAlive],\n [AutomaticKeepAlive] can let whether to cache the subtree be determined\n by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its list child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the list child element subtree will be destroyed\n when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive\n by using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\n## Transitioning to [CustomScrollView]\n\nA [ListView] is basically a [CustomScrollView] with a single [SliverList] in\nits [CustomScrollView.slivers] property.\n\nIf [ListView] is no longer sufficient, for example because the scroll view\nis to have both a list and a grid, or because the list is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[ListView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [ListView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing either a\n[SliverList] or a [SliverFixedExtentList]; the former if [itemExtent] on the\n[ListView] was null, and the latter if [itemExtent] was not null.\n\nThe [childrenDelegate] property on [ListView] corresponds to the\n[SliverList.delegate] (or [SliverFixedExtentList.delegate]) property. The\n[new ListView] constructor's `children` argument corresponds to the\n[childrenDelegate] being a [SliverChildListDelegate] with that same\nargument. The [new ListView.builder] constructor's `itemBuilder` and\n`childCount` arguments correspond to the [childrenDelegate] being a\n[SliverChildBuilderDelegate] with the matching arguments.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the list itself, and having\nthe [SliverList] instead be a child of the [SliverPadding].\n\n[CustomScrollView]s don't automatically avoid obstructions from [MediaQuery]\nlike [ListView]s do. To reproduce the behavior, wrap the slivers in\n[SliverSafeArea]s.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [ListView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nListView(\n shrinkWrap: true,\n padding: const EdgeInsets.all(20.0),\n children: <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n shrinkWrap: true,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverList(\n delegate: SliverChildListDelegate(\n <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n ),\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is scrollable, 2D array of widgets.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [ListBody], which arranges its children in a similar manner, but without\n scrolling.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ListView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable, 2D array of widgets.\n\nThe main axis direction of a grid is the direction in which it scrolls (the\n[scrollDirection]).\n\nThe most commonly used grid layouts are [GridView.count], which creates a\nlayout with a fixed number of tiles in the cross axis, and\n[GridView.extent], which creates a layout with tiles that have a maximum\ncross-axis extent. A custom [SliverGridDelegate] can produce an arbitrary 2D\narrangement of children, including arrangements that are unaligned or\noverlapping.\n\nTo create a grid with a large (or infinite) number of children, use the\n[GridView.builder] constructor with either a\n[SliverGridDelegateWithFixedCrossAxisCount] or a\n[SliverGridDelegateWithMaxCrossAxisExtent] for the [gridDelegate].\n\nTo use a custom [SliverChildDelegate], use [GridView.custom].\n\nTo create a linear array of children, use a [ListView].\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n## Transitioning to [CustomScrollView]\n\nA [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in\nits [CustomScrollView.slivers] property.\n\nIf [GridView] is no longer sufficient, for example because the scroll view\nis to have both a grid and a list, or because the grid is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[GridView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [GridView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing just a\n[SliverGrid].\n\nThe [childrenDelegate] property on [GridView] corresponds to the\n[SliverGrid.delegate] property, and the [gridDelegate] property on the\n[GridView] corresponds to the [SliverGrid.gridDelegate] property.\n\nThe [new GridView], [new GridView.count], and [new GridView.extent]\nconstructors' `children` arguments correspond to the [childrenDelegate]\nbeing a [SliverChildListDelegate] with that same argument. The [new\nGridView.builder] constructor's `itemBuilder` and `childCount` arguments\ncorrespond to the [childrenDelegate] being a [SliverChildBuilderDelegate]\nwith the matching arguments.\n\nThe [new GridView.count] and [new GridView.extent] constructors create\ncustom grid delegates, and have equivalently named constructors on\n[SliverGrid] to ease the transition: [new SliverGrid.count] and [new\nSliverGrid.extent] respectively.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the grid itself, and having\nthe [SliverGrid] instead be a child of the [SliverPadding].\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [GridView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nGridView.count(\n primary: false,\n padding: const EdgeInsets.all(20.0),\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n primary: false,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverGrid.count(\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ListView], which is scrollable, linear list of widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "GridView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Opacity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.\n\n\n\nThis example shows some [Text] when the `_visible` member field is true, and\nhides it when it is false:\n\n```dart\nOpacity(\n opacity: _visible ? 1.0 : 0.0,\n child: const Text('Now you see me, now you don\\'t!'),\n)\n```\n\nThis is more efficient than adding and removing the child widget from the\ntree on demand.\n\n## Performance considerations for opacity animation\n\nAnimating an [Opacity] widget directly causes the widget (and possibly its\nsubtree) to rebuild each frame, which is not very efficient. Consider using\nan [AnimatedOpacity] instead.\n\n## Transparent image\n\nIf only a single [Image] or [Color] needs to be composited with an opacity\nbetween 0.0 and 1.0, it's much faster to directly use them without [Opacity]\nwidgets.\n\nFor example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much\nfaster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`.\n\n\nThe following example draws an [Image] with 0.5 opacity without using\n[Opacity]:\n\n```dart\nImage.network(\n 'https://raw.githubusercontent.com/flutter/assets-for-api-docs/master/packages/diagrams/assets/blend_mode_destination.jpeg',\n color: Color.fromRGBO(255, 255, 255, 0.5),\n colorBlendMode: BlendMode.modulate\n)\n```\n\n\nDirectly drawing an [Image] or [Color] with opacity is faster than using\n[Opacity] on top of them because [Opacity] could apply the opacity to a\ngroup of widgets and therefore a costly offscreen buffer will be used.\nDrawing content into the offscreen buffer may also trigger render target\nswitches and such switching is particularly slow in older GPUs.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly, because it is either visible or hidden, rather than allowing\n fractional opacity values).\n * [ShaderMask], which can apply more elaborate effects to its child.\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [AnimatedOpacity], which uses an animation internally to efficiently\n animate opacity.\n * [FadeTransition], which uses a provided animation to efficiently animate\n opacity.\n * [Image], which can directly provide a partially transparent image with\n much less performance hit.", "detail": "", "kind": 7, "label": "Opacity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that merges the semantics of its descendants.\n\nCauses all the semantics of the subtree rooted at this node to be\nmerged into one node in the semantics tree. For example, if you\nhave a widget with a Text node next to a checkbox widget, this\ncould be used to merge the label from the Text node with the\n\"checked\" semantic state of the checkbox into a single node that\nhad both the label and the checked state. Otherwise, the label\nwould be presented as a separate feature than the checkbox, and\nthe user would not be able to be sure that they were related.\n\nBe aware that if two nodes in the subtree have conflicting\nsemantics, the result may be nonsensical. For example, a subtree\nwith a checked checkbox and an unchecked checkbox will be\npresented as checked. All the labels will be merged into a single\nstring (with newlines separating each label from the other). If\nmultiple nodes in the merged subtree can handle semantic gestures,\nthe first one in tree order will be the one to receive the\ncallbacks.", "detail": "", "kind": 7, "label": "MergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that automatically dispatches a [SizeChangedLayoutNotification]\nwhen the layout dimensions of its child change.\n\nThe notification is not sent for the initial layout (since the size doesn't\nchange in that case, it's just established).\n\nTo listen for the notification dispatched by this widget, use a\n[NotificationListener<SizeChangedLayoutNotification>].\n\nThe [Material] class listens for [LayoutChangedNotification]s, including\n[SizeChangedLayoutNotification]s, to repaint [InkResponse] and [InkWell] ink\neffects. When a widget is likely to change size, wrapping it in a\n[SizeChangedLayoutNotifier] will cause the ink effects to correctly repaint\nwhen the child changes size.\n\nSee also:\n\n * [Notification], the base class for notifications that bubble through the\n widget tree.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollHoldController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for holding a [Scrollable] stationary.\n\nAn object that implements this interface is returned by\n[ScrollPosition.hold]. It holds the scrollable stationary until an activity\nis started or the [cancel] method is called.", "detail": "", "kind": 7, "label": "ScrollHoldController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Notification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that can bubble up the widget tree.\n\nYou can determine the type of a notification using the `is` operator to\ncheck the [runtimeType] of the notification.\n\nTo listen for notifications in a subtree, use a [NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].", "detail": "", "kind": 7, "label": "Notification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleResolutionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeResolutionCallback].\n\nIt is recommended to provide a [LocaleListResolutionCallback] instead of a\n[LocaleResolutionCallback] when possible, as [LocaleResolutionCallback] only\nreceives a subset of the information provided in [LocaleListResolutionCallback].\n\nA [LocaleResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the default\nlocale for the device after [LocaleListResolutionCallback] fails or is not provided.\n\nThis callback is also used if the app is created with a specific locale using\nthe [new WidgetsApp] `locale` parameter.\n\nThe [locale] is either the value of [WidgetsApp.locale], or the device's default\nlocale when the app started, or the device locale the user selected after the app\nwas started. The default locale is the first locale in the list of preferred\nlocales. If [locale] is null, then Flutter has not yet received the locale\ninformation from the platform. The [supportedLocales] parameter is just the value of\n[WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleListResolutionCallback], which takes a list of preferred locales (instead of one locale).\n Resolutions by [LocaleListResolutionCallback] take precedence over [LocaleResolutionCallback].", "detail": "(Locale locale, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBindingObserver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for classes that register with the Widgets layer binding.\n\nWhen used as a mixin, provides no-op method implementations.\n\nSee [WidgetsBinding.addObserver] and [WidgetsBinding.removeObserver].\n\nThis class can be extended directly, to get default behaviors for all of the\nhandlers, or can used with the `implements` keyword, in which case all the\nhandlers must be implemented (and the analyzer will list those that have\nbeen omitted).\n\n\nThis [StatefulWidget] implements the parts of the [State] and\n[WidgetsBindingObserver] protocols necessary to react to application\nlifecycle messages. See [didChangeAppLifecycleState].\n\n```dart\nclass AppLifecycleReactor extends StatefulWidget {\n const AppLifecycleReactor({ Key key }) : super(key: key);\n\n @override\n _AppLifecycleReactorState createState() => _AppLifecycleReactorState();\n}\n\nclass _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {\n @override\n void initState() {\n super.initState();\n WidgetsBinding.instance.addObserver(this);\n }\n\n @override\n void dispose() {\n WidgetsBinding.instance.removeObserver(this);\n super.dispose();\n }\n\n AppLifecycleState _notification;\n\n @override\n void didChangeAppLifecycleState(AppLifecycleState state) {\n setState(() { _notification = state; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Text('Last notification: $_notification');\n }\n}\n```\n\nTo respond to other notifications, replace the [didChangeAppLifecycleState]\nmethod above with other methods from this class.", "detail": "", "kind": 7, "label": "WidgetsBindingObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirectionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to indicate that it has been dismissed in\nthe given `direction`.\n\nUsed by [Dismissible.onDismissed].", "detail": "(DismissDirection direction) → void", "kind": 7, "label": "DismissDirectionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract widget for building widgets that gradually change their\nvalues over a period of time.\n\nSubclasses' States must provide a way to visit the subclass's relevant\nfields to animate. [ImplicitlyAnimatedWidget] will then automatically\ninterpolate and animate those fields using the provided duration and\ncurve when those fields change.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that blocks interaction with previous routes.\n\n[ModalRoute]s cover the entire [Navigator]. They are not necessarily\n[opaque], however; for example, a pop-up menu uses a [ModalRoute] but only\nshows the menu in a small box overlapping the previous route.\n\nThe `T` type argument is the return value of the route. If there is no\nreturn value, consider using `void` as the return value.", "detail": "", "kind": 7, "label": "ModalRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BorderRadius]s.\n\nThis class specializes the interpolation of [Tween<BorderRadius>] to use\n[BorderRadius.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderRadiusTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that efficiently propagate information down the tree.\n\nTo obtain the nearest instance of a particular type of inherited widget from\na build context, use [BuildContext.inheritFromWidgetOfExactType].\n\nInherited widgets, when referenced in this way, will cause the consumer to\nrebuild when the inherited widget itself changes state.\n\n\n\nThe following is a skeleton of an inherited widget called `FrogColor`:\n\n```dart\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor) as FrogColor;\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n```\n\nThe convention is to provide a static method `of` on the [InheritedWidget]\nwhich does the call to [BuildContext.inheritFromWidgetOfExactType]. This\nallows the class to define its own fallback logic in case there isn't\na widget in scope. In the example above, the value returned will be\nnull in that case, but it could also have defaulted to a value.\n\nSometimes, the `of` method returns the data rather than the inherited\nwidget; for example, in this case it could have returned a [Color] instead\nof the `FrogColor` widget.\n\nOccasionally, the inherited widget is an implementation detail of another\nclass, and is therefore private. The `of` method in that case is typically\nput on the public class instead. For example, [Theme] is implemented as a\n[StatelessWidget] that builds a private inherited widget; [Theme.of] looks\nfor that inherited widget using [BuildContext.inheritFromWidgetOfExactType]\nand then returns the [ThemeData].\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressDraggable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child draggable starting from long press.", "detail": "", "kind": 7, "label": "LongPressDraggable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls how [Scrollable] widgets behave in a subtree.\n\nThe scroll configuration determines the [ScrollPhysics] and viewport\ndecorations used by descendants of [child].", "detail": "", "kind": 7, "label": "ScrollConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interactive button within either material's [BottomNavigationBar]\nor the iOS themed [CupertinoTabBar] with an icon and title.\n\nThis class is rarely used in isolation. It is typically embedded in one of\nthe bottom navigation widgets above.\n\nSee also:\n\n * [BottomNavigationBar]\n * <https://material.io/design/components/bottom-navigation.html>\n * [CupertinoTabBar]\n * <https://developer.apple.com/ios/human-interface-guidelines/bars/tab-bars>", "detail": "", "kind": 7, "label": "BottomNavigationBarItem" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that enables inspecting the child widget's structure.\n\nSelect a location on your device or emulator and view what widgets and\nrender object that best matches the location. An outline of the selected\nwidget and terse summary information is shown on device with detailed\ninformation is shown in the observatory or in IntelliJ when using the\nFlutter Plugin.\n\nThe inspector has a select mode and a view mode.\n\nIn the select mode, tapping the device selects the widget that best matches\nthe location of the touch and switches to view mode. Dragging a finger on\nthe device selects the widget under the drag location but does not switch\nmodes. Touching the very edge of the bounding box of a widget triggers\nselecting the widget even if another widget that also overlaps that\nlocation would otherwise have priority.\n\nIn the view mode, the previously selected widget is outlined, however,\ntouching the device has the same effect it would have if the inspector\nwasn't present. This allows interacting with the application and viewing how\nthe selected widget changes position. Clicking on the select icon in the\nbottom left corner of the application switches back to select mode.", "detail": "", "kind": 7, "label": "WidgetInspector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A graphical icon widget drawn with a glyph from a font described in\nan [IconData] such as material's predefined [IconData]s in [Icons].\n\nIcons are not interactive. For an interactive icon, consider material's\n[IconButton].\n\nThere must be an ambient [Directionality] widget when using [Icon].\nTypically this is introduced automatically by the [WidgetsApp] or\n[MaterialApp].\n\nThis widget assumes that the rendered icon is squared. Non-squared icons may\nrender incorrectly.\n\n\nThis example shows how to use [Icon] to create an addition icon, in the\ncolor pink, and 30 x 30 pixels in size.\n\n```dart\nIcon(\n Icons.add,\n color: Colors.pink,\n size: 30.0,\n)\n```\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [Icons], for the list of available icons for use with this class.\n * [IconTheme], which provides ambient configuration for icons.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "Icon" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidgetBaseState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations that need to rebuild their\nwidget tree as the animation runs.\n\nThis class calls [build] each frame that the animation tickets. For a\nvariant that does not rebuild each frame, consider subclassing\n[ImplicitlyAnimatedWidgetState] directly.\n\nSubclasses must implement the [forEachTween] method to allow\n[AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields\nand animate them.", "detail": "", "kind": 7, "label": "AnimatedWidgetBaseState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePopDisposition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates whether the current route should be popped.\n\nUsed as the return value for [Route.willPop].\n\nSee also:\n\n * [WillPopScope], a widget that hooks into the route's [Route.willPop]\n mechanism.", "detail": "", "kind": 13, "label": "RoutePopDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rounded rectangle.\n\nBy default, [ClipRRect] uses its own bounds as the base rectangle for the\nclip, but the size and location of the clip can be customized using a custom\n[clipper].\n\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Hero", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that marks its child as being a candidate for\n[hero animations](https://flutter.dev/docs/development/ui/animations/hero-animations).\n\nWhen a [PageRoute] is pushed or popped with the [Navigator], the entire\nscreen's content is replaced. An old route disappears and a new route\nappears. If there's a common visual feature on both routes then it can\nbe helpful for orienting the user for the feature to physically move from\none page to the other during the routes' transition. Such an animation\nis called a *hero animation*. The hero widgets \"fly\" in the Navigator's\noverlay during the transition and while they're in-flight they're, by\ndefault, not shown in their original locations in the old and new routes.\n\nTo label a widget as such a feature, wrap it in a [Hero] widget. When\nnavigation happens, the [Hero] widgets on each route are identified\nby the [HeroController]. For each pair of [Hero] widgets that have the\nsame tag, a hero animation is triggered.\n\nIf a [Hero] is already in flight when navigation occurs, its\nflight animation will be redirected to its new destination. The\nwidget shown in-flight during the transition is, by default, the\ndestination route's [Hero]'s child.\n\nFor a Hero animation to trigger, the Hero has to exist on the very first\nframe of the new page's animation.\n\nRoutes must not contain more than one [Hero] for each [tag].\n\n\n## Discussion\n\nHeroes and the [Navigator]'s [Overlay] [Stack] must be axis-aligned for\nall this to work. The top left and bottom right coordinates of each animated\nHero will be converted to global coordinates and then from there converted\nto that [Stack]'s coordinate space, and the entire Hero subtree will, for\nthe duration of the animation, be lifted out of its original place, and\npositioned on that stack. If the [Hero] isn't axis aligned, this is going to\nfail in a rather ugly fashion. Don't rotate your heroes!\n\nTo make the animations look good, it's critical that the widget tree for the\nhero in both locations be essentially identical. The widget of the *target*\nis, by default, used to do the transition: when going from route A to route\nB, route B's hero's widget is placed over route A's hero's widget. If a\n[flightShuttleBuilder] is supplied, its output widget is shown during the\nflight transition instead.\n\nBy default, both route A and route B's heroes are hidden while the\ntransitioning widget is animating in-flight above the 2 routes.\n[placeholderBuilder] can be used to show a custom widget in their place\ninstead once the transition has taken flight.\n\nDuring the transition, the transition widget is animated to route B's hero's\nposition, and then the widget is inserted into route B. When going back from\nB to A, route A's hero's widget is, by default, placed over where route B's\nhero's widget was, and then the animation goes the other way.\n\n### Nested Navigators\n\nIf either or both routes contain nested [Navigator]s, only [Hero]s\ncontained in the top-most routes (as defined by [Route.isCurrent]) *of those\nnested [Navigator]s* are considered for animation. Just like in the\nnon-nested case the top-most routes containing these [Hero]s in the nested\n[Navigator]s have to be [PageRoute]s.\n\n## Parts of a Hero Transition\n\n![Diagrams with parts of the Hero transition.](https://flutter.github.io/assets-for-api-docs/assets/interaction/heroes.png)", "detail": "", "kind": 7, "label": "Hero" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling container that animates items when they are inserted or removed.\n\nThis widget's [AnimatedListState] can be used to dynamically insert or remove\nitems. To refer to the [AnimatedListState] either provide a [GlobalKey] or\nuse the static [of] method from an item's input callback.\n\nThis widget is similar to one created by [ListView.builder].", "detail": "", "kind": 7, "label": "AnimatedList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Scrollable] to build the viewport through which the\nscrollable content is displayed.", "detail": "(BuildContext context, ViewportOffset position) → Widget", "kind": 7, "label": "ViewportBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraintsTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BoxConstraints].\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[BoxConstraints.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BoxConstraintsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses an [InheritedWidget] as its configuration.", "detail": "", "kind": 7, "label": "InheritedElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformFollower", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that follows a [CompositedTransformTarget].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\napplies a transformation that causes it to provide its child with a\ncoordinate space that matches that of the linked [CompositedTransformTarget]\nwidget, offset by [offset].\n\nThe [LayerLink] object used as the [link] must be the same object as that\nprovided to the matching [CompositedTransformTarget].\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nthis [CompositedTransformFollower].\n\nHit testing on descendants of this widget will only work if the target\nposition is within the box that this widget's parent considers to be\nhittable. If the parent covers the screen, this is trivially achievable, so\nthis widget is usually used as the root of an [OverlayEntry] in an app-wide\n[Overlay] (e.g. as created by the [MaterialApp] widget's [Navigator]).\n\nSee also:\n\n * [CompositedTransformTarget], the widget that this widget can target.\n * [FollowerLayer], the layer that implements this widget's logic.\n * [Transform], which applies an arbitrary transform to a child.", "detail": "", "kind": 7, "label": "CompositedTransformFollower" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableText", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A basic text input field.\n\nThis widget interacts with the [TextInput] service to let the user edit the\ntext it contains. It also provides scrolling, selection, and cursor\nmovement. This widget does not provide any focus management (e.g.,\ntap-to-focus).\n\n## Input Actions\n\nA [TextInputAction] can be provided to customize the appearance of the\naction button on the soft keyboard for Android and iOS. The default action\nis [TextInputAction.done].\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\nEditableText receives focus. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\n## Lifecycle\n\nUpon completion of editing, like pressing the \"done\" button on the keyboard,\ntwo actions take place:\n\n 1st: Editing is finalized. The default behavior of this step includes\n an invocation of [onChanged]. That default behavior can be overridden.\n See [onEditingComplete] for details.\n\n 2nd: [onSubmitted] is invoked with the user's input value.\n\n[onSubmitted] can be used to manually move focus to another input widget\nwhen a user finishes with the currently focused input widget.\n\nRather than using this widget directly, consider using [TextField], which\nis a full-featured, material-design text input field with placeholder text,\nlabels, and [Form] integration.\n\n## Gesture Events Handling\n\nThis widget provides rudimentary, platform-agnostic gesture handling for\nuser actions such as tapping, long-pressing and scrolling when\n[rendererIgnoresPointer] is false (false by default). To tightly conform\nto the platform behavior with respect to input gestures in text fields, use\n[TextField] or [CupertinoTextField]. For custom selection behavior, call\nmethods such as [RenderEditable.selectPosition],\n[RenderEditable.selectWord], etc. programmatically.\n\nSee also:\n\n * [TextField], which is a full-featured, material-design text input field\n with placeholder text, labels, and [Form] integration.", "detail": "", "kind": 7, "label": "EditableText" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an editable text field.\n\nWhenever the user modifies a text field with an associated\n[TextEditingController], the text field updates [value] and the controller\nnotifies its listeners. Listeners can then read the [text] and [selection]\nproperties to learn what the user has typed or how the selection has been\nupdated.\n\nSimilarly, if you modify the [text] or [selection] properties, the text\nfield will be notified and will update itself appropriately.\n\nA [TextEditingController] can also be used to provide an initial value for a\ntext field. If you build a text field with a controller that already has\n[text], the text field will use that text as its initial value.\n\nThe [text] or [selection] properties can be set from within a listener\nadded to this controller. If both properties need to be changed then the\ncontroller's [value] should be set instead.\n\nThis example creates a [TextField] with a [TextEditingController] whose\nchange listener forces the entered text to be lower case and keeps the\ncursor at the end of the input.\n\n```dart\nfinal _controller = TextEditingController();\n\nvoid initState() {\n _controller.addListener(() {\n final text = _controller.text.toLowerCase();\n _controller.value = _controller.value.copyWith(\n text: text,\n selection: TextSelection(baseOffset: text.length, extentOffset: text.length),\n composing: TextRange.empty,\n );\n });\n super.initState();\n}\n\nvoid dispose() {\n _controller.dispose();\n super.dispose();\n}\n\nWidget build(BuildContext context) {\n return Scaffold(\n body: Container(\n alignment: Alignment.center,\n padding: const EdgeInsets.all(6),\n child: TextFormField(\n controller: _controller,\n decoration: InputDecoration(border: OutlineInputBorder()),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [TextField], which is a Material Design text field that can be controlled\n with a [TextEditingController].\n * [EditableText], which is a raw region of editable text that can be\n controlled with a [TextEditingController].", "detail": "", "kind": 7, "label": "TextEditingController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsApp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience class that wraps a number of widgets that are commonly\nrequired for an application.\n\nOne of the primary roles that [WidgetsApp] provides is binding the system\nback button to popping the [Navigator] or quitting the application.\n\nSee also: [CheckedModeBanner], [DefaultTextStyle], [MediaQuery],\n[Localizations], [Title], [Navigator], [Overlay], [SemanticsDebugger] (the\nwidgets wrapped by this one).", "detail": "", "kind": 7, "label": "WidgetsApp" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for scroll views whose items have the same size.\n\nSimilar to a standard [ScrollController] but with the added convenience\nmechanisms to read and go to item indices rather than a raw pixel scroll\noffset.\n\nSee also:\n\n * [ListWheelScrollView], a scrollable view widget with fixed size items\n that this widget controls.\n * [FixedExtentMetrics], the `metrics` property exposed by\n [ScrollNotification] from [ListWheelScrollView] which can be used\n to listen to the current item index on a push basis rather than polling\n the [FixedExtentScrollController].", "detail": "", "kind": 7, "label": "FixedExtentScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays an image.\n\nSeveral constructors are provided for the various ways that an image can be\nspecified:\n\n * [new Image], for obtaining an image from an [ImageProvider].\n * [new Image.asset], for obtaining an image from an [AssetBundle]\n using a key.\n * [new Image.network], for obtaining an image from a URL.\n * [new Image.file], for obtaining an image from a [File].\n * [new Image.memory], for obtaining an image from a [Uint8List].\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\nTo automatically perform pixel-density-aware asset resolution, specify the\nimage using an [AssetImage] and make sure that a [MaterialApp], [WidgetsApp],\nor [MediaQuery] widget exists above the [Image] widget in the widget tree.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nSee also:\n\n * [Icon], which shows an image from a font.\n * [new Ink.image], which is the preferred way to show an image in a\n material application (especially if the image is in a [Material] and will\n have an [InkWell] on top of it).\n * [Image](https://api.flutter.dev/flutter/dart-ui/Image-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspectorService", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Service used by GUI tools to interact with the [WidgetInspector].\n\nCalls to this object are typically made from GUI tools such as the [Flutter\nIntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nusing the [Dart VM Service protocol](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md).\nThis class uses its own object id and manages object lifecycles itself\ninstead of depending on the [object ids](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#getobject)\nspecified by the VM Service Protocol because the VM Service Protocol ids\nexpire unpredictably. Object references are tracked in groups so that tools\nthat clients can use dereference all objects in a group with a single\noperation making it easier to avoid memory leaks.\n\nAll methods in this class are appropriate to invoke from debugging tools\nusing the Observatory service protocol to evaluate Dart expressions of the\nform `WidgetInspectorService.instance.methodName(arg1, arg2, ...)`. If you\nmake changes to any instance method of this class you need to verify that\nthe [Flutter IntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nwidget inspector support still works with the changes.\n\nAll methods returning String values return JSON.", "detail": "", "kind": 7, "label": "WidgetInspectorService" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorber", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[SliverOverlapInjector].\n\nSee also:\n\n * [NestedScrollView], whose documentation has sample code showing how to\n use this widget.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned without\ncommitting to a specific [TextDirection].\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nA [PositionedDirectional] widget must be a descendant of a [Stack], and the\npath from the [PositionedDirectional] widget to its enclosing [Stack] must\ncontain only [StatelessWidget]s or [StatefulWidget]s (not other kinds of\nwidgets, like [RenderObjectWidget]s).\n\nIf a widget is wrapped in a [PositionedDirectional], then it is a\n_positioned_ widget in its [Stack]. If the [top] property is non-null, the\ntop edge of this child/ will be positioned [top] layout units from the top\nof the stack widget. The [start], [bottom], and [end] properties work\nanalogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [start] and [end] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nSee also:\n\n * [Positioned], which specifies the widget's position visually.\n * [Positioned.directional], which also specifies the widget's horizontal\n position using [start] and [end] but has an explicit [TextDirection].", "detail": "", "kind": 7, "label": "PositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsDebugger", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that visualizes the semantics for the child.\n\nThis widget is useful for understand how an app presents itself to\naccessibility technology.", "detail": "", "kind": 7, "label": "SemanticsDebugger" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPadding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that applies padding on each side of another sliver.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverPadding]\nis a basic sliver that insets another sliver by applying padding on each\nside.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a [SliverPersistentHeader] with\n`pinned:true` will cause the app bar to overlap earlier slivers (contrary to\nthe normal behavior of pinned app bars), and while the app bar is pinned,\nthe padding will scroll away.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.", "detail": "", "kind": 7, "label": "SliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [SingleChildRenderObjectWidget] as its configuration.\n\nThe child is optional.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [RenderObjectWithChildMixin] mixin. Such widgets are\nexpected to inherit from [SingleChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "SingleChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQueryData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Information about a piece of media (e.g., a window).\n\nFor example, the [MediaQueryData.size] property contains the width and\nheight of the current window.\n\nTo obtain the current [MediaQueryData] for a given [BuildContext], use the\n[MediaQuery.of] function. For example, to obtain the size of the current\nwindow, use `MediaQuery.of(context).size`.\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nMediaQueryData includes two [EdgeInsets] values:\n[padding] and [viewInsets]. These\nvalues reflect the configuration of the device and are used by\nmany top level widgets, like [SafeArea] and the Cupertino and\nMaterial scaffold widgets. The padding value defines areas that\nmight not be completely visible, like the display \"notch\" on the\niPhone X. The viewInsets value defines areas that aren't visible at\nall, typically because they're obscured by the device's keyboard.\n\nThe viewInsets and padding values are independent, they're both\nmeasured from the edges of the MediaQuery widget's bounds. The\nbounds of the top level MediaQuery created by [WidgetsApp] are the\nsame as the window that contains the app.\n\nWidgets whose layouts consume space defined by [viewInsets] or\n[padding] should enclose their children in secondary MediaQuery\nwidgets that reduce those properties by the same amount.\nThe [removePadding] and [removeInsets] methods are useful for this.", "detail": "", "kind": 7, "label": "MediaQueryData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalBarrier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nSee also:\n\n * [ModalRoute], which indirectly uses this widget.\n * [AnimatedModalBarrier], which is similar but takes an animated [color]\n instead of a single color value.", "detail": "", "kind": 7, "label": "ModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that builds a widget given a child.\n\nThe child should typically be part of the returned widget tree.\n\nUsed by [AnimatedBuilder.builder], as well as [WidgetsApp.builder] and\n[MaterialApp.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context, Widget child) → Widget", "kind": 7, "label": "TransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyleTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DefaultTextStyle] that animates the different properties\nof its [TextStyle].\n\nSee also:\n\n * [DefaultTextStyle], which also defines a [TextStyle] for its descendants\n but is not animated.", "detail": "", "kind": 7, "label": "DefaultTextStyleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderNestedScrollViewViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [RenderViewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "RenderNestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have no children.", "detail": "", "kind": 7, "label": "LeafRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Viewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside.\n\n[Viewport] is the visual workhorse of the scrolling machinery. It displays a\nsubset of its children according to its own dimensions and the given\n[offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[Viewport] hosts a bidirectional list of slivers, anchored on a [center]\nsliver, which is placed at the zero scroll offset. The center widget is\ndisplayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[Viewport] cannot contain box children directly. Instead, use a\n[SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [Viewport] into widgets that are easier to use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [ShrinkWrappingViewport], a variant of [Viewport] that shrink-wraps its\n contents along the main axis.", "detail": "", "kind": 7, "label": "Viewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a shape.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\nFor shapes that cannot be expressed as a rectangle with rounded corners use\n[PhysicalShape].\n\nSee also:\n\n * [DecoratedBox], which can apply more arbitrary shadow effects.\n * [ClipRect], which applies a clip to its child.", "detail": "", "kind": 7, "label": "PhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQuery", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a subtree in which media queries resolve to the given data.\n\nFor example, to learn the size of the current media (e.g., the window\ncontaining your app), you can read the [MediaQueryData.size] property from\nthe [MediaQueryData] returned by [MediaQuery.of]:\n`MediaQuery.of(context).size`.\n\nQuerying the current media using [MediaQuery.of] will cause your widget to\nrebuild automatically whenever the [MediaQueryData] changes (e.g., if the\nuser rotates their device).\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nSee also:\n\n * [WidgetsApp] and [MaterialApp], which introduce a [MediaQuery] and keep\n it up to date with the current screen metrics as they change.\n * [MediaQueryData], the data structure that represents the metrics.", "detail": "", "kind": 7, "label": "MediaQuery" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionGestureDetector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A gesture detector to respond to non-exclusive event chains for a text field.\n\nAn ordinary [GestureDetector] configured to handle events like tap and\ndouble tap will only recognize one or the other. This widget detects both:\nfirst the tap and then, if another tap down occurs within a time limit, the\ndouble tap.\n\nSee also:\n\n * [TextField], a Material text field which uses this gesture detector.\n * [CupertinoTextField], a Cupertino text field which uses this gesture\n detector.", "detail": "", "kind": 7, "label": "TextSelectionGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Baseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its child according to the child's baseline.\n\nThis widget shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child. If [baseline] is less than the distance from\nthe top of the child to the baseline of the child, then the child\nis top-aligned instead.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [Center], a widget that centers its child within itself.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Baseline" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LabeledGlobalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key with a debugging label.\n\nThe debug label is useful for documentation and for debugging. The label\ndoes not affect the key's identity.", "detail": "", "kind": 7, "label": "LabeledGlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of an icon fulfilled by a font glyph.\n\nSee [Icons] for a number of predefined icons available for material\ndesign applications.", "detail": "", "kind": 7, "label": "IconData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches iOS.\n\nSee also:\n\n * [ClampingScrollSimulation], which implements Android scroll physics.", "detail": "", "kind": 7, "label": "BouncingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillRemaining", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[SliverFillRemaining] sizes its child to fill the viewport in the cross axis\nand to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPositionWithSingleContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll position that manages scroll activities for a single\n[ScrollContext].\n\nThis class is a concrete subclass of [ScrollPosition] logic that handles a\nsingle [ScrollContext], such as a [Scrollable]. An instance of this class\nmanages [ScrollActivity] instances, which change what content is visible in\nthe [Scrollable]'s [Viewport].\n\nSee also:\n\n * [ScrollPosition], which defines the underlying model for a position\n within a [Scrollable] but is agnostic as to how that position is\n changed.\n * [ScrollView] and its subclasses such as [ListView], which use\n [ScrollPositionWithSingleContext] to manage their scroll position.\n * [ScrollController], which can manipulate one or more [ScrollPosition]s,\n and which uses [ScrollPositionWithSingleContext] as its default class for\n scroll positions.", "detail": "", "kind": 7, "label": "ScrollPositionWithSingleContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlowingOverscrollIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A visual indication that a scroll view has overscrolled.\n\nA [GlowingOverscrollIndicator] listens for [ScrollNotification]s in order\nto control the overscroll indication. These notifications are typically\ngenerated by a [ScrollView], such as a [ListView] or a [GridView].\n\n[GlowingOverscrollIndicator] generates [OverscrollIndicatorNotification]\nbefore showing an overscroll indication. To prevent the indicator from\nshowing the indication, call [OverscrollIndicatorNotification.disallowGlow]\non the notification.\n\nCreated automatically by [ScrollBehavior.buildViewportChrome] on platforms\n(e.g., Android) that commonly use this type of overscroll indication.\n\nIn a [MaterialApp], the edge glow color is the [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "GlowingOverscrollIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverflowBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nSee also:\n\n * [RenderConstrainedOverflowBox] for details about how [OverflowBox] is\n rendered.\n * [SizedOverflowBox], a widget that is a specific size but passes its\n original constraints through to its child, which may then overflow.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], a box with a specified size.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "OverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableCanceledCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] is dropped without being accepted by a [DragTarget].\n\nUsed by [Draggable.onDraggableCanceled].", "detail": "(Velocity velocity, Offset offset) → void", "kind": 7, "label": "DraggableCanceledCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShrinkWrappingViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside and shrink wraps its children in the\nmain axis.\n\n[ShrinkWrappingViewport] displays a subset of its children according to its\nown dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[ShrinkWrappingViewport] differs from [Viewport] in that [Viewport] expands\nto fill the main axis whereas [ShrinkWrappingViewport] sizes itself to match\nits children in the main axis. This shrink wrapping behavior is expensive\nbecause the children, and hence the viewport, could potentially change size\nwhenever the [offset] changes (e.g., because of a collapsing header).\n\n[ShrinkWrappingViewport] cannot contain box children directly. Instead, use\na [SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [ShrinkWrappingViewport] into widgets that are easier to\n use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [Viewport], a viewport that does not shrink-wrap its contents.", "detail": "", "kind": 7, "label": "ShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragSelectionUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that's dragging to select text has moved again.\n\nThe first argument [startDetails] contains the details of the event that\ninitiated the dragging.\n\nThe second argument [updateDetails] contains the details of the current\npointer movement. It's the same as the one passed to [DragGestureRecognizer.onUpdate].\n\nThis signature is different from [GestureDragUpdateCallback] to make it\neasier for various text fields to use [TextSelectionGestureDetector] without\nhaving to store the start position.", "detail": "(DragStartDetails startDetails, DragUpdateDetails updateDetails) → void", "kind": 7, "label": "DragSelectionUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverWithKeepAliveWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have [KeepAlive] children.", "detail": "", "kind": 7, "label": "SliverWithKeepAliveWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrackingScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollController] whose [initialScrollOffset] tracks its most recently\nupdated [ScrollPosition].\n\nThis class can be used to synchronize the scroll offset of two or more\nlazily created scroll views that share a single [TrackingScrollController].\nIt tracks the most recently updated scroll position and reports it as its\n`initialScrollOffset`.\n\n\nIn this example each [PageView] page contains a [ListView] and all three\n[ListView]'s share a [TrackingScrollController]. The scroll offsets of all\nthree list views will track each other, to the extent that's possible given\nthe different list lengths.\n\n```dart\nPageView(\n children: <Widget>[\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),\n ),\n ],\n)\n```\n\nIn this example the `_trackingController` would have been created by the\nstateful widget that built the widget tree.", "detail": "", "kind": 7, "label": "TrackingScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for stateful widgets that have exactly one inflated instance in\nthe tree.\n\nSuch widgets must be given a [GlobalKey]. This key can be generated by the\nsubclass from its [Type] object, e.g. by calling `super(key: new\nGlobalObjectKey(MyWidget))` where `MyWidget` is the name of the subclass.\n\nSince only one instance can be inflated at a time, there is only ever one\ncorresponding [State] object. That object is exposed, for convenience, via\nthe [currentState] property.\n\nWhen subclassing [UniqueWidget], provide the corresponding [State] subclass\nas the type argument.", "detail": "", "kind": 7, "label": "UniqueWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\nScrollable widgets consist of three pieces:\n\n 1. A [Scrollable] widget, which listens for various user gestures and\n implements the interaction design for scrolling.\n 2. A viewport widget, such as [Viewport] or [ShrinkWrappingViewport], which\n implements the visual design for scrolling by displaying only a portion\n of the widgets inside the scroll view.\n 3. One or more slivers, which are widgets that can be composed to created\n various scrolling effects, such as lists, grids, and expanding headers.\n\n[ScrollView] helps orchestrate these pieces by creating the [Scrollable] and\nthe viewport and deferring to its subclass to create the slivers.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatusTransitionWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given animation changes status.", "detail": "", "kind": 7, "label": "StatusTransitionWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutChangedNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the layout of one of the descendants of the object receiving\nthis notification has changed in some way, and that therefore any\nassumptions about that layout are no longer valid.\n\nUseful if, for instance, you're trying to align multiple descendants.\n\nTo listen for notifications in a subtree, use a\n[NotificationListener<LayoutChangedNotification>].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].\n\nIn the widgets library, only the [SizeChangedLayoutNotifier] class and\n[Scrollable] classes dispatch this notification (specifically, they dispatch\n[SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).\nTransitions, in particular, do not. Changing one's layout in one's build\nfunction does not cause this notification to be dispatched automatically. If\nan ancestor expects to be notified for any layout change, make sure you\neither only use widgets that never change layout, or that notify their\nancestors when appropriate, or alternatively, dispatch the notifications\nyourself when appropriate.\n\nAlso, since this notification is sent when the layout is changed, it is only\nuseful for paint effects that depend on the layout. If you were to use this\nnotification to change the build, for instance, you would always be one\nframe behind, which would look really ugly and laggy.", "detail": "", "kind": 7, "label": "LayoutChangedNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedModalBarrier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself,\nand can be configured with an animated color value.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nThis widget is similar to [ModalBarrier] except that it takes an animated\n[color] instead of a single color.\n\nSee also:\n\n * [ModalRoute], which uses this widget.", "detail": "", "kind": 7, "label": "AnimatedModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that creates custom scroll effects using slivers.\n\nA [CustomScrollView] lets you supply [slivers] directly to create various\nscrolling effects, such as lists, grids, and expanding headers. For example,\nto create a scroll view that contains an expanding app bar followed by a\nlist and a grid, use a list of three slivers: [SliverAppBar], [SliverList],\nand [SliverGrid].\n\n[Widget]s in these [slivers] must produce [RenderSliver] objects.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n\nThis sample code shows a scroll view that contains a flexible pinned app\nbar, a grid, and an infinite list.\n\n```dart\nCustomScrollView(\n slivers: <Widget>[\n const SliverAppBar(\n pinned: true,\n expandedHeight: 250.0,\n flexibleSpace: FlexibleSpaceBar(\n title: Text('Demo'),\n ),\n ),\n SliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n ),\n SliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n ),\n ],\n)\n```\n\n## Accessibility\n\nA [CustomScrollView] can allow Talkback/VoiceOver to make announcements\nto the user when the scroll state changes. For example, on Android an\nannouncement might be read as \"showing items 1 to 10 of 23\". To produce\nthis announcement, the scroll view needs three pieces of information:\n\n * The first visible child index.\n * The total number of children.\n * The total number of visible children.\n\nThe last value can be computed exactly by the framework, however the first\ntwo must be provided. Most of the higher-level scrollable widgets provide\nthis information automatically. For example, [ListView] provides each child\nwidget with a semantic index automatically and sets the semantic child\ncount to the length of the list.\n\nTo determine visible indexes, the scroll view needs a way to associate the\ngenerated semantics of each scrollable item with a semantic index. This can\nbe done by wrapping the child widgets in an [IndexedSemantics].\n\nThis semantic index is not necessarily the same as the index of the widget in\nthe scrollable, because some widgets may not contribute semantic\ninformation. Consider a [new ListView.separated()]: every other widget is a\ndivider with no semantic information. In this case, only odd numbered\nwidgets have a semantic index (equal to the index ~/ 2). Furthermore, the\ntotal number of children in this example would be half the number of\nwidgets. (The [new ListView.separated()] constructor handles this\nautomatically; this is only used here as an example.)\n\nThe total number of visible children can be provided by the constructor\nparameter `semanticChildCount`. This should always be the same as the\nnumber of widgets wrapped in [IndexedSemantics].\n\nSee also:\n\n * [SliverList], which is a sliver that displays linear list of children.\n * [SliverFixedExtentList], which is a more efficient sliver that displays\n linear list of children that have the same extent along the scroll axis.\n * [SliverGrid], which is a sliver that displays a 2D array of children.\n * [SliverPadding], which is a sliver that adds blank space around another\n sliver.\n * [SliverAppBar], which is a sliver that displays a header that can expand\n and float as the scroll view scrolls.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].\n * [IndexedSemantics], which allows annotating child lists with an index\n for scroll announcements.", "detail": "", "kind": 7, "label": "CustomScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's size.\n\nSimilar to the [Builder] widget except that the framework calls the [builder]\nfunction at layout time and provides the parent widget's constraints. This\nis useful when the parent constrains the child's size and doesn't depend on\nthe child's intrinsic size. The [LayoutBuilder]'s final size will match its\nchild's size.\n\n\nIf the child should be smaller than the parent, consider wrapping the child\nin an [Align] widget. If the child might want to be bigger, consider\nwrapping it in a [SingleChildScrollView].\n\nSee also:\n\n * [Builder], which calls a `builder` function at build time.\n * [StatefulBuilder], which passes its `builder` function a `setState` callback.\n * [CustomSingleChildLayout], which positions its child during layout.", "detail": "", "kind": 7, "label": "LayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPaint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [CustomPaint] first asks its [painter] to paint on the\ncurrent canvas, then it paints its child, and then, after painting its\nchild, it asks its [foregroundPainter] to paint. The coordinate system of the\ncanvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing [CustomPainter].\n\n\nBecause custom paint calls its painters during paint, you cannot call\n`setState` or `markNeedsLayout` during the callback (the layout for this\nframe has already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [size], which defaults to\n[Size.zero]. [size] must not be null.\n\n[isComplex] and [willChange] are hints to the compositor's raster cache\nand must not be null.\n\n\nThis example shows how the sample custom painter shown at [CustomPainter]\ncould be used in a [CustomPaint] widget to display a background to some\ntext.\n\n```dart\nCustomPaint(\n painter: Sky(),\n child: Center(\n child: Text(\n 'Once upon a time...',\n style: const TextStyle(\n fontSize: 40.0,\n fontWeight: FontWeight.w900,\n color: Color(0xFFFFFFFF),\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomPainter], the class to extend when creating custom painters.\n * [Canvas], the class that a custom painter uses to paint.", "detail": "", "kind": 7, "label": "CustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays a [dart:ui.Image] directly.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nThis widget is rarely used directly. Instead, consider using [Image].", "detail": "", "kind": 7, "label": "RawImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicHeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Element that supports building children lazily for [ListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotatedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rotates its child by a integral number of quarter turns.\n\nUnlike [Transform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.\n\n\nThis snippet rotates the child (some [Text]) so that it renders from bottom\nto top, like an axis label on a graph:\n\n```dart\nRotatedBox(\n quarterTurns: 3,\n child: const Text('Hello World!'),\n)\n```\n\nSee also:\n\n * [Transform], which is a paint effect that allows you to apply an\n arbitrary transform to a child.\n * [new Transform.rotate], which applies a rotation paint effect.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "RotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapInjector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [RenderSliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [RenderViewport] (probably a [RenderNestedScrollViewViewport]), so\nthat it will always be laid out before the [RenderSliverOverlapInjector]\nduring a particular frame.", "detail": "", "kind": 7, "label": "RenderSliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSingleChildLayout", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.\n\nSee also:\n\n * [SingleChildLayoutDelegate], which controls the layout of the child.\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [FractionallySizedBox], which sizes its child based on a fraction of its own\n size and positions the child according to an [Alignment] value.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.", "detail": "", "kind": 7, "label": "CustomSingleChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the subtree through which this notification bubbles must be\nkept alive even if it would normally be discarded as an optimization.\n\nFor example, a focused text field might fire this notification to indicate\nthat it should not be disposed even if the user scrolls the field off\nscreen.\n\nEach [KeepAliveNotification] is configured with a [handle] that consists of\na [Listenable] that is triggered when the subtree no longer needs to be kept\nalive.\n\nThe [handle] should be triggered any time the sending widget is removed from\nthe tree (in [State.deactivate]). If the widget is then rebuilt and still\nneeds to be kept alive, it should immediately send a new notification\n(possible with the very same [Listenable]) during build.\n\nThis notification is listened to by the [AutomaticKeepAlive] widget, which\nis added to the tree automatically by [SliverList] (and [ListView]) and\n[SliverGrid] (and [GridView]) widgets.\n\nFailure to trigger the [handle] in the manner described above will likely\ncause the [AutomaticKeepAlive] to lose track of whether the widget should be\nkept alive or not, leading to memory leaks or lost data. For example, if the\nwidget that requested keep-alive is removed from the subtree but doesn't\ntrigger its [Listenable] on the way out, then the subtree will continue to\nbe kept alive until the list itself is disposed. Similarly, if the\n[Listenable] is triggered while the widget needs to be kept alive, but a new\n[KeepAliveNotification] is not immediately sent, then the widget risks being\ngarbage collected while it wants to be kept alive.\n\nIt is an error to use the same [handle] in two [KeepAliveNotification]s\nwithin the same [AutomaticKeepAlive] without triggering that [handle] before\nthe second notification is sent.\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses\n[KeepAliveNotification] internally.", "detail": "", "kind": 7, "label": "KeepAliveNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a route for the given route settings.\n\nUsed by [Navigator.onGenerateRoute] and [Navigator.onUnknownRoute].", "detail": "(RouteSettings settings) → Route<dynamic>", "kind": 7, "label": "RouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPath", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a path.\n\nCalls a callback on a delegate whenever the widget is to be\npainted. The callback returns a path and the widget prevents the\nchild from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized widgets:\n\n * To clip to a rectangle, consider [ClipRect].\n * To clip to an oval or circle, consider [ClipOval].\n * To clip to a rounded rectangle, consider [ClipRRect].\n\nTo clip to a particular [ShapeBorder], consider using either the\n[ClipPath.shape] static method or the [ShapeBorderClipper] custom clipper\nclass.", "detail": "", "kind": 7, "label": "ClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElementVisitor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback to [BuildContext.visitChildElements].\n\nThe argument is the child being visited.\n\nIt is safe to call `element.visitChildElements` reentrantly within\nthis callback.", "detail": "(Element element) → void", "kind": 7, "label": "ElementVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormField", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single form field.\n\nThis widget maintains the current state of the form field, so that updates\nand validation errors are visually reflected in the UI.\n\nWhen used inside a [Form], you can use methods on [FormState] to query or\nmanipulate the form data as a whole. For example, calling [FormState.save]\nwill invoke each [FormField]'s [onSaved] callback in turn.\n\nUse a [GlobalKey] with [FormField] if you want to retrieve its current\nstate, for example if you want one form field to depend on another.\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nSee also:\n\n * [Form], which is the widget that aggregates the form fields.\n * [TextField], which is a commonly used form field for entering text.", "detail": "", "kind": 7, "label": "FormField" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the widgets layer and the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListenerCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [Notification] listeners.\n\nReturn true to cancel the notification bubbling. Return false to allow the\nnotification to continue to be dispatched to further ancestors.\n\nUsed by [NotificationListener.onNotification].", "detail": "(T notification) → bool", "kind": 7, "label": "NotificationListenerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidgetState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations.\n\n[ImplicitlyAnimatedWidgetState] requires that subclasses respond to the\nanimation, themselves. If you would like `setState()` to be called\nautomatically as the animation changes, use [AnimatedWidgetBaseState].\n\nSubclasses must implement the [forEachTween] method to allow\n[ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's\nfields and animate them.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidgetState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteTransitionsBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's transitions.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildTransitions] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) → Widget", "kind": 7, "label": "RouteTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserScrollNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that the user has changed the direction in which they are\nscrolling.\n\nSee also:\n\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "UserScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusManager", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the focus tree.\n\nThe focus tree keeps track of which [FocusNode] is the user's current\nkeyboard focus. The widget that owns the [FocusNode] often listens for\nkeyboard events.\n\nThe focus manager is responsible for holding the [FocusScopeNode] that is\nthe root of the focus tree and tracking which [FocusNode] has the overall\nfocus.\n\nThe [FocusManager] is held by the [WidgetsBinding] as\n[WidgetsBinding.focusManager]. The [FocusManager] is rarely accessed\ndirectly. Instead, to find the [FocusScopeNode] for a given [BuildContext],\nuse [FocusScope.of].\n\nThe [FocusManager] knows nothing about [FocusNode]s other than the one that\nis currently focused. If a [FocusScopeNode] is removed, then the\n[FocusManager] will attempt to focus the next [FocusScopeNode] in the focus\ntree that it maintains, but if the current focus in that [FocusScopeNode] is\nnull, it will stop there, and no [FocusNode] will have focus.\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusManager" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for [PageView].\n\nA page controller lets you manipulate which page is visible in a [PageView].\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nSee also:\n\n * [PageView], which is the widget this object controls.", "detail": "", "kind": 7, "label": "PageController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Align", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that aligns its child within itself and optionally sizes itself\nbased on the child's size.\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\n## How it works\n\nThe [alignment] property describes a point in the `child`'s coordinate system\nand a different point in the coordinate system of this widget. The [Align]\nwidget positions the `child` such that both points are lined up on top of\neach other.\n\nThe [Align] widget in this example uses one of the defined constants from\n[Alignment], [topRight]. This places the [FlutterLogo] in the top right corner\nof the parent blue [Container].\n\n![A blue square container with the Flutter logo in the top right corner.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_constant.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment.topRight,\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [Alignment] used in the following example defines a single point:\n\n * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height\n of [FlutterLogo]/2 + height of [FlutterLogo]/2) = (36.0, 48.0).\n\nThe [Alignment] class uses a coordinate system with an origin in the center\nof the [Container], as shown with the [Icon] above. [Align] will place the\n[FlutterLogo] at (36.0, 48.0) according to this coordinate system.\n\n![A blue square container with the Flutter logo positioned according to the\nAlignment specified above. A point is marked at the center of the container\nfor the origin of the Alignment coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_alignment.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [FractionalOffset] used in the following example defines two points:\n\n * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0)\n in the coordinate system of the blue container.\n * (0.2 * width of [Align], 0.6 * height of [Align]) = (24.0, 72.0) in the\n coordinate system of the [Align] widget.\n\nThe [Align] widget positions the [FlutterLogo] such that the two points are on\ntop of each other. In this example, the top left of the [FlutterLogo] will\nbe placed at (24.0, 72.0) - (12.0, 36.0) = (12.0, 36.0) from the top left of\nthe [Align] widget.\n\nThe [FractionalOffset] class uses a coordinate system with an origin in the top-left\ncorner of the [Container] in difference to the center-oriented system used in\nthe example above with [Alignment].\n\n![A blue square container with the Flutter logo positioned according to the\nFractionalOffset specified above. A point is marked at the top left corner\nof the container for the origin of the FractionalOffset coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_fractional_offset.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: FractionalOffset(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Center], which is the same as [Align] but with the [alignment] always\n set to [Alignment.center].\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Align" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables or disables tickers (and thus animation controllers) in the widget\nsubtree.\n\nThis only works if [AnimationController] objects are created using\nwidget-aware ticker providers. For example, using a\n[TickerProviderStateMixin] or a [SingleTickerProviderStateMixin].", "detail": "", "kind": 7, "label": "TickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is unique across the entire app.\n\nGlobal keys uniquely identify elements. Global keys provide access to other\nobjects that are associated with elements, such as the a [BuildContext] and,\nfor [StatefulWidget]s, a [State].\n\nWidgets that have global keys reparent their subtrees when they are moved\nfrom one location in the tree to another location in the tree. In order to\nreparent its subtree, a widget must arrive at its new location in the tree\nin the same animation frame in which it was removed from its old location in\nthe tree.\n\nGlobal keys are relatively expensive. If you don't need any of the features\nlisted above, consider using a [Key], [ValueKey], [ObjectKey], or\n[UniqueKey] instead.\n\nYou cannot simultaneously include two widgets in the tree with the same\nglobal key. Attempting to do so will assert at runtime.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "GlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget for a given index, e.g., in a\nlist.\n\nUsed by [ListView.builder] and other APIs that use lazily-generated widgets.\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [TransitionBuilder], which is similar but also takes a child.", "detail": "(BuildContext context, int index) → Widget", "kind": 7, "label": "IndexedWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Column", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a vertical array.\n\nTo cause a child to expand to fill the available vertical space, wrap the\nchild in an [Expanded] widget.\n\nThe [Column] widget does not scroll (and in general it is considered an error\nto have more children in a [Column] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a horizontal variant, see [Row].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example uses a [Column] to arrange three widgets vertically, the last\nbeing made to fill all the remaining space.\n\n```dart\nColumn(\n children: <Widget>[\n Text('Deliver features faster'),\n Text('Craft beautiful UIs'),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\nIn the sample above, the text and the logo are centered on each line. In the\nfollowing example, the [crossAxisAlignment] is set to\n[CrossAxisAlignment.start], so that the children are left-aligned. The\n[mainAxisSize] is set to [MainAxisSize.min], so that the column shrinks to\nfit the children.\n\n```dart\nColumn(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n Text('We move under cover and we move as one'),\n Text('Through the night, we have one shot to live another day'),\n Text('We cannot let a stray gunshot give us away'),\n Text('We will fight up close, seize the moment and stay in it'),\n Text('It’s either that or meet the business end of a bayonet'),\n Text('The code word is ‘Rochambeau,’ dig me?'),\n Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),\n ],\n)\n```\n\n## Troubleshooting\n\n### When the incoming vertical constraints are unbounded\n\nWhen a [Column] has one or more [Expanded] or [Flexible] children, and is\nplaced in another [Column], or in a [ListView], or in some other context\nthat does not provide a maximum height constraint for the [Column], you will\nget an exception at runtime saying that there are children with non-zero\nflex but the vertical constraints are unbounded.\n\nThe problem, as described in the details that accompany that exception, is\nthat using [Flexible] or [Expanded] means that the remaining space after\nlaying out all the other children must be shared equally, but if the\nincoming vertical constraints are unbounded, there is infinite remaining\nspace.\n\nThe key to solving this problem is usually to determine why the [Column] is\nreceiving unbounded vertical constraints.\n\nOne common reason for this to happen is that the [Column] has been placed in\nanother [Column] (without using [Expanded] or [Flexible] around the inner\nnested [Column]). When a [Column] lays out its non-flex children (those that\nhave neither [Expanded] or [Flexible] around them), it gives them unbounded\nconstraints so that they can determine their own dimensions (passing\nunbounded constraints usually signals to the child that it should\nshrink-wrap its contents). The solution in this case is typically to just\nwrap the inner column in an [Expanded] to indicate that it should take the\nremaining space of the outer column, rather than being allowed to take any\namount of room it desires.\n\nAnother reason for this message to be displayed is nesting a [Column] inside\na [ListView] or other vertical scrollable. In that scenario, there really is\ninfinite vertical space (the whole point of a vertical scrolling list is to\nallow infinite space vertically). In such scenarios, it is usually worth\nexamining why the inner [Column] should have an [Expanded] or [Flexible]\nchild: what size should the inner children really be? The solution in this\ncase is typically to remove the [Expanded] or [Flexible] widgets from around\nthe inner children.\n\nFor more discussion about constraints, see [BoxConstraints].\n\n### The yellow and black striped banner\n\nWhen the contents of a [Column] exceed the amount of space available, the\n[Column] overflows, and the contents are clipped. In debug mode, a yellow\nand black striped bar is rendered at the overflowing edge to indicate the\nproblem, and a message is printed below the [Column] saying how much\noverflow was detected.\n\nThe usual solution is to use a [ListView] rather than a [Column], to enable\nthe contents to scroll when vertical space is limited.\n\n## Layout algorithm\n\n_This section describes how a [Column] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Column] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded vertical constraints and the incoming\n horizontal constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight horizontal constraints\n that match the incoming max width.\n2. Divide the remaining vertical space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of vertical space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same horizontal\n constraints as in step 1, but instead of using unbounded vertical\n constraints, use vertical constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The width of the [Column] is the maximum width of the children (which\n will always satisfy the incoming horizontal constraints).\n5. The height of the [Column] is determined by the [mainAxisSize] property.\n If the [mainAxisSize] property is [MainAxisSize.max], then the height of\n the [Column] is the max height of the incoming constraints. If the\n [mainAxisSize] property is [MainAxisSize.min], then the height of the\n [Column] is the sum of heights of the children (subject to the incoming\n constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any vertical\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a horizontal equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may size smaller (leaving some remaining room unused).\n * [SingleChildScrollView], whose documentation discusses some ways to\n use a [Column] inside a scrolling container.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Column" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotationTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the rotation of a widget.\n\nHere's an illustration of the [RotationTransition] widget, with it's [turns]\nanimated by a [CurvedAnimation] set to [Curves.elasticOut]:\nSee also:\n\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "RotationTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldValidator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for validating a form field.\n\nReturns an error string to display if the input is invalid, or null\notherwise.\n\nUsed by [FormField.validator].", "detail": "(T value) → String", "kind": 7, "label": "FormFieldValidator" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAlive", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mark a child as needing to stay alive even when it's in a lazy list that\nwould otherwise remove it.\n\nThis widget is for use in [SliverWithKeepAliveWidget]s, such as\n[SliverGrid] or [SliverList].\n\nThis widget is rarely used directly. The [SliverChildBuilderDelegate] and\n[SliverChildListDelegate] delegates, used with [SliverList] and\n[SliverGrid], as well as the scroll view counterparts [ListView] and\n[GridView], have an `addAutomaticKeepAlives` feature, which is enabled by\ndefault, and which causes [AutomaticKeepAlive] widgets to be inserted around\neach child, causing [KeepAlive] widgets to be automatically added and\nconfigured in response to [KeepAliveNotification]s.\n\nTherefore, to keep a widget alive, it is more common to use those\nnotifications than to directly deal with [KeepAlive] widgets.\n\nIn practice, the simplest way to deal with these notifications is to mix\n[AutomaticKeepAliveClientMixin] into one's [State]. See the documentation\nfor that mixin class for details.", "detail": "", "kind": 7, "label": "KeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that allow the scroll offset to go beyond\nthe bounds of the content, but then bounce the content back to the edge of\nthose bounds.\n\nThis is the behavior typically seen on iOS.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on iOS.\n * [ClampingScrollPhysics], which is the analogous physics for Android's\n clamping behavior.", "detail": "", "kind": 7, "label": "BouncingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageBucket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A storage bucket associated with a page in an app.\n\nUseful for storing per-page state that persists across navigations from one\npage to another.", "detail": "", "kind": 7, "label": "PageStorageBucket" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Stream].\n\n\nWidget rebuilding is scheduled by each interaction, using [State.setState],\nbut is otherwise decoupled from the timing of the stream. The [builder]\nis called at the discretion of the Flutter pipeline, and will thus receive a\ntiming-dependent sub-sequence of the snapshots that represent the\ninteraction with the stream.\n\nAs an example, when interacting with a stream producing the integers\n0 through 9, the [builder] may be called with any ordered sub-sequence\nof the following snapshots that includes the last one (the one with\nConnectionState.done):\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 0)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 1)`\n* ...\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 9)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.done, 9)`\n\nThe actual sequence of invocations of the [builder] depends on the relative\ntiming of events produced by the stream and the build rate of the Flutter\npipeline.\n\nChanging the [StreamBuilder] configuration to another stream during event\ngeneration introduces snapshot pairs of the form:\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.none, 5)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, 5)`\n\nThe latter will be produced only when the new stream is non-null, and the\nformer only when the old stream is non-null.\n\nThe stream may produce errors, resulting in snapshots of the form:\n\n* `new AsyncSnapshot<int>.withError(ConnectionState.active, 'some error')`\n\nThe data and error fields of snapshots produced are only changed when the\nstate is `ConnectionState.active`.\n\nThe initial snapshot data can be controlled by specifying [initialData].\nThis should be used to ensure that the first frame has the expected value,\nas the builder will always be called before the stream listener has a chance\nto be processed.\n\n\nThis sample shows a [StreamBuilder] configuring a text label to show the\nlatest bid received for a lot in an auction. Assume the `_lot` field is\nset by a selector elsewhere in the UI.\n\n```dart\nStreamBuilder<int>(\n stream: _lot?.bids, // a Stream<int> or null\n builder: (BuildContext context, AsyncSnapshot<int> snapshot) {\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n switch (snapshot.connectionState) {\n case ConnectionState.none: return Text('Select lot');\n case ConnectionState.waiting: return Text('Awaiting bids...');\n case ConnectionState.active: return Text('\\$${snapshot.data}');\n case ConnectionState.done: return Text('\\$${snapshot.data} (closed)');\n }\n return null; // unreachable\n },\n)\n```\n\nSee also:\n\n * [ValueListenableBuilder], which wraps a [ValueListenable] instead of a\n [Stream].\n * [StreamBuilderBase], which supports widget building based on a computation\n that spans all interactions made with the stream.", "detail": "", "kind": 7, "label": "StreamBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMask", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a mask generated by a [Shader] to its child.\n\nFor example, [ShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.\n\n\nThis example makes the text look like it is on fire:\n\n```dart\nShaderMask(\n shaderCallback: (Rect bounds) {\n return RadialGradient(\n center: Alignment.topLeft,\n radius: 1.0,\n colors: <Color>[Colors.yellow, Colors.deepOrange.shade900],\n tileMode: TileMode.mirror,\n ).createShader(bounds);\n },\n child: const Text('I’m burning the memories'),\n)\n```\n\nSee also:\n\n * [Opacity], which can apply a uniform alpha effect to its child.\n * [CustomPaint], which lets you draw directly on the canvas.\n * [DecoratedBox], for another approach at decorating child widgets.\n * [BackdropFilter], which applies an image filter to the background.", "detail": "", "kind": 7, "label": "ShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Semantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the widget tree with a description of the meaning of\nthe widgets.\n\nUsed by accessibility tools, search engines, and other semantic analysis\nsoftware to determine the meaning of the application.\n\nSee also:\n\n * [MergeSemantics], which marks a subtree as being a single node for\n accessibility purposes.\n * [ExcludeSemantics], which excludes a subtree from the semantics tree\n (which might be useful if it is, e.g., totally decorative and not\n important to the user).\n * [RenderObject.semanticsAnnotator], the rendering library API through which\n the [Semantics] widget is actually implemented.\n * [SemanticsNode], the object used by the rendering library to represent\n semantics in the semantics tree.\n * [SemanticsDebugger], an overlay to help visualize the semantics tree. Can\n be enabled using [WidgetsApp.showSemanticsDebugger] or\n [MaterialApp.showSemanticsDebugger].", "detail": "", "kind": 7, "label": "Semantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Draggable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dragged from to a [DragTarget].\n\nWhen a draggable widget recognizes the start of a drag gesture, it displays\na [feedback] widget that tracks the user's finger across the screen. If the\nuser lifts their finger while on top of a [DragTarget], that target is given\nthe opportunity to accept the [data] carried by the draggable.\n\nOn multitouch devices, multiple drags can occur simultaneously because there\ncan be multiple pointers in contact with the device at once. To limit the\nnumber of simultaneous drags, use the [maxSimultaneousDrags] property. The\ndefault is to allow an unlimited number of simultaneous drags.\n\nThis widget displays [child] when zero drags are under way. If\n[childWhenDragging] is non-null, this widget instead displays\n[childWhenDragging] when one or more drags are underway. Otherwise, this\nwidget always displays [child].\n\nSee also:\n\n * [DragTarget]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "Draggable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).", "detail": "(TextSelection selection, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a [Dismissible] can be dismissed.", "detail": "", "kind": 13, "label": "DismissDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Positioned", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned.\n\nA [Positioned] widget must be a descendant of a [Stack], and the path from\nthe [Positioned] widget to its enclosing [Stack] must contain only\n[StatelessWidget]s or [StatefulWidget]s (not other kinds of widgets, like\n[RenderObjectWidget]s).\n\n\nIf a widget is wrapped in a [Positioned], then it is a _positioned_ widget\nin its [Stack]. If the [top] property is non-null, the top edge of this child\nwill be positioned [top] layout units from the top of the stack widget. The\n[right], [bottom], and [left] properties work analogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [right] and [left] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nIf all three values on a particular axis are null, then the\n[Stack.alignment] property is used to position the child.\n\nIf all six values are null, the child is a non-positioned child. The [Stack]\nuses only the non-positioned children to size itself.\n\nSee also:\n\n * [PositionedDirectional], which adapts to the ambient [Directionality].", "detail": "", "kind": 7, "label": "Positioned" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is only equal to itself.", "detail": "", "kind": 7, "label": "UniqueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionallySizedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to a fraction of the total available space.\nFor more details about the layout algorithm, see\n[RenderFractionallySizedOverflowBox].\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionallySizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which a single widget can be scrolled.\n\nThis widget is useful when you have a single box that will normally be\nentirely visible, for example a clock face in a time picker, but you need to\nmake sure it can be scrolled if the container gets too small in one axis\n(the scroll direction).\n\nIt is also useful if you need to shrink-wrap in both axes (the main\nscrolling direction as well as the cross axis), as one might see in a dialog\nor pop-up menu. In that case, you might pair the [SingleChildScrollView]\nwith a [ListBody] child.\n\nWhen you have a list of children and do not require cross-axis\nshrink-wrapping behavior, for example a scrolling list that is always the\nwidth of the screen, consider [ListView], which is vastly more efficient\nthat a [SingleChildScrollView] containing a [ListBody] or [Column] with\nmany children.\n\n## Sample code: Using [SingleChildScrollView] with a [Column]\n\nSometimes a layout is designed around the flexible properties of a\n[Column], but there is the concern that in some cases, there might not\nbe enough room to see the entire contents. This could be because some\ndevices have unusually small screens, or because the application can\nbe used in landscape mode where the aspect ratio isn't what was\noriginally envisioned, or because the application is being shown in a\nsmall window in split-screen mode. In any case, as a result, it might\nmake sense to wrap the layout in a [SingleChildScrollView].\n\nSimply doing so, however, usually results in a conflict between the [Column],\nwhich typically tries to grow as big as it can, and the [SingleChildScrollView],\nwhich provides its children with an infinite amount of space.\n\nTo resolve this apparent conflict, there are a couple of techniques, as\ndiscussed below. These techniques should only be used when the content is\nnormally expected to fit on the screen, so that the lazy instantiation of\na sliver-based [ListView] or [CustomScrollView] is not expected to provide\nany performance benefit. If the viewport is expected to usually contain\ncontent beyond the dimensions of the screen, then [SingleChildScrollView]\nwould be very expensive.\n\n### Centering, spacing, or aligning fixed-height content\n\nIf the content has fixed (or intrinsic) dimensions but needs to be spaced out,\ncentered, or otherwise positioned using the [Flex] layout model of a [Column],\nthe following technique can be used to provide the [Column] with a minimum\ndimension while allowing it to shrink-wrap the contents when there isn't enough\nroom to apply these spacing or alignment needs.\n\nA [LayoutBuilder] is used to obtain the size of the viewport (implicitly via\nthe constraints that the [SingleChildScrollView] sees, since viewports\ntypically grow to fit their maximum height constraint). Then, inside the\nscroll view, a [ConstrainedBox] is used to set the minimum height of the\n[Column].\n\nThe [Column] has no [Expanded] children, so rather than take on the infinite\nheight from its [BoxConstraints.maxHeight], (the viewport provides no maximum height\nconstraint), it automatically tries to shrink to fit its children. It cannot\nbe smaller than its [BoxConstraints.minHeight], though, and It therefore\nbecomes the bigger of the minimum height provided by the\n[ConstrainedBox] and the sum of the heights of the children.\n\nIf the children aren't enough to fit that minimum size, the [Column] ends up\nwith some remaining space to allocate as specified by its\n[Column.mainAxisAlignment] argument.\n\nIn this example, the children are spaced out equally, unless there's no more\nroom, in which case they stack vertically and scroll.\n\nWhen using this technique, [Expanded] and [Flexible] are not useful, because\nin both cases the \"available space\" is infinite (since this is in a viewport).\nThe next section describes a technique for providing a maximum height constraint.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: Column(\n mainAxisSize: MainAxisSize.min,\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Container(\n // Another fixed-height child.\n color: const Color(0xff008000), // Green\n height: 120.0,\n ),\n ],\n ),\n ),\n );\n },\n );\n}\n```\n\n### Expanding content to fit the viewport\n\nThe following example builds on the previous one. In addition to providing a\nminimum dimension for the child [Column], an [IntrinsicHeight] widget is used\nto force the column to be exactly as big as its contents. This constraint\ncombines with the [ConstrainedBox] constraints discussed previously to ensure\nthat the column becomes either as big as viewport, or as big as the contents,\nwhichever is biggest.\n\nBoth constraints must be used to get the desired effect. If only the\n[IntrinsicHeight] was specified, then the column would not grow to fit the\nentire viewport when its children were smaller than the whole screen. If only\nthe size of the viewport was used, then the [Column] would overflow if the\nchildren were bigger than the viewport.\n\nThe widget that is to grow to fit the remaining space so provided is wrapped\nin an [Expanded] widget.\n\nThis technique is quite expensive, as it more or less requires that the contents\nof the viewport be laid out twice (once to find their intrinsic dimensions, and\nonce to actually lay them out). The number of widgets within the column should\ntherefore be kept small. Alternatively, subsets of the children that have known\ndimensions can be wrapped in a [SizedBox] that has tight vertical constraints,\nso that the intrinsic sizing algorithm can short-circuit the computation when it\nreaches those parts of the subtree.\n\nIn this example, the column becomes either as big as viewport, or as big as\nthe contents, whichever is biggest.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: IntrinsicHeight(\n child: Column(\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Expanded(\n // A flexible child that will grow to fit the viewport but\n // still be at least as big as necessary to fit its contents.\n child: Container(\n color: const Color(0xff800000), // Red\n height: 120.0,\n ),\n ),\n ],\n ),\n ),\n ),\n );\n },\n );\n}\n```\n\nSee also:\n\n * [ListView], which handles multiple children in a scrolling list.\n * [GridView], which handles multiple children in a scrolling grid.\n * [PageView], for a scrollable that works page by page.\n * [Scrollable], which handles arbitrary scrolling effects.", "detail": "", "kind": 7, "label": "SingleChildScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScopeNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interior node in the focus tree.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nThe interior nodes in the focus tree cannot themselves be focused but\ninstead remember previous focus states. A scope is currently active in its\nparent whenever [isFirstFocus] is true. If that scope is detached from its\nparent, its previous sibling becomes the parent's first focus.\n\nA [FocusNode] has the overall focus when the node is focused in its\nparent [FocusScopeNode] and [FocusScopeNode.isFirstFocus] is true for\nthat scope and all its ancestor scopes.\n\nIf a [FocusScopeNode] is removed, then the next sibling node will be set as\nthe focused node by the [FocusManager].\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].\n * [FocusScope], which is a widget that associates a [FocusScopeNode] with\n its location in the tree.", "detail": "", "kind": 7, "label": "FocusScopeNode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAlive", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows subtrees to request to be kept alive in lazy lists.\n\nThis widget is like [KeepAlive] but instead of being explicitly configured,\nit listens to [KeepAliveNotification] messages from the [child] and other\ndescendants.\n\nThe subtree is kept alive whenever there is one or more descendant that has\nsent a [KeepAliveNotification] and not yet triggered its\n[KeepAliveNotification.handle].\n\nTo send these notifications, consider using [AutomaticKeepAliveClientMixin].", "detail": "", "kind": 7, "label": "AutomaticKeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryConstructor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.constructor].", "detail": "() → T", "kind": 7, "label": "GestureRecognizerFactoryConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilderBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that build themselves based on interaction with\na specified [Stream].\n\nA [StreamBuilderBase] is stateful and maintains a summary of the interaction\nso far. The type of the summary and how it is updated with each interaction\nis defined by sub-classes.\n\nExamples of summaries include:\n\n* the running average of a stream of integers;\n* the current direction and speed based on a stream of geolocation data;\n* a graph displaying data points from a stream.\n\nIn general, the summary is the result of a fold computation over the data\nitems and errors received from the stream along with pseudo-events\nrepresenting termination or change of stream. The initial summary is\nspecified by sub-classes by overriding [initial]. The summary updates on\nreceipt of stream data and errors are specified by overriding [afterData] and\n[afterError], respectively. If needed, the summary may be updated on stream\ntermination by overriding [afterDone]. Finally, the summary may be updated\non change of stream by overriding [afterDisconnected] and [afterConnected].\n\n`T` is the type of stream events.\n\n`S` is the type of interaction summary.\n\nSee also:\n\n * [StreamBuilder], which is specialized for the case where only the most\n recent interaction is needed for widget building.", "detail": "", "kind": 7, "label": "StreamBuilderBase" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapAbsorber", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[RenderSliverOverlapInjector].", "detail": "", "kind": 7, "label": "RenderSliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometryTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsetsGeometry]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsetsGeometry>] to\nuse [EdgeInsetsGeometry.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsTween], which interpolates between two [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryInitializer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.initializer].", "detail": "(T instance) → void", "kind": 7, "label": "GestureRecognizerFactoryInitializer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver whose size varies when the sliver is scrolled to the leading edge\nof the viewport.\n\nThis is the layout primitive that [SliverAppBar] uses for its\nshrinking/growing effect.", "detail": "", "kind": 7, "label": "SliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a [Navigator] widget.", "detail": "", "kind": 7, "label": "NavigatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Visibility", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to show or hide a child.\n\nBy default, the [visible] property controls whether the [child] is included\nin the subtree or not; when it is not [visible], the [replacement] child\n(typically a zero-sized box) is included instead.\n\nA variety of flags can be used to tweak exactly how the child is hidden.\n(Changing the flags dynamically is discouraged, as it can cause the [child]\nsubtree to be rebuilt, with any state in the subtree being discarded.\nTypically, only the [visible] flag is changed dynamically.)\n\nThese widgets provide some of the facets of this one:\n\n * [Opacity], which can stop its child from being painted.\n * [Offstage], which can stop its child from being laid out or painted.\n * [TickerMode], which can stop its child from being animated.\n * [ExcludeSemantics], which can hide the child from accessibility tools.\n * [IgnorePointer], which can disable touch interactions with the child.\n\nUsing this widget is not necessary to hide children. The simplest way to\nhide a child is just to not include it, or, if a child _must_ be given (e.g.\nbecause the parent is a [StatelessWidget]) then to use [SizedBox.shrink]\ninstead of the child that would otherwise be included.\n\nSee also:\n\n * [AnimatedSwitcher], which can fade from one child to the next as the\n subtree changes.\n * [AnimatedCrossFade], which can fade between two specific children.", "detail": "", "kind": 7, "label": "Visibility" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RootRenderObjectElement] that is hosted by a [RenderObject].\n\nThis element class is the instantiation of a [RenderObjectToWidgetAdapter]\nwidget. It can be used only as the root of an [Element] tree (it cannot be\nmounted into another [Element]; it's parent must be null).\n\nIn typical usage, it will be instantiated for a [RenderObjectToWidgetAdapter]\nwhose container is the [RenderView] that connects to the Flutter engine. In\nthis usage, it is normally instantiated by the bootstrapping logic in the\n[WidgetsFlutterBinding] singleton created by [runApp].", "detail": "", "kind": 7, "label": "RenderObjectToWidgetElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Wrap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in multiple horizontal or vertical runs.\n\nA [Wrap] lays out each child and attempts to place the child adjacent to the\nprevious child in the main axis, given by [direction], leaving [spacing]\nspace in between. If there is not enough space to fit the child, [Wrap]\ncreates a new _run_ adjacent to the existing children in the cross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].\n\n\n\nThis example renders some [Chip]s representing four contacts in a [Wrap] so\nthat they flow across lines as necessary.\n\n```dart\nWrap(\n spacing: 8.0, // gap between adjacent chips\n runSpacing: 4.0, // gap between lines\n children: <Widget>[\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('AH')),\n label: Text('Hamilton'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('ML')),\n label: Text('Lafayette'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('HM')),\n label: Text('Mulligan'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('JL')),\n label: Text('Laurens'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [Row], which places children in one line, and gives control over their\n alignment and spacing.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Wrap" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An inherited widget for a [Listenable] [notifier], which updates its\ndependencies when the [notifier] is triggered.\n\nThis is a variant of [InheritedWidget], specialized for subclasses of\n[Listenable], such as [ChangeNotifier] or [ValueNotifier].\n\nDependents are notified whenever the [notifier] sends notifications, or\nwhenever the identity of the [notifier] changes.\n\nMultiple notifications are coalesced, so that dependents only rebuild once\neven if the [notifier] fires multiple times between two frames.\n\nTypically this class is subclassed with a class that provides an `of` static\nmethod that calls [BuildContext.inheritFromWidgetOfExactType] with that\nclass.\n\nThe [updateShouldNotify] method may also be overridden, to change the logic\nin the cases where [notifier] itself is changed. The [updateShouldNotify]\nmethod is called with the old [notifier] in the case of the [notifier] being\nchanged. When it returns true, the dependents are marked as needing to be\nrebuilt this frame.\n\nSee also:\n\n * [Animation], an implementation of [Listenable] that ticks each frame to\n update a value.\n * [ViewportOffset] or its subclass [ScrollPosition], implementations of\n [Listenable] that trigger when a view is scrolled.\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a path.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\n[PhysicalModel] does the same but only supports shapes that can be expressed\nas rectangles with rounded corners.\n\nSee also:\n\n * [ShapeBorderClipper], which converts a [ShapeBorder] to a [CustomerClipper], as\n needed by this widget.", "detail": "", "kind": 7, "label": "PhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildOwner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manager class for the widgets framework.\n\nThis class tracks which widgets need rebuilding, and handles other tasks\nthat apply to widget trees as a whole, such as managing the inactive element\nlist for the tree and triggering the \"reassemble\" command when necessary\nduring hot reload when debugging.\n\nThe main build owner is typically owned by the [WidgetsBinding], and is\ndriven from the operating system along with the rest of the\nbuild/layout/paint pipeline.\n\nAdditional build owners can be built to manage off-screen widget trees.\n\nTo assign a build owner to a tree, use the\n[RootRenderObjectElement.assignOwner] method on the root element of the\nwidget tree.", "detail": "", "kind": 7, "label": "BuildOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] of entries that can be managed independently.\n\nOverlays let independent child widgets \"float\" visual elements on top of\nother widgets by inserting them into the overlay's [Stack]. The overlay lets\neach of these widgets manage their participation in the overlay using\n[OverlayEntry] objects.\n\nAlthough you can create an [Overlay] directly, it's most common to use the\noverlay created by the [Navigator] in a [WidgetsApp] or a [MaterialApp]. The\nnavigator uses its overlay to manage the visual appearance of its routes.\n\nSee also:\n\n * [OverlayEntry].\n * [OverlayState].\n * [WidgetsApp].\n * [MaterialApp].", "detail": "", "kind": 7, "label": "Overlay" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have multiple box children.\n\nHelps subclasses build their children lazily using a [SliverChildDelegate].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the color, opacity, and size of icons.\n\nUsed by [IconTheme] to control the color, opacity, and size of icons in a\nwidget subtree.\n\nTo obtain the current icon theme, use [IconTheme.of]. To convert an icon\ntheme to a version with all the fields filled in, use [new\nIconThemeData.fallback].", "detail": "", "kind": 7, "label": "IconThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedScrollMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable snapshot of values associated with a [Scrollable] viewport.\n\nFor details, see [ScrollMetrics], which defines this object's interfaces.", "detail": "", "kind": 7, "label": "FixedScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedAlign", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Align] which automatically transitions the child's\nposition over a given duration whenever the given [alignment] changes.\n\nHere's an illustration of what this can look like, using a [curve] of\n[Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedPadding], which can animate the padding instead of the\n alignment.\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.", "detail": "", "kind": 7, "label": "AnimatedAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Padding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.\n\n\nThis snippet indents the child (a [Card] with some [Text]) by eight pixels\nin each direction:\n\n```dart\nPadding(\n padding: EdgeInsets.all(8.0),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\n## Design discussion\n\n### Why use a [Padding] widget rather than a [Container] with a [Container.padding] property?\n\nThere isn't really any difference between the two. If you supply a\n[Container.padding] argument, [Container] simply builds a [Padding] widget\nfor you.\n\n[Container] doesn't implement its properties directly. Instead, [Container]\ncombines a number of simpler widgets together into a convenient package. For\nexample, the [Container.padding] property causes the container to build a\n[Padding] widget and the [Container.decoration] property causes the\ncontainer to build a [DecoratedBox] widget. If you find [Container]\nconvenient, feel free to use it. If not, feel free to build these simpler\nwidgets in whatever combination meets your needs.\n\nIn fact, the majority of widgets in Flutter are simply combinations of other\nsimpler widgets. Composition, rather than inheritance, is the primary\nmechanism for building up widgets.\n\nSee also:\n\n * [EdgeInsets], the class that is used to describe the padding dimensions.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Padding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [StatefulBuilder].\n\nCall [setState] to schedule the [StatefulBuilder] to rebuild.", "detail": "(BuildContext context, StateSetter setState) → Widget", "kind": 7, "label": "StatefulWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildBuilderDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using a builder callback.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot even have to be built until they are displayed.\n\nThe widgets returned from the builder callback are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\n\nThis sample code shows how to use `semanticIndexOffset` to handle multiple\ndelegates in a single scroll view.\n\n```dart\nCustomScrollView(\n semanticChildCount: 4,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n ),\n ),\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n semanticIndexOffset: 2,\n ),\n ),\n ],\n)\n```\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\n\nThis sample code shows how to use `semanticIndexCallback` to handle\nannotating a subset of child nodes with a semantic index. There is\na [Spacer] widget at odd indexes which should not have a semantic\nindex.\n\n```dart\nCustomScrollView(\n semanticChildCount: 5,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n if (index.isEven) {\n return Text('...');\n }\n return Spacer();\n },\n semanticIndexCallback: (Widget widget, int localIndex) {\n if (localIndex.isEven) {\n return localIndex ~/ 2;\n }\n return null;\n },\n childCount: 10,\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.\n * [IndexedSemantics], for an example of manually annotating child nodes\n with semantic indexes.", "detail": "", "kind": 7, "label": "SliverChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which children on a wheel can be scrolled.\n\nThis widget is similar to a [ListView] but with the restriction that all\nchildren must be the same size along the scrolling axis.\n\nWhen the list is at the zero scroll offset, the first child is aligned with\nthe middle of the viewport. When the list is at the final scroll offset,\nthe last child is aligned with the middle of the viewport\n\nThe children are rendered as if rotating on a wheel instead of scrolling on\na plane.", "detail": "", "kind": 7, "label": "ListWheelScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragAnchor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where the [Draggable] should be anchored during a drag.", "detail": "", "kind": 13, "label": "DragAnchor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A general-purpose widget for building animations.\n\nAnimatedBuilder is useful for more complex widgets that wish to include\nan animation as part of a larger build function. To use AnimatedBuilder,\nsimply construct the widget and pass it a builder function.\n\nFor simple cases without additional state, consider using\n[AnimatedWidget].\n\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nanimation, it's more efficient to build that subtree once instead of\nrebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\nAnimatedBuilder will pass it back to your builder function so that you\ncan incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedBuilder] and makes use of the\n[child] feature to avoid having to rebuild the [Container] each time.\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return AnimatedBuilder(\n animation: _controller,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n builder: (BuildContext context, Widget child) {\n return Transform.rotate(\n angle: _controller.value * 2.0 * math.pi,\n child: child,\n );\n },\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "AnimatedBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnconstrainedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes no constraints on its child, allowing it to render\nat its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This container will then attempt\nto adopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the container, a warning will be\nprinted on the console, and black and yellow striped areas will appear where\nthe overflow occurs.\n\nSee also:\n\n * [ConstrainedBox], for a box which imposes constraints on its child.\n * [Align], which loosens the constraints given to the child rather than\n removing them entirely.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow\n the parent.", "detail": "", "kind": 7, "label": "UnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedContainer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container that gradually changes its values over a period of time.\n\nThe [AnimatedContainer] will automatically animate between the old and\nnew values of properties when they change using the provided curve and\nduration. Properties that are null are not animated. Its child and\ndescendants are not animated.\n\nThis class is useful for generating simple implicit transitions between\ndifferent parameters to [Container] with its internal [AnimationController].\nFor more complex animations, you'll likely want to use a subclass of\n[AnimatedWidget] such as the [DecoratedBoxTransition] or use your own\n[AnimationController].\n\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPadding], which is a subset of this widget that only\n supports animating the [padding].\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.\n * [AnimatedSwitcher], which switches out a child for a new one with a customizable transition.\n * [AnimatedCrossFade], which fades between two children and interpolates their sizes.", "detail": "", "kind": 7, "label": "AnimatedContainer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single list of children. (This superclass only provides the\nstorage for that child list, it doesn't actually provide the updating\nlogic.)", "detail": "", "kind": 7, "label": "MultiChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has not changed its scroll position\nbecause the change would have caused its scroll position to go outside of\nits scroll bounds.\n\nSee also:\n\n * [ScrollUpdateNotification], which indicates that a [Scrollable] widget\n has changed its scroll position.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "OverscrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A utility class for defining one-off page routes in terms of callbacks.\n\nCallers must define the [pageBuilder] function which creates the route's\nprimary contents. To add transitions define the [transitionsBuilder] function.", "detail": "", "kind": 7, "label": "PageRouteBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a callback that verifies that it's OK to call [Navigator.pop].\n\nUsed by [Form.onWillPop], [ModalRoute.addScopedWillPopCallback],\n[ModalRoute.removeScopedWillPopCallback], and [WillPopScope].", "detail": "() → Future<bool>", "kind": 7, "label": "WillPopCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedOverflowBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is a specific size but passes its original constraints\nthrough to its child, which may then overflow.\n\nSee also:\n\n * [OverflowBox], A widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteSettings", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data that might be useful in constructing a [Route].", "detail": "", "kind": 7, "label": "RouteSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box with a specified size.\n\nIf given a child, this widget forces its child to have a specific width\nand/or height (assuming values are permitted by this widget's parent). If\neither the width or height is null, this widget will size itself to match\nthe child's size in that dimension.\n\nIf not given a child, this widget will size itself to the given width and\nheight, treating nulls as zero.\n\nThe [new SizedBox.expand] constructor can be used to make a [SizedBox] that\nsizes itself to fit the parent. It is equivalent to setting [width] and\n[height] to [double.infinity].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) have the\nexact size 200x300, parental constraints permitting:\n\n```dart\nSizedBox(\n width: 200.0,\n height: 300.0,\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nSee also:\n\n * [ConstrainedBox], a more generic version of this class that takes\n arbitrary [BoxConstraints] instead of an explicit width and height.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [FractionallySizedBox], a widget that sizes its child to a fraction of\n the total available space.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherTransitionBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom transitions for\n[AnimatedSwitcher].\n\nThe `child` should be transitioning in when the `animation` is running in\nthe forward direction.\n\nThe function should return a widget which wraps the given `child`. It may\nalso use the `animation` to inform its transition. It must not return null.", "detail": "(Widget child, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedSwitcherTransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of a [FormField]. Passed to the [FormFieldBuilder] method\nfor use in constructing the form field's widget.", "detail": "", "kind": 7, "label": "FormFieldState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a filter to the existing painted content and then\npaints [child].\n\nThe filter will be applied to all the area within its parent or ancestor\nwidget's clip. If there's no clip, the filter will be applied to the full\nscreen.\n\n\nIf the [BackdropFilter] needs to be applied to an area that exactly matches\nits child, wraps the [BackdropFilter] with a clip widget that clips exactly\nto that child.\n\n```dart\nStack(\n fit: StackFit.expand,\n children: <Widget>[\n Text('0' * 10000),\n Center(\n child: ClipRect( // <-- clips to the 200x200 [Container] below\n child: BackdropFilter(\n filter: ui.ImageFilter.blur(\n sigmaX: 5.0,\n sigmaY: 5.0,\n ),\n child: Container(\n alignment: Alignment.center,\n width: 200.0,\n height: 200.0,\n child: Text('Hello World'),\n ),\n ),\n ),\n ),\n ],\n)\n```\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.\n\nSee also:\n\n * [DecoratedBox], which draws a background under (or over) a widget.\n * [Opacity], which changes the opacity of the widget itself.", "detail": "", "kind": 7, "label": "BackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].\n\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Notification] related to scrolling.\n\n[Scrollable] widgets notify their ancestors about scrolling-related changes.\nThe notifications have the following lifecycle:\n\n * A [ScrollStartNotification], which indicates that the widget has started\n scrolling.\n * Zero or more [ScrollUpdateNotification]s, which indicate that the widget\n has changed its scroll position, mixed with zero or more\n [OverscrollNotification]s, which indicate that the widget has not changed\n its scroll position because the change would have caused its scroll\n position to go outside its scroll bounds.\n * Interspersed with the [ScrollUpdateNotification]s and\n [OverscrollNotification]s are zero or more [UserScrollNotification]s,\n which indicate that the user has changed the direction in which they are\n scrolling.\n * A [ScrollEndNotification], which indicates that the widget has stopped\n scrolling.\n * A [UserScrollNotification], with a [UserScrollNotification.direction] of\n [ScrollDirection.idle].\n\nNotifications bubble up through the tree, which means a given\n[NotificationListener] will receive notifications for all descendant\n[Scrollable] widgets. To focus on notifications from the nearest\n[Scrollable] descendant, check that the [depth] property of the notification\nis zero.\n\nWhen a scroll notification is received by a [NotificationListener], the\nlistener will have already completed build and layout, and it is therefore\ntoo late for that widget to call [State.setState]. Any attempt to adjust the\nbuild or layout based on a scroll notification would result in a layout that\nlagged one frame behind, which is a poor user experience. Scroll\nnotifications are therefore primarily useful for paint effects (since paint\nhappens after layout). The [GlowingOverscrollIndicator] and [Scrollbar]\nwidgets are examples of paint effects that use scroll notifications.\n\nTo drive layout based on the scroll position, consider listening to the\n[ScrollPosition] directly (or indirectly via a [ScrollController]).", "detail": "", "kind": 7, "label": "ScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an Android view in the Widget hierarchy.\n\nRequires Android API level 20 or greater.\n\nEmbedding Android views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\nThe embedded Android view is painted just like any other Flutter widget and transformations\napply to it as well.\n\nThe widget fills all available space, the parent of this object must provide bounded layout\nconstraints.\n\nThe widget participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified in the `gestureRecognizers` constructor parameter. If\nthe set of gesture recognizers is empty, a gesture will be dispatched to the platform\nview iff it was not claimed by any other gesture recognizer.\n\nThe Android view object is created using a [PlatformViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewFactory.html).\nPlugins can register platform view factories with [PlatformViewRegistry#registerViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewRegistry.html#registerViewFactory-java.lang.String-io.flutter.plugin.platform.PlatformViewFactory-).\n\nRegistration is typically done in the plugin's registerWith method, e.g:\n\n```java\n public static void registerWith(Registrar registrar) {\n registrar.platformViewRegistry().registerViewFactory(\"webview\", WebViewFactory(registrar.messenger()));\n }\n```\n\nThe platform view's lifetime is the same as the lifetime of the [State] object for this widget.\nWhen the [State] is disposed the platform view (and auxiliary resources) are lazily\nreleased (some resources are immediately released and some by platform garbage collector).\nA stateful widget's state is disposed when the widget is removed from the tree or when it is\nmoved within the tree. If the stateful widget has a key and it's only moved relative to its siblings,\nor it has a [GlobalKey] and it's moved within the tree, it will not be disposed.", "detail": "", "kind": 7, "label": "AndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositioned", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which automatically transitions the child's\nposition over a given duration whenever the given position changes.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositioned] will trigger a relayout\nas well.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositionedDirectional], which adapts to the ambient\n [Directionality] (the same as this widget, but for animating\n [PositionedDirectional]).", "detail": "", "kind": 7, "label": "AnimatedPositioned" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Container", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience widget that combines common painting, positioning, and sizing\nwidgets.\n\nA container first surrounds the child with [padding] (inflated by any\nborders present in the [decoration]) and then applies additional\n[constraints] to the padded extent (incorporating the `width` and `height`\nas constraints, if either is non-null). The container is then surrounded by\nadditional empty space described from the [margin].\n\nDuring painting, the container first applies the given [transform], then\npaints the [decoration] to fill the padded extent, then it paints the child,\nand finally paints the [foregroundDecoration], also filling the padded\nextent.\n\nContainers with no children try to be as big as possible unless the incoming\nconstraints are unbounded, in which case they try to be as small as\npossible. Containers with children size themselves to their children. The\n`width`, `height`, and [constraints] arguments to the constructor override\nthis.\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nSince [Container] combines a number of other widgets each with their own\nlayout behavior, [Container]'s layout behavior is somewhat complicated.\n\nSummary: [Container] tries, in order: to honor [alignment], to size itself\nto the [child], to honor the `width`, `height`, and [constraints], to expand\nto fit the parent, to be as small as possible.\n\nMore specifically:\n\nIf the widget has no child, no `height`, no `width`, no [constraints],\nand the parent provides unbounded constraints, then [Container] tries to\nsize as small as possible.\n\nIf the widget has no child and no [alignment], but a `height`, `width`, or\n[constraints] are provided, then the [Container] tries to be as small as\npossible given the combination of those constraints and the parent's\nconstraints.\n\nIf the widget has no child, no `height`, no `width`, no [constraints], and\nno [alignment], but the parent provides bounded constraints, then\n[Container] expands to fit the constraints provided by the parent.\n\nIf the widget has an [alignment], and the parent provides unbounded\nconstraints, then the [Container] tries to size itself around the child.\n\nIf the widget has an [alignment], and the parent provides bounded\nconstraints, then the [Container] tries to expand to fit the parent, and\nthen positions the child within itself as per the [alignment].\n\nOtherwise, the widget has a [child] but no `height`, no `width`, no\n[constraints], and no [alignment], and the [Container] passes the\nconstraints from the parent to the child and sizes itself to match the\nchild.\n\nThe [margin] and [padding] properties also affect the layout, as described\nin the documentation for those properties. (Their effects merely augment the\nrules described above.) The [decoration] can implicitly increase the\n[padding] (e.g. borders in a [BoxDecoration] contribute to the [padding]);\nsee [Decoration.padding].\n\nThis example shows a 48x48 amber square (placed inside a [Center] widget in\ncase the parent widget has its own opinions regarding the size that the\n[Container] should take), with a margin so that it stays away from\nneighboring widgets:\n\n![An amber colored container with the dimensions of 48 square pixels.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_a.png)\n\n```dart\nCenter(\n child: Container(\n margin: const EdgeInsets.all(10.0),\n color: Colors.amber[600],\n width: 48.0,\n height: 48.0,\n ),\n)\n```\n\n\nThis example shows how to use many of the features of [Container] at once.\nThe [constraints] are set to fit the font size plus ample headroom\nvertically, while expanding horizontally to fit the parent. The [padding] is\nused to make sure there is space between the contents and the text. The\n[color] makes the box blue. The [alignment] causes the [child] to be\ncentered in the box. Finally, the [transform] applies a slight rotation to the\nentire contraption to complete the effect.\n\n![A blue rectangular container with 'Hello World' in the center, rotated\nslightly in the z axis.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_b.png)\n\n```dart\nContainer(\n constraints: BoxConstraints.expand(\n height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,\n ),\n padding: const EdgeInsets.all(8.0),\n color: Colors.blue[600],\n alignment: Alignment.center,\n child: Text('Hello World',\n style: Theme.of(context)\n .textTheme\n .display1\n .copyWith(color: Colors.white)),\n transform: Matrix4.rotationZ(0.1),\n)\n```\n\nSee also:\n\n * [AnimatedContainer], a variant that smoothly animates the properties when\n they change.\n * [Border], which has a sample which uses [Container] heavily.\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Container" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGrid", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[SliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nThe main axis direction of a grid is the direction in which it scrolls; the\ncross axis direction is the orthogonal direction.\n\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows twenty boxes in a pretty teal grid:\n\n```dart\nSliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n)\n```\n\n\nSee also:\n\n * [SliverList], which places its children in a linear array.\n * [SliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.", "detail": "", "kind": 7, "label": "SliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\n[Scrollable] implements the interaction model for a scrollable widget,\nincluding gesture recognition, but does not have an opinion about how the\nviewport, which actually displays the children, is constructed.\n\nIt's rare to construct a [Scrollable] directly. Instead, consider [ListView]\nor [GridView], which combine scrolling, viewporting, and a layout model. To\ncombine layout models (or to use a custom layout mode), consider using\n[CustomScrollView].\n\nThe static [Scrollable.of] and [Scrollable.ensureVisible] functions are\noften used to interact with the [Scrollable] widget inside a [ListView] or\na [GridView].\n\nTo further customize scrolling behavior with a [Scrollable]:\n\n1. You can provide a [viewportBuilder] to customize the child model. For\n example, [SingleChildScrollView] uses a viewport that displays a single\n box child whereas [CustomScrollView] uses a [Viewport] or a\n [ShrinkWrappingViewport], both of which display a list of slivers.\n\n2. You can provide a custom [ScrollController] that creates a custom\n [ScrollPosition] subclass. For example, [PageView] uses a\n [PageController], which creates a page-oriented scroll position subclass\n that keeps the same page visible when the [Scrollable] resizes.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "Scrollable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Border]s.\n\nThis class specializes the interpolation of [Tween<Border>] to use\n[Border.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsets]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsets>] to use\n[EdgeInsets.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsGeometryTween], which interpolates between two\n [EdgeInsetsGeometry] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryWithHandlers", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers that delegates to callbacks.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactoryWithHandlers" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstrainedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes additional constraints on its child.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[constraints].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) fill the\nparent, by applying [BoxConstraints.expand] constraints:\n\n```dart\nConstrainedBox(\n constraints: const BoxConstraints.expand(),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nThe same behavior can be obtained using the [new SizedBox.expand] widget.\n\nSee also:\n\n * [BoxConstraints], the class that describes constraints.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "ConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image that shows a [placeholder] image while the target [image] is\nloading, then fades in the new image when it loads.\n\nUse this class to display long-loading images, such as [new NetworkImage],\nso that the image appears on screen with a graceful animation rather than\nabruptly pops onto the screen.\n\n\nIf the [image] emits an [ImageInfo] synchronously, such as when the image\nhas been loaded and cached, the [image] is displayed immediately and the\n[placeholder] is never displayed.\n\n[fadeOutDuration] and [fadeOutCurve] control the fade-out animation of the\nplaceholder.\n\n[fadeInDuration] and [fadeInCurve] control the fade-in animation of the\ntarget [image].\n\nPrefer a [placeholder] that's already cached so that it is displayed in one\nframe. This prevents it from popping onto the screen.\n\nWhen [image] changes it is resolved to a new [ImageStream]. If the new\n[ImageStream.key] is different this widget subscribes to the new stream and\nreplaces the displayed image with images emitted by the new stream.\n\nWhen [placeholder] changes and the [image] has not yet emitted an\n[ImageInfo], then [placeholder] is resolved to a new [ImageStream]. If the\nnew [ImageStream.key] is different this widget subscribes to the new stream\nand replaces the displayed image to images emitted by the new stream.\n\nWhen either [placeholder] or [image] changes, this widget continues showing\nthe previously loaded image (if any) until the new image provider provides a\ndifferent image. This is known as \"gapless playback\" (see also\n[Image.gaplessPlayback]).\n\n\n```dart\nFadeInImage(\n // here `bytes` is a Uint8List containing the bytes for the in-memory image\n placeholder: MemoryImage(bytes),\n image: NetworkImage('https://backend.example.com/image.png'),\n)\n```", "detail": "", "kind": 7, "label": "FadeInImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that manages [Hero] transitions.\n\nAn instance of [HeroController] should be used in [Navigator.observers].\nThis is done automatically by [MaterialApp].", "detail": "", "kind": 7, "label": "HeroController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListRemovedItemBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedListState.removeItem].", "detail": "(BuildContext context, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListRemovedItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [PageView].\n\nThe metrics are available on [ScrollNotification]s generated from\n[PageView]s.", "detail": "", "kind": 7, "label": "PageMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModelElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [InheritedModel] as its configuration.", "detail": "", "kind": 7, "label": "InheritedModelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBody", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that arranges its children sequentially along a given axis, forcing\nthem to the dimension of the parent in the other axis.\n\nThis widget is rarely used directly. Instead, consider using [ListView],\nwhich combines a similar layout algorithm with scrolling behavior, or\n[Column], which gives you more flexible control over the layout of a\nvertical set of boxes.\n\nSee also:\n\n * [RenderListBody], which implements this layout algorithm and the\n documentation for which describes some of its subtleties.\n * [SingleChildScrollView], which is sometimes used with [ListBody] to\n make the contents scrollable.\n * [Column] and [Row], which implement a more elaborate version of\n this layout algorithm (at the cost of being slightly less efficient).\n * [ListView], which implements an efficient scrolling version of this\n layout algorithm.", "detail": "", "kind": 7, "label": "ListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomMultiChildLayout", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses a delegate to size and position multiple children.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.\n\n[CustomMultiChildLayout] is appropriate when there are complex relationships\nbetween the size and positioning of a multiple widgets. To control the\nlayout of a single child, [CustomSingleChildLayout] is more appropriate. For\nsimple cases, such as aligning a widget to one or another edge, the [Stack]\nwidget is more appropriate.\n\nEach child must be wrapped in a [LayoutId] widget to identify the widget for\nthe delegate.\n\nSee also:\n\n * [MultiChildLayoutDelegate], for details about how to control the layout of\n the children.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Stack], which arranges children relative to the edges of the container.\n * [Flow], which provides paint-time control of its children using transform\n matrices.", "detail": "", "kind": 7, "label": "CustomMultiChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSizeWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for widgets that can return the size this widget would prefer\nif it were otherwise unconstrained.\n\nThere are a few cases, notably [AppBar] and [TabBar], where it would be\nundesirable for the widget to constrain its own size but where the widget\nneeds to expose a preferred or \"default\" size. For example a primary\n[Scaffold] sets its app bar height to the app bar's preferred height\nplus the height of the system status bar.\n\nUse [PreferredSize] to give a preferred size to an arbitrary widget.", "detail": "", "kind": 7, "label": "PreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An entry in the history of a [LocalHistoryRoute].", "detail": "", "kind": 7, "label": "LocalHistoryEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFixedExtentList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[SliverFixedExtentList] places its children in a linear array along the main\naxis starting at offset zero and without gaps. Each child is forced to have\nthe [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[SliverFixedExtentList] is more efficient than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis.\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows an infinite number of items in varying shades of blue:\n\n```dart\nSliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n)\n```\n\n\nSee also:\n\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Direction of the hero's flight based on the navigation operation.", "detail": "", "kind": 13, "label": "HeroFlightDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that replaces the entire screen.", "detail": "", "kind": 7, "label": "PageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of an [Overlay].\n\nUsed to insert [OverlayEntry]s into the overlay using the [insert] and\n[insertAll] functions.", "detail": "", "kind": 7, "label": "OverlayState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultWidgetsLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "US English localizations for the widgets library.\n\nSee also:\n\n * [GlobalWidgetsLocalizations], which provides widgets localizations for\n many languages.\n * [WidgetsApp.delegates], which automatically includes\n [DefaultWidgetsLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultWidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RepaintBoundary", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that creates a separate display list for its child.\n\nThis widget creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree.\n\nThis is useful since [RenderObject.paint] may be triggered even if its\nassociated [Widget] instances did not change or rebuild. A [RenderObject]\nwill repaint whenever any [RenderObject] that shares the same [Layer] is\nmarked as being dirty and needing paint (see [RenderObject.markNeedsPaint]),\nsuch as when an ancestor scrolls or when an ancestor or descendant animates.\n\nContaining [RenderObject.paint] to parts of the render subtree that are\nactually visually changing using [RepaintBoundary] explicitly or implicitly\nis therefore critical to minimizing redundant work and improving the app's\nperformance.\n\nWhen a [RenderObject] is flagged as needing to paint via\n[RenderObject.markNeedsPaint], the nearest ancestor [RenderObject] with\n[RenderObject.isRepaintBoundary], up to possibly the root of the application,\nis requested to repaint. That nearest ancestor's [RenderObject.paint] method\nwill cause _all_ of its descendant [RenderObject]s to repaint in the same\nlayer.\n\n[RepaintBoundary] is therefore used, both while propagating the\n`markNeedsPaint` flag up the render tree and while traversing down the\nrender tree via [RenderObject.paintChild], to strategically contain repaints\nto the render subtree that visually changed for performance. This is done\nbecause the [RepaintBoundary] widget creates a [RenderObject] that always\nhas a [Layer], decoupling ancestor render objects from the descendant\nrender objects.\n\n[RepaintBoundary] has the further side-effect of possibly hinting to the\nengine that it should further optimize animation performance if the render\nsubtree behind the [RepaintBoundary] is sufficiently complex and is static\nwhile the surrounding tree changes frequently. In those cases, the engine\nmay choose to pay a one time cost of rasterizing and caching the pixel\nvalues of the subtree for faster future GPU re-rendering speed.\n\nSeveral framework widgets insert [RepaintBoundary] widgets to mark natural\nseparation points in applications. For instance, contents in Material Design\ndrawers typically don't change while the drawer opens and closes, so\nrepaints are automatically contained to regions inside or outside the drawer\nwhen using the [Drawer] widget during transitions.\n\nSee also:\n\n * [debugRepaintRainbowEnabled], a debugging flag to help visually monitor\n render tree repaints in a running app.\n * [debugProfilePaintsEnabled], a debugging flag to show render tree\n repaints in the observatory's timeline view.", "detail": "", "kind": 7, "label": "RepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RootRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The element at the root of the tree.\n\nOnly root elements may have their owner set explicitly. All other\nelements inherit their owner from their parent.", "detail": "", "kind": 7, "label": "RootRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportNotificationMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mixin for [Notification]s that track how many [RenderAbstractViewport] they\nhave bubbled through.\n\nThis is used by [ScrollNotification] and [OverscrollIndicatorNotification].", "detail": "", "kind": 7, "label": "ViewportNotificationMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single child slot. (This superclass only provides the storage\nfor that child, it doesn't actually provide the updating logic.)", "detail": "", "kind": 7, "label": "SingleChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VelocityTracker", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Computes a pointer's velocity based on data from [PointerMoveEvent]s.\n\nThe input data is provided by calling [addPosition]. Adding data is cheap.\n\nTo obtain a velocity, call [getVelocity] or [getVelocityEstimate]. This will\ncompute the velocity based on the data added so far. Only call these when\nyou need to use the velocity, as they are comparatively expensive.\n\nThe quality of the velocity estimation will be better if more data points\nhave been received.", "detail": "", "kind": 7, "label": "VelocityTracker" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HorizontalDragGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the horizontal direction.\n\nUsed for horizontal scrolling.\n\nSee also:\n\n * [VerticalDragGestureRecognizer], for a similar recognizer but for\n vertical movement.\n * [MultiDragGestureRecognizer], for a family of gesture recognizers that\n track each touch point independently.", "detail": "", "kind": 7, "label": "HorizontalDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetailsForPointerEventDispatcher", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [FlutterErrorDetails] with extra fields for the gesture\nlibrary's binding's pointer event dispatcher ([GestureBinding.dispatchEvent]).\n\nSee also [FlutterErrorDetailsForPointerRouter], which is also used by the\ngesture library.", "detail": "", "kind": 7, "label": "FlutterErrorDetailsForPointerEventDispatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiDragPointerState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Per-pointer state for a [MultiDragGestureRecognizer].\n\nA [MultiDragGestureRecognizer] tracks each pointer separately. The state for\neach pointer is a subclass of [MultiDragPointerState].", "detail": "", "kind": 7, "label": "MultiDragPointerState" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerRouter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A routing table for [PointerEvent] events.", "detail": "", "kind": 7, "label": "PointerRouter" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerHoverEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is not\nin contact with the device.\n\nSee also:\n\n * [PointerEnterEvent], which reports when the pointer has entered an\n object.\n * [PointerExitEvent], which reports when the pointer has left an object.\n * [PointerMoveEvent], which reports movement while the pointer is in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerHoverEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MouseTrackerAnnotation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The annotation object used to annotate layers that are interested in mouse\nmovements.\n\nThis is added to a layer and managed by the [Listener] widget.", "detail": "", "kind": 7, "label": "MouseTrackerAnnotation" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback that receives a [PointerEvent]", "detail": "(PointerEvent event) → void", "kind": 7, "label": "PointerRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A binding for the gesture subsystem.\n\n## Lifecycle of pointer events and the gesture arena\n\n### [PointerDownEvent]\n\nWhen a [PointerDownEvent] is received by the [GestureBinding] (from\n[Window.onPointerDataPacket], as interpreted by the\n[PointerEventConverter]), a [hitTest] is performed to determine which\n[HitTestTarget] nodes are affected. (Other bindings are expected to\nimplement [hitTest] to defer to [HitTestable] objects. For example, the\nrendering layer defers to the [RenderView] and the rest of the render object\nhierarchy.)\n\nThe affected nodes then are given the event to handle ([dispatchEvent] calls\n[HitTestTarget.handleEvent] for each affected node). If any have relevant\n[GestureRecognizer]s, they provide the event to them using\n[GestureRecognizer.addPointer]. This typically causes the recognizer to\nregister with the [PointerRouter] to receive notifications regarding the\npointer in question.\n\nOnce the hit test and dispatching logic is complete, the event is then\npassed to the aforementioned [PointerRouter], which passes it to any objects\nthat have registered interest in that event.\n\nFinally, the [gestureArena] is closed for the given pointer\n([GestureArenaManager.close]), which begins the process of selecting a\ngesture to win that pointer.\n\n### Other events\n\nA pointer that is [PointerEvent.down] may send further events, such as\n[PointerMoveEvent], [PointerUpEvent], or [PointerCancelEvent]. These are\nsent to the same [HitTestTarget] nodes as were found when the down event was\nreceived (even if they have since been disposed; it is the responsibility of\nthose objects to be aware of that possibility).\n\nThen, the events are routed to any still-registered entrants in the\n[PointerRouter]'s table for that pointer.\n\nWhen a [PointerUpEvent] is received, the [GestureArenaManager.sweep] method\nis invoked to force the gesture arena logic to terminate if necessary.", "detail": "", "kind": 7, "label": "GestureBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes a force press on devices that have force sensors.\n\nOnly the force from a single pointer is used to invoke events. A tap\nrecognizer will win against this recognizer on pointer up as long as the\npointer has not pressed with a force greater than\n[ForcePressGestureRecognizer.startPressure]. A long press recognizer will\nwin when the press down time exceeds the threshold time as long as the\npointer's pressure was never greater than\n[ForcePressGestureRecognizer.startPressure] in that duration.\n\nAs of November, 2018 iPhone devices of generation 6S and higher have\nforce touch functionality, with the exception of the iPhone XR. In addition,\na small handful of Android devices have this functionality as well.\n\nDevices with faux screen pressure sensors like the Pixel 2 and 3 will not\nsend any force press related callbacks.\n\nReported pressure will always be in the range 0.0 to 1.0, where 1.0 is\nmaximum pressure and 0.0 is minimum pressure. If using a custom\n[interpolation] callback, the pressure reported will correspond to that\ncustom curve.", "detail": "", "kind": 7, "label": "ForcePressGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeastSquaresSolver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Uses the least-squares algorithm to fit a polynomial to a set of data.", "detail": "", "kind": 7, "label": "LeastSquaresSolver" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PolynomialFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An nth degree polynomial fit to a dataset.", "detail": "", "kind": 7, "label": "PolynomialFit" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImmediateMultiDragGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement both horizontally and vertically on a per-pointer basis.\n\nIn contrast to [PanGestureRecognizer], [ImmediateMultiDragGestureRecognizer]\nwatches each pointer separately, which means multiple drags can be\nrecognized concurrently if multiple pointers are in contact with the screen.\n\nSee also:\n\n * [PanGestureRecognizer], which recognizes only one drag gesture at a time,\n regardless of how many fingers are involved.\n * [HorizontalMultiDragGestureRecognizer], which only recognizes drags that\n start horizontally.\n * [VerticalMultiDragGestureRecognizer], which only recognizes drags that\n start vertically.\n * [DelayedMultiDragGestureRecognizer], which only recognizes drags that\n start after a long-press gesture.", "detail": "", "kind": 7, "label": "ImmediateMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement.\n\nIn contrast to [MultiDragGestureRecognizer], [DragGestureRecognizer]\nrecognizes a single gesture sequence for all the pointers it watches, which\nmeans that the recognizer has at most one drag sequence active at any given\ntime regardless of how many pointers are in contact with the screen.\n\n[DragGestureRecognizer] is not intended to be used directly. Instead,\nconsider using one of its subclasses to recognize specific types for drag\ngestures.\n\nSee also:\n\n * [HorizontalDragGestureRecognizer], for left and right drags.\n * [VerticalDragGestureRecognizer], for up and down drags.\n * [PanGestureRecognizer], for drags that are not locked to a single axis.", "detail": "", "kind": 7, "label": "DragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerExitEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is not\nin contact with the device, and entered a target object.\n\nSee also:\n\n * [PointerHoverEvent], which reports when the pointer has moved while\n within an object.\n * [PointerEnterEvent], which reports when the pointer has entered an object.\n * [PointerMoveEvent], which reports movement while the pointer is in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerExitEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MouseTracker", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Keeps state about which objects are interested in tracking mouse positions\nand notifies them when a mouse pointer enters, moves, or leaves an annotated\nregion that they are interested in.\n\nOwned by the [RendererBinding] class.", "detail": "", "kind": 7, "label": "MouseTracker" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes when the user has pressed down at the same location for a long\nperiod of time.\n\nThe gesture must not deviate in position from its touch down point for 500ms\nuntil it's recognized. Once the gesture is accepted, the finger can be\nmoved, triggering [onLongPressMoveUpdate] callbacks, unless the\n[postAcceptSlopTolerance] constructor argument is specified.", "detail": "", "kind": 7, "label": "LongPressGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerRemovedEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The device is no longer tracking the pointer.\n\nFor example, the pointer might have drifted out of the device's hover\ndetection range or might have been disconnected from the system entirely.", "detail": "", "kind": 7, "label": "PointerRemovedEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HorizontalMultiDragGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the horizontal direction on a per-pointer basis.\n\nIn contrast to [HorizontalDragGestureRecognizer],\n[HorizontalMultiDragGestureRecognizer] watches each pointer separately,\nwhich means multiple drags can be recognized concurrently if multiple\npointers are in contact with the screen.\n\nSee also:\n\n * [HorizontalDragGestureRecognizer], a gesture recognizer that just\n looks at horizontal movement.\n * [ImmediateMultiDragGestureRecognizer], a similar recognizer, but without\n the limitation that the drag must start horizontally.\n * [VerticalMultiDragGestureRecognizer], which only recognizes drags that\n start vertically.", "detail": "", "kind": 7, "label": "HorizontalMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalResolver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An resolver for pointer signal events.\n\nObjects interested in a [PointerSignalEvent] should register a callback to\nbe called if they should handle the event. The resolver's purpose is to\nensure that the same pointer signal is not handled by multiple objects in\na hierarchy.\n\nPointer signals are immediate, so unlike a gesture arena it always resolves\nat the end of event dispatch. The first callback registered will be the one\nthat is called.", "detail": "", "kind": 7, "label": "PointerSignalResolver" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface to information to an arena.\n\nA given [GestureArenaMember] can have multiple entries in multiple arenas\nwith different pointer ids.", "detail": "", "kind": 7, "label": "GestureArenaEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapDownCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [MultiTapGestureRecognizer] for when a pointer that might\ncause a tap has contacted the screen at a particular location.", "detail": "(int pointer, TapDownDetails details) → void", "kind": 7, "label": "GestureMultiTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestResult", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The result of performing a hit test.", "detail": "", "kind": 7, "label": "HitTestResult" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDoubleTapCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callback when the user has tapped the screen at the same\nlocation twice in quick succession.", "detail": "() → void", "kind": 7, "label": "GestureDoubleTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Drag", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for objects that receive updates about drags.\n\nThis interface is used in various ways. For example,\n[MultiDragGestureRecognizer] uses it to update its clients when it\nrecognizes a gesture. Similarly, the scrolling infrastructure in the widgets\nlibrary uses it to notify the [DragScrollActivity] when the user drags the\nscrollable.", "detail": "", "kind": 7, "label": "Drag" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration of offset passed to [DragStartDetails].\n\nThe settings determines when a drag formally starts when the user\ninitiates a drag.\n\nSee also:\n\n * [DragGestureRecognizer.dragStartBehavior], which gives an example for the different behaviors.", "detail": "", "kind": 13, "label": "DragStartBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDeviceKind", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The kind of pointer device.", "detail": "", "kind": 13, "label": "PointerDeviceKind" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes taps.\n\nGesture recognizers take part in gesture arenas to enable potential gestures\nto be disambiguated from each other. This process is managed by a\n[GestureArenaManager] (q.v.).\n\n[TapGestureRecognizer] considers all the pointers involved in the pointer\nevent sequence as contributing to one gesture. For this reason, extra\npointer interactions during a tap sequence are not recognized as additional\ntaps. For example, down-1, down-2, up-1, up-2 produces only one tap on up-1.\n\nThe lifecycle of events for a tap gesture is as follows:\n\n* [onTapDown], which triggers after a short timeout ([deadline]) even if the\n gesture has not won its arena yet.\n* [onTapUp] and [onTap], which trigger when the pointer is released if the\n gesture wins the arena.\n* [onTapCancel], which triggers instead of [onTapUp] and [onTap] in the case\n of the gesture not winning the arena.\n\nSee also:\n\n * [GestureDetector.onTap], which uses this recognizer.\n * [MultiTapGestureRecognizer]", "detail": "", "kind": 7, "label": "TapGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestDispatcher", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can dispatch events.", "detail": "", "kind": 7, "label": "HitTestDispatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MouseDetectorAnnotationFinder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes a function that finds an annotation given an offset in logical\ncoordinates.\n\nIt is used by the [MouseTracker] to fetch annotations for the mouse\nposition.", "detail": "(Offset offset) → MouseTrackerAnnotation", "kind": 7, "label": "MouseDetectorAnnotationFinder" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEventConverter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Converts from engine pointer data to framework pointer events.\n\nThis takes [PointerDataPacket] objects, as received from the engine via\n[dart:ui.Window.onPointerDataPacket], and converts them to [PointerEvent]\nobjects.", "detail": "", "kind": 7, "label": "PointerEventConverter" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerHoverEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerHoverEvent] events.\n\nUsed by [MouseTrackerAnnotation], [Listener] and [RenderPointerListener].", "detail": "(PointerHoverEvent event) → void", "kind": 7, "label": "PointerHoverEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForceInterpolation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for interpolating the raw\ndevice pressure to a value in the range [0, 1] given the device's pressure\nmin and pressure max.", "detail": "(double pressureMin, double pressureMax, double pressure) → double", "kind": 7, "label": "GestureForceInterpolation" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [MultiTapGestureRecognizer] for when a tap has occurred.", "detail": "(int pointer) → void", "kind": 7, "label": "GestureMultiTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RecognizerCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Generic signature for callbacks passed to\n[GestureRecognizer.invokeCallback]. This allows the\n[GestureRecognizer.invokeCallback] mechanism to be generically used with\nanonymous functions that return objects of particular types.", "detail": "() → T", "kind": 7, "label": "RecognizerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleTapGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes when the user has tapped the screen at the same location twice in\nquick succession.", "detail": "", "kind": 7, "label": "DoubleTapGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapUpCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [MultiTapGestureRecognizer] for when a pointer that will\ntrigger a tap has stopped contacting the screen at a particular location.", "detail": "(int pointer, TapUpDetails details) → void", "kind": 7, "label": "GestureMultiTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDisposition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether the gesture was accepted or rejected.", "detail": "", "kind": 13, "label": "GestureDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryPointerGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for gesture recognizers that track a single primary pointer.\n\nGestures based on this class will stop tracking the gesture if the primary\npointer travels beyond [preAcceptSlopTolerance] or [postAcceptSlopTolerance]\npixels from the original contact point of the gesture.\n\nIf the [preAcceptSlopTolerance] was breached before the gesture was accepted\nin the gesture arena, the gesture will be rejected.", "detail": "", "kind": 7, "label": "PrimaryPointerGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerAddedEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The device has started tracking the pointer.\n\nFor example, the pointer might be hovering above the device, having not yet\nmade contact with the surface of the device.", "detail": "", "kind": 7, "label": "PointerAddedEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VelocityEstimate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A two dimensional velocity estimate.\n\nVelocityEstimates are computed by [VelocityTracker.getVelocityEstimate]. An\nestimate's [confidence] measures how well the velocity tracker's position\ndata fit a straight line, [duration] is the time that elapsed between the\nfirst and last position sample used to compute the velocity, and [offset]\nis similarly the difference between the first and last positions.\n\nSee also:\n\n * [VelocityTracker], which computes [VelocityEstimate]s.\n * [Velocity], which encapsulates (just) a velocity vector and provides some\n useful velocity operations.", "detail": "", "kind": 7, "label": "VelocityEstimate" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data collected during a hit test about a specific [HitTestTarget].\n\nSubclass this object to pass additional information from the hit test phase\nto the event propagation phase.", "detail": "", "kind": 7, "label": "HitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalResolvedCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The callback to register with a [PointerSignalResolver] to express\ninterest in a pointer signal event.", "detail": "(PointerSignalEvent event) → void", "kind": 7, "label": "PointerSignalResolvedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerScrollEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer issued a scroll event.\n\nScrolling the scroll wheel on a mouse is an example of an event that\nwould create a [PointerScrollEvent].", "detail": "", "kind": 7, "label": "PointerScrollEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaMember", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents an object participating in an arena.\n\nReceives callbacks from the GestureArena to notify the object when it wins\nor loses a gesture negotiation. Exactly one of [acceptGesture] or\n[rejectGesture] will be called for each arena this member was added to,\nregardless of what caused the arena to be resolved. For example, if a\nmember resolves the arena itself, that member still receives an\n[acceptGesture] callback.", "detail": "", "kind": 7, "label": "GestureArenaMember" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaTeam", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A group of [GestureArenaMember] objects that are competing as a unit in the\n[GestureArenaManager].\n\nNormally, a recognizer competes directly in the [GestureArenaManager] to\nrecognize a sequence of pointer events as a gesture. With a\n[GestureArenaTeam], recognizers can compete in the arena in a group with\nother recognizers. Arena teams may have a captain which wins the arena on\nbehalf of its team.\n\nWhen gesture recognizers are in a team together without a captain, then once\nthere are no other competing gestures in the arena, the first gesture to\nhave been added to the team automatically wins, instead of the gestures\ncontinuing to compete against each other.\n\nWhen gesture recognizers are in a team with a captain, then once one of the\nteam members claims victory or there are no other competing gestures in the\narena, the captain wins the arena, and all other team members lose.\n\nFor example, [Slider] uses a team without a captain to support both a\n[HorizontalDragGestureRecognizer] and a [TapGestureRecognizer], but without\nthe drag recognizer having to wait until the user has dragged outside the\nslop region of the tap gesture before triggering. Since they compete as a\nteam, as soon as any other recognizers are out of the arena, the drag\nrecognizer wins, even if the user has not actually dragged yet. On the other\nhand, if the tap can win outright, before the other recognizers are taken\nout of the arena (e.g. if the slider is in a vertical scrolling list and the\nuser places their finger on the touch surface then lifts it, so that neither\nthe horizontal nor vertical drag recognizers can claim victory) the tap\nrecognizer still actually wins, despite being in the team.\n\n[AndroidView] uses a team with a captain to decide which gestures are\nforwarded to the native view. For example if we want to forward taps and\nvertical scrolls to a native Android view, [TapGestureRecognizers] and\n[VerticalDragGestureRecognizer] are added to a team with a captain(the captain is set to be a\ngesture recognizer that never explicitly claims the gesture).\nThe captain allows [AndroidView] to know when any gestures in the team has been\nrecognized (or all other arena members are out), once the captain wins the\ngesture is forwarded to the Android view.\n\nTo assign a gesture recognizer to a team, set\n[OneSequenceGestureRecognizer.team] to an instance of [GestureArenaTeam].", "detail": "", "kind": 7, "label": "GestureArenaTeam" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiDragStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when [MultiDragGestureRecognizer] recognizes the start of a drag gesture.", "detail": "(Offset position) → Drag", "kind": 7, "label": "GestureMultiDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaManager", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The first member to accept or the last member to not reject wins.\n\nSee <https://flutter.dev/gestures/#gesture-disambiguation> for more\ninformation about the role this class plays in the gesture system.\n\nTo debug problems with gestures, consider using\n[debugPrintGestureArenaDiagnostics].", "detail": "", "kind": 7, "label": "GestureArenaManager" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneSequenceGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for gesture recognizers that can only recognize one\ngesture at a time. For example, a single [TapGestureRecognizer]\ncan never recognize two taps happening simultaneously, even if\nmultiple pointers are placed on the same widget.\n\nThis is in contrast to, for instance, [MultiTapGestureRecognizer],\nwhich manages each pointer independently and can consider multiple\nsimultaneous touches to each result in a separate tap.", "detail": "", "kind": 7, "label": "OneSequenceGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiDragGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement on a per-pointer basis.\n\nIn contrast to [DragGestureRecognizer], [MultiDragGestureRecognizer] watches\neach pointer separately, which means multiple drags can be recognized\nconcurrently if multiple pointers are in contact with the screen.\n\n[MultiDragGestureRecognizer] is not intended to be used directly. Instead,\nconsider using one of its subclasses to recognize specific types for drag\ngestures.\n\nSee also:\n\n * [ImmediateMultiDragGestureRecognizer], the most straight-forward variant\n of multi-pointer drag gesture recognizer.\n * [HorizontalMultiDragGestureRecognizer], which only recognizes drags that\n start horizontally.\n * [VerticalMultiDragGestureRecognizer], which only recognizes drags that\n start vertically.\n * [DelayedMultiDragGestureRecognizer], which only recognizes drags that\n start after a long-press gesture.", "detail": "", "kind": 7, "label": "MultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerExitEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerExitEvent] events.\n\nUsed by [MouseTrackerAnnotation], [Listener] and [RenderPointerListener].", "detail": "(PointerExitEvent event) → void", "kind": 7, "label": "PointerExitEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes a scale gesture.\n\n[ScaleGestureRecognizer] tracks the pointers in contact with the screen and\ncalculates their focal point, indicated scale, and rotation. When a focal\npointer is established, the recognizer calls [onStart]. As the focal point,\nscale, rotation change, the recognizer calls [onUpdate]. When the pointers\nare no longer in contact with the screen, the recognizer calls [onEnd].", "detail": "", "kind": 7, "label": "ScaleGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetailsForPointerRouter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [FlutterErrorDetails] with extra fields for the gestures\nlibrary's pointer router ([PointerRouter]).\n\nSee also [FlutterErrorDetailsForPointerEventDispatcher], which is also used\nby the gestures library.", "detail": "", "kind": 7, "label": "FlutterErrorDetailsForPointerRouter" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The possible states of a [PrimaryPointerGestureRecognizer].\n\nThe recognizer advances from [ready] to [possible] when it starts tracking a\nprimary pointer. When the primary pointer is resolved in the gesture\narena (either accepted or rejected), the recognizers advances to [defunct].\nOnce the recognizer has stopped tracking any remaining pointers, the\nrecognizer returns to [ready].", "detail": "", "kind": 13, "label": "GestureRecognizerState" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DelayedMultiDragGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement both horizontally and vertically on a per-pointer basis\nafter a delay.\n\nIn contrast to [ImmediateMultiDragGestureRecognizer],\n[DelayedMultiDragGestureRecognizer] waits for a [delay] before recognizing\nthe drag. If the pointer moves more than [kTouchSlop] before the delay\nexpires, the gesture is not recognized.\n\nIn contrast to [PanGestureRecognizer], [DelayedMultiDragGestureRecognizer]\nwatches each pointer separately, which means multiple drags can be\nrecognized concurrently if multiple pointers are in contact with the screen.\n\nSee also:\n\n * [ImmediateMultiDragGestureRecognizer], a similar recognizer but without\n the delay.\n * [PanGestureRecognizer], which recognizes only one drag gesture at a time,\n regardless of how many fingers are involved.", "detail": "", "kind": 7, "label": "DelayedMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEnterEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is not\nin contact with the device, and it has entered a target object.\n\nSee also:\n\n * [PointerHoverEvent], which reports when the pointer has moved while\n within an object.\n * [PointerExitEvent], which reports when the pointer has left an object.\n * [PointerMoveEvent], which reports movement while the pointer is in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerEnterEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestTarget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can handle events.", "detail": "", "kind": 7, "label": "HitTestTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalMultiDragGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the vertical direction on a per-pointer basis.\n\nIn contrast to [VerticalDragGestureRecognizer],\n[VerticalMultiDragGestureRecognizer] watches each pointer separately,\nwhich means multiple drags can be recognized concurrently if multiple\npointers are in contact with the screen.\n\nSee also:\n\n * [VerticalDragGestureRecognizer], a gesture recognizer that just\n looks at vertical movement.\n * [ImmediateMultiDragGestureRecognizer], a similar recognizer, but without\n the limitation that the drag must start vertically.\n * [HorizontalMultiDragGestureRecognizer], which only recognizes drags that\n start horizontally.", "detail": "", "kind": 7, "label": "VerticalMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event that corresponds to a discrete pointer signal.\n\nPointer signals are events that originate from the pointer but don't change\nthe state of the pointer itself, and are discrete rather than needing to be\ninterpreted in the context of a series of events.", "detail": "", "kind": 7, "label": "PointerSignalEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class that all gesture recognizers inherit from.\n\nProvides a basic API that can be used by classes that work with\ngesture recognizers but don't care about the specific details of\nthe gestures recognizers themselves.\n\nSee also:\n\n * [GestureDetector], the widget that is used to detect gestures.\n * [debugPrintRecognizerCallbacksTrace], a flag that can be set to help\n debug issues with gesture recognizers.", "detail": "", "kind": 7, "label": "GestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEnterEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerEnterEvent] events.\n\nUsed by [MouseTrackerAnnotation], [Listener] and [RenderPointerListener].", "detail": "(PointerEnterEvent event) → void", "kind": 7, "label": "PointerEnterEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDragGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the vertical direction.\n\nUsed for vertical scrolling.\n\nSee also:\n\n * [HorizontalDragGestureRecognizer], for a similar recognizer but for\n horizontal movement.\n * [MultiDragGestureRecognizer], for a family of gesture recognizers that\n track each touch point independently.", "detail": "", "kind": 7, "label": "VerticalDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapCancelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureMultiTapDownCallback] will not end up causing a tap.", "detail": "(int pointer) → void", "kind": 7, "label": "GestureMultiTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PanGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement both horizontally and vertically.\n\nSee also:\n\n * [ImmediateMultiDragGestureRecognizer], for a similar recognizer that\n tracks each touch point independently.\n * [DelayedMultiDragGestureRecognizer], for a similar recognizer that\n tracks each touch point independently, but that doesn't start until\n some time has passed.", "detail": "", "kind": 7, "label": "PanGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EagerGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A gesture recognizer that eagerly claims victory in all gesture arenas.\n\nThis is typically passed in [AndroidView.gestureRecognizers] in order to immediately dispatch\nall touch events inside the view bounds to the embedded Android view.\nSee [AndroidView.gestureRecognizers] for more details.", "detail": "", "kind": 7, "label": "EagerGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiTapGestureRecognizer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes taps on a per-pointer basis.\n\n[MultiTapGestureRecognizer] considers each sequence of pointer events that\ncould constitute a tap independently of other pointers: For example, down-1,\ndown-2, up-1, up-2 produces two taps, on up-1 and up-2.\n\nSee also:\n\n * [TapGestureRecognizer]", "detail": "", "kind": 7, "label": "MultiTapGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can hit-test pointers.", "detail": "", "kind": 7, "label": "HitTestable" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SpringDescription", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that describes a spring's constants.\n\nUsed to configure a [SpringSimulation].", "detail": "", "kind": 7, "label": "SpringDescription" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrictionSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simulation that applies a drag to slow a particle down.\n\nModels a particle affected by fluid drag, e.g. air resistance.\n\nThe simulation ends when the velocity of the particle drops to zero (within\nthe current velocity [tolerance]).", "detail": "", "kind": 7, "label": "FrictionSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampedSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simulation that applies limits to another simulation.\n\nThe limits are only applied to the other simulation's outputs. For example,\nif a maximum position was applied to a gravity simulation with the\nparticle's initial velocity being up, and the acceleration being down, and\nthe maximum position being between the initial position and the curve's\napogee, then the particle would return to its initial position in the same\namount of time as it would have if the maximum had not been applied; the\ndifference would just be that the position would be reported as pinned to\nthe maximum value for the times that it would otherwise have been reported\nas higher.", "detail": "", "kind": 7, "label": "ClampedSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GravitySimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simulation that applies a constant accelerating force.\n\nModels a particle that follows Newton's second law of motion. The simulation\nends when the position reaches a defined point.\n\n\nThis method triggers an [AnimationController] (a previously constructed\n`_controller` field) to simulate a fall of 300 pixels.\n\n```dart\nvoid _startFall() {\n _controller.animateWith(GravitySimulation(\n 10.0, // acceleration, pixels per second per second\n 0.0, // starting position, pixels\n 300.0, // ending position, pixels\n 0.0, // starting velocity, pixels per second\n ));\n}\n```\n\nThis [AnimationController] could be used with an [AnimatedBuilder] to\nanimate the position of a child as if it was falling.\n\nSee also:\n\n * [Curves.bounceOut], a [Curve] that has a similar aesthetics but includes\n a bouncing effect.", "detail": "", "kind": 7, "label": "GravitySimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SpringType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The kind of spring solution that the [SpringSimulation] is using to simulate the spring.\n\nSee [SpringSimulation.type].", "detail": "", "kind": 13, "label": "SpringType" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SpringSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A spring simulation.\n\nModels a particle attached to a spring that follows Hooke's law.", "detail": "", "kind": 7, "label": "SpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoundedFrictionSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [FrictionSimulation] that clamps the modeled particle to a specific range\nof values.", "detail": "", "kind": 7, "label": "BoundedFrictionSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface that [Scrollable] widgets implement in order to use\n[ScrollPosition].\n\nSee also:\n\n * [ScrollableState], which is the most common implementation of this\n interface.\n * [ScrollPosition], which uses this interface to communicate with the\n scrollable widget.", "detail": "", "kind": 7, "label": "ScrollContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalTranslation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[FractionalTranslation], even if the contents are offset such that\nthey overflow.\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [new Transform.translate], which applies an absolute offset translation\n transformation instead of an offset scaled to the child.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbsorbPointer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this widget prevents its subtree from receiving\npointer events by terminating hit testing at itself. It still consumes space\nduring layout and paints its child as usual. It just prevents its children\nfrom being the target of located events, because it returns true from\n[RenderBox.hitTest].\n\n\nSee also:\n\n * [IgnorePointer], which also prevents its children from receiving pointer\n events but is itself invisible to hit testing.", "detail": "", "kind": 7, "label": "AbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State object for a [Scrollable] widget.\n\nTo manipulate a [Scrollable] widget's scroll position, use the object\nobtained from the [position] property.\n\nTo be informed of when a [Scrollable] widget is scrolling, use a\n[NotificationListener] to listen for [ScrollNotification] notifications.\n\nThis class is not intended to be subclassed. To specialize the behavior of a\n[Scrollable], provide it with a [ScrollPhysics].", "detail": "", "kind": 7, "label": "ScrollableState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativePositionedTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which transitions the child's position\nbased on the value of [rect] relative to a bounding box with the\nspecified [size].\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [RelativePositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "RelativePositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a [Widget] when given a concrete value of a [ValueListenable<T>].\n\nIf the `child` parameter provided to the [ValueListenableBuilder] is not\nnull, the same `child` widget is passed back to this [ValueWidgetBuilder]\nand should typically be incorporated in the returned widget tree.\n\nSee also:\n\n * [ValueListenableBuilder], a widget which invokes this builder each time\n a [ValueListenable] changes value.", "detail": "(BuildContext context, T value, Widget child) → Widget", "kind": 7, "label": "ValueWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Texture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture widget refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture widgets are repainted autonomously as dictated by the backend (e.g.\non arrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by its parent widget, and the\ntexture is automatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "Texture" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePredicate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [Navigator.popUntil] predicate argument.", "detail": "(Route<dynamic> route) → bool", "kind": 7, "label": "RoutePredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Associates a [ScrollController] with a subtree.\n\nWhen a [ScrollView] has [ScrollView.primary] set to true and is not given\nan explicit [ScrollController], the [ScrollView] uses [of] to find the\n[ScrollController] associated with its subtree.\n\nThis mechanism can be used to provide default behavior for scroll views in a\nsubtree. For example, the [Scaffold] uses this mechanism to implement the\nscroll-to-top gesture on iOS.", "detail": "", "kind": 7, "label": "PrimaryScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MetaData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "MetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Element", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An instantiation of a [Widget] at a particular location in the tree.\n\nWidgets describe how to configure a subtree but the same widget can be used\nto configure multiple subtrees simultaneously because widgets are immutable.\nAn [Element] represents the use of a widget to configure a specific location\nin the tree. Over time, the widget associated with a given element can\nchange, for example, if the parent widget rebuilds and creates a new widget\nfor this location.\n\nElements form a tree. Most elements have a unique child, but some widgets\n(e.g., subclasses of [RenderObjectElement]) can have multiple children.\n\nElements have the following lifecycle:\n\n * The framework creates an element by calling [Widget.createElement] on the\n widget that will be used as the element's initial configuration.\n * The framework calls [mount] to add the newly created element to the tree\n at a given slot in a given parent. The [mount] method is responsible for\n inflating any child widgets and calling [attachRenderObject] as\n necessary to attach any associated render objects to the render tree.\n * At this point, the element is considered \"active\" and might appear on\n screen.\n * At some point, the parent might decide to change the widget used to\n configure this element, for example because the parent rebuilt with new\n state. When this happens, the framework will call [update] with the new\n widget. The new widget will always have the same [runtimeType] and key as\n old widget. If the parent wishes to change the [runtimeType] or key of\n the widget at this location in the tree, can do so by unmounting this\n element and inflating the new widget at this location.\n * At some point, an ancestor might decide to remove this element (or an\n intermediate ancestor) from the tree, which the ancestor does by calling\n [deactivateChild] on itself. Deactivating the intermediate ancestor will\n remove that element's render object from the render tree and add this\n element to the [owner]'s list of inactive elements, causing the framework\n to call [deactivate] on this element.\n * At this point, the element is considered \"inactive\" and will not appear\n on screen. An element can remain in the inactive state only until\n the end of the current animation frame. At the end of the animation\n frame, any elements that are still inactive will be unmounted.\n * If the element gets reincorporated into the tree (e.g., because it or one\n of its ancestors has a global key that is reused), the framework will\n remove the element from the [owner]'s list of inactive elements, call\n [activate] on the element, and reattach the element's render object to\n the render tree. (At this point, the element is again considered \"active\"\n and might appear on screen.)\n * If the element does not get reincorporated into the tree by the end of\n the current animation frame, the framework will call [unmount] on the\n element.\n * At this point, the element is considered \"defunct\" and will not be\n incorporated into the tree in the future.", "detail": "", "kind": 7, "label": "Element" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mutable selection state of the inspector.", "detail": "", "kind": 7, "label": "InspectorSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State associated with a [Form] widget.\n\nA [FormState] object can be used to [save], [reset], and [validate] every\n[FormField] that is a descendant of the associated [Form].\n\nTypically obtained via [Form.of].", "detail": "", "kind": 7, "label": "FormState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoActionSheetAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A button typically used in a [CupertinoActionSheet].\n\nSee also:\n\n * [CupertinoActionSheet], an alert that presents the user with a set of two or\n more choices related to the current context.", "detail": "", "kind": 7, "label": "CupertinoActionSheetAction" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeaderDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Delegate for configuring a [SliverPersistentHeader].", "detail": "", "kind": 7, "label": "SliverPersistentHeaderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A leaf node in the focus tree that can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nTo request focus, find the [FocusScopeNode] for the current [BuildContext]\nand call the [FocusScopeNode.requestFocus] method:\n\n```dart\nFocusScope.of(context).requestFocus(focusNode);\n```\n\nIf your widget requests focus, be sure to call\n`FocusScope.of(context).reparentIfNeeded(focusNode);` in your `build`\nmethod to reparent your [FocusNode] if your widget moves from one\nlocation in the tree to another.\n\n## Lifetime\n\nFocus nodes are long-lived objects. For example, if a stateful widget has a\nfocusable child widget, it should create a [FocusNode] in the\n[State.initState] method, and [dispose] it in the [State.dispose] method,\nproviding the same [FocusNode] to the focusable child each time the\n[State.build] method is run. In particular, creating a [FocusNode] each time\n[State.build] is invoked will cause the focus to be lost each time the\nwidget is built.\n\nSee also:\n\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusNode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the scale of a transformed widget.\n\nHere's an illustration of the [ScaleTransition] widget, with it's [alignment]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "ScaleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegion", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Annotates a region of the layer tree with a value.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer pushed into the layer tree.", "detail": "", "kind": 7, "label": "AnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the physics of a [Scrollable] widget.\n\nFor example, determines how the [Scrollable] will behave when the user\nreaches the maximum scroll extent or when the user stops scrolling.\n\nWhen starting a physics [Simulation], the current scroll position and\nvelocity are used as the initial conditions for the particle in the\nsimulation. The movement of the particle in the simulation is then used to\ndetermine the scroll position for the widget.", "detail": "", "kind": 7, "label": "ScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the size of one of the descendants of the object receiving\nthis notification has changed, and that therefore any assumptions about that\nlayout are no longer valid.\n\nFor example, sent by the [SizeChangedLayoutNotifier] widget whenever that\nwidget changes size.\n\nThis notification can be used for triggering repaints, but if you use this\nnotification to trigger rebuilds or relayouts, you'll create a backwards\ndependency in the frame pipeline because [SizeChangedLayoutNotification]s\nare generated during layout, which is after the build phase and in the\nmiddle of the layout phase. This backwards dependency can lead to visual\ncorruption or lags.\n\nSee [LayoutChangedNotification] for additional discussion of layout\nnotifications such as this one.\n\nSee also:\n\n * [SizeChangedLayoutNotifier], which sends this notification.\n * [LayoutChangedNotification], of which this is a subclass.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "State", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The logic and internal state for a [StatefulWidget].\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\n[State] objects are created by the framework by calling the\n[StatefulWidget.createState] method when inflating a [StatefulWidget] to\ninsert it into the tree. Because a given [StatefulWidget] instance can be\ninflated multiple times (e.g., the widget is incorporated into the tree in\nmultiple places at once), there might be more than one [State] object\nassociated with a given [StatefulWidget] instance. Similarly, if a\n[StatefulWidget] is removed from the tree and later inserted in to the tree\nagain, the framework will call [StatefulWidget.createState] again to create\na fresh [State] object, simplifying the lifecycle of [State] objects.\n\n[State] objects have the following lifecycle:\n\n * The framework creates a [State] object by calling\n [StatefulWidget.createState].\n * The newly created [State] object is associated with a [BuildContext].\n This association is permanent: the [State] object will never change its\n [BuildContext]. However, the [BuildContext] itself can be moved around\n the tree along with its subtree. At this point, the [State] object is\n considered [mounted].\n * The framework calls [initState]. Subclasses of [State] should override\n [initState] to perform one-time initialization that depends on the\n [BuildContext] or the widget, which are available as the [context] and\n [widget] properties, respectively, when the [initState] method is\n called.\n * The framework calls [didChangeDependencies]. Subclasses of [State] should\n override [didChangeDependencies] to perform initialization involving\n [InheritedWidget]s. If [BuildContext.inheritFromWidgetOfExactType] is\n called, the [didChangeDependencies] method will be called again if the\n inherited widgets subsequently change or if the widget moves in the tree.\n * At this point, the [State] object is fully initialized and the framework\n might call its [build] method any number of times to obtain a\n description of the user interface for this subtree. [State] objects can\n spontaneously request to rebuild their subtree by callings their\n [setState] method, which indicates that some of their internal state\n has changed in a way that might impact the user interface in this\n subtree.\n * During this time, a parent widget might rebuild and request that this\n location in the tree update to display a new widget with the same\n [runtimeType] and [Widget.key]. When this happens, the framework will\n update the [widget] property to refer to the new widget and then call the\n [didUpdateWidget] method with the previous widget as an argument. [State]\n objects should override [didUpdateWidget] to respond to changes in their\n associated widget (e.g., to start implicit animations). The framework\n always calls [build] after calling [didUpdateWidget], which means any\n calls to [setState] in [didUpdateWidget] are redundant.\n * During development, if a hot reload occurs (whether initiated from the\n command line `flutter` tool by pressing `r`, or from an IDE), the\n [reassemble] method is called. This provides an opportunity to\n reinitialize any data that was prepared in the [initState] method.\n * If the subtree containing the [State] object is removed from the tree\n (e.g., because the parent built a widget with a different [runtimeType]\n or [Widget.key]), the framework calls the [deactivate] method. Subclasses\n should override this method to clean up any links between this object\n and other elements in the tree (e.g. if you have provided an ancestor\n with a pointer to a descendant's [RenderObject]).\n * At this point, the framework might reinsert this subtree into another\n part of the tree. If that happens, the framework will ensure that it\n calls [build] to give the [State] object a chance to adapt to its new\n location in the tree. If the framework does reinsert this subtree, it\n will do so before the end of the animation frame in which the subtree was\n removed from the tree. For this reason, [State] objects can defer\n releasing most resources until the framework calls their [dispose]\n method.\n * If the framework does not reinsert this subtree by the end of the current\n animation frame, the framework will call [dispose], which indicates that\n this [State] object will never build again. Subclasses should override\n this method to release any resources retained by this object (e.g.,\n stop any active animations).\n * After the framework calls [dispose], the [State] object is considered\n unmounted and the [mounted] property is false. It is an error to call\n [setState] at this point. This stage of the lifecycle is terminal: there\n is no way to remount a [State] object that has been disposed.\n\nSee also:\n\n * [StatefulWidget], where the current configuration of a [State] is hosted,\n and whose documentation has sample code for [State].\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "State" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls a scrollable widget.\n\nScroll controllers are typically stored as member variables in [State]\nobjects and are reused in each [State.build]. A single scroll controller can\nbe used to control multiple scrollable widgets, but some operations, such\nas reading the scroll [offset], require the controller to be used with a\nsingle scrollable widget.\n\nA scroll controller creates a [ScrollPosition] to manage the state specific\nto an individual [Scrollable] widget. To use a custom [ScrollPosition],\nsubclass [ScrollController] and override [createScrollPosition].\n\nA [ScrollController] is a [Listenable]. It notifies its listeners whenever\nany of the attached [ScrollPosition]s notify _their_ listeners (i.e.\nwhenever any of them scroll). It does not notify its listeners when the list\nof attached [ScrollPosition]s changes.\n\nTypically used with [ListView], [GridView], [CustomScrollView].\n\nSee also:\n\n * [ListView], [GridView], [CustomScrollView], which can be controlled by a\n [ScrollController].\n * [Scrollable], which is the lower-level widget that creates and associates\n [ScrollPosition] objects with [ScrollController] objects.\n * [PageController], which is an analogous object for controlling a\n [PageView].\n * [ScrollPosition], which manages the scroll offset for an individual\n scrolling widget.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSwitch", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style switch.\n\nUsed to toggle the on/off state of a single setting.\n\nThe switch itself does not maintain any state. Instead, when the state of\nthe switch changes, the widget calls the [onChanged] callback. Most widgets\nthat use a switch will listen for the [onChanged] callback and rebuild the\nswitch with a new [value] to update the visual appearance of the switch.\n\n\nThis sample shows how to use a [CupertinoSwitch] in a [ListTile]. The\n[MergeSemantics] is used to turn the entire [ListTile] into a single item\nfor accessibility tools.\n\n```dart\nMergeSemantics(\n child: ListTile(\n title: Text('Lights'),\n trailing: CupertinoSwitch(\n value: _lights,\n onChanged: (bool value) { setState(() { _lights = value; }); },\n ),\n onTap: () { setState(() { _lights = !_lights; }); },\n ),\n)\n```\n\nSee also:\n\n * [Switch], the material design equivalent.\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/switches/>", "detail": "", "kind": 7, "label": "CupertinoSwitch" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that uses a single child layout model.\n\nSee also:\n\n * [ListView], which is a [BoxScrollView] that uses a linear layout model.\n * [GridView], which is a [BoxScrollView] that uses a 2D layout model.\n * [CustomScrollView], which can combine multiple child layout models into a\n single scroll view.", "detail": "", "kind": 7, "label": "BoxScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The text style to apply to descendant [Text] widgets without explicit style.", "detail": "", "kind": 7, "label": "DefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints a [Banner].", "detail": "", "kind": 7, "label": "BannerPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget with a preferred size.\n\nThis widget does not impose any constraints on its child, and it doesn't\naffect the child's layout in any way. It just advertises a preferred size\nwhich can be used by the parent.\n\nSee also:\n\n * [AppBar.bottom] and [Scaffold.appBar], which require preferred size widgets.\n * [PreferredSizeWidget], the interface which this widget implements to expose\n its preferred size.\n * [AppBar] and [TabBar], which implement PreferredSizeWidget.", "detail": "", "kind": 7, "label": "PreferredSize" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [InheritedWidget] that's intended to be used as the base class for\nmodels whose dependents may only depend on one part or \"aspect\" of the\noverall model.\n\nAn inherited widget's dependents are unconditionally rebuilt when the\ninherited widget changes per [InheritedWidget.updateShouldNotify].\nThis widget is similar except that dependents aren't rebuilt\nunconditionally.\n\nWidgets that depend on an [InheritedModel] qualify their dependence\nwith a value that indicates what \"aspect\" of the model they depend\non. When the model is rebuilt, dependents will also be rebuilt, but\nonly if there was a change in the model that corresponds to the aspect\nthey provided.\n\nThe type parameter `T` is the type of the model aspect objects.\n\n\nWidgets create a dependency on an [InheritedModel] with a static method:\n[InheritedModel.inheritFrom]. This method's `context` parameter\ndefines the subtree that will be rebuilt when the model changes.\nTypically the `inheritFrom` method is called from a model-specific\nstatic `of` method. For example:\n\n```dart\nclass MyModel extends InheritedModel<String> {\n // ...\n static MyModel of(BuildContext context, String aspect) {\n return InheritedModel.inheritFrom<MyModel>(context, aspect: aspect);\n }\n}\n```\n\nCalling `MyModel.of(context, 'foo')` means that `context` should only\nbe rebuilt when the `foo` aspect of `MyModel` changes. If the aspect\nis null, then the model supports all aspects.\n\nWhen the inherited model is rebuilt the [updateShouldNotify] and\n[updateShouldNotifyDependent] methods are used to decide what\nshould be rebuilt. If [updateShouldNotify] returns true, then the\ninherited model's [updateShouldNotifyDependent] method is tested for\neach dependent and the set of aspect objects it depends on.\nThe [updateShouldNotifyDependent] method must compare the set of aspect\ndependencies with the changes in the model itself.\n\nFor example:\n\n```dart\nclass ABModel extends InheritedModel<String> {\n ABModel({ this.a, this.b, Widget child }) : super(child: child);\n\n final int a;\n final int b;\n\n @override\n bool updateShouldNotify(ABModel old) {\n return a != old.a || b != old.b;\n }\n\n @override\n bool updateShouldNotifyDependent(ABModel old, Set<String> aspects) {\n return (a != old.a && aspects.contains('a'))\n || (b != old.b && aspects.contains('b'))\n }\n\n // ...\n}\n```\n\nIn the previous example the dependencies checked by\n[updateShouldNotifyDependent] are just the aspect strings passed to\n`inheritFromWidgetOfExactType`. They're represented as a [Set] because\none Widget can depend on more than one aspect of the model.\nIf a widget depends on the model but doesn't specify an aspect,\nthen changes in the model will cause the widget to be rebuilt\nunconditionally.\n\nSee also:\n\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.", "detail": "", "kind": 7, "label": "InheritedModel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTimerPicker", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A countdown timer picker in iOS style.\n\nThis picker shows a countdown duration with hour, minute and second spinners.\nThe duration is bound between 0 and 23 hours 59 minutes 59 seconds.\n\nThere are several modes of the timer picker listed in [CupertinoTimerPickerMode].\n\nSee also:\n\n * [CupertinoDatePicker], the class that implements different display modes\n of the iOS-style date picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 7, "label": "CupertinoTimerPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that displays widgets in the [Navigator]'s [Overlay].", "detail": "", "kind": 7, "label": "OverlayRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that establishes a page storage bucket for this widget subtree.", "detail": "", "kind": 7, "label": "PageStorage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPopupSurface", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Rounded rectangle surface that looks like an iOS popup surface, e.g., alert dialog\nand action sheet.\n\nA [CupertinoPopupSurface] can be configured to paint or not paint a white\ncolor on top of its blurred area. Typical usage should paint white on top\nof the blur. However, the white paint can be disabled for the purpose of\nrendering divider gaps for a more complicated layout, e.g., [CupertinoAlertDialog].\nAdditionally, the white paint can be disabled to render a blurred rounded\nrectangle without any color (similar to iOS's volume control popup).\n\nSee also:\n\n * [CupertinoAlertDialog], which is a dialog with a title, content, and\n actions.\n * <https://developer.apple.com/ios/human-interface-guidelines/views/alerts/>", "detail": "", "kind": 7, "label": "CupertinoPopupSurface" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPadding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Padding] which automatically transitions the\nindentation over a given duration whenever the given inset changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.", "detail": "", "kind": 7, "label": "AnimatedPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for localized resource values for the lowest levels of the Flutter\nframework.\n\nIn particular, this maps locales to a specific [Directionality] using the\n[textDirection] property.\n\nSee also:\n\n * [DefaultWidgetsLocalizations], which implements this interface and\n supports a variety of locales.", "detail": "", "kind": 7, "label": "WidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Orientation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether in portrait or landscape.", "detail": "", "kind": 13, "label": "Orientation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers.\n\n`T` is the type of gesture recognizer this class manages.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal group of cells in a [Table].\n\nEvery row in a table must have the same number of children.\n\nThe alignment of individual cells in a row can be controlled using a\n[TableCell].", "detail": "", "kind": 7, "label": "TableRow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollUpdateNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has changed its scroll position.\n\nSee also:\n\n * [OverscrollNotification], which indicates that a [Scrollable] widget\n has not changed its scroll position because the change would have caused\n its scroll position to go outside its scroll bounds.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollUpdateNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that renders an exception's message.\n\nThis widget is used when a build method fails, to help with determining\nwhere the problem lies. Exceptions are also logged to the console, which you\ncan read using `flutter logs`. The console will also include additional\ninformation such as the stack trace for the exception.", "detail": "", "kind": 7, "label": "ErrorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSegmentedControl", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style segmented control.\n\nDisplays the widgets provided in the [Map] of [children] in a\nhorizontal list. Used to select between a number of mutually exclusive\noptions. When one option in the segmented control is selected, the other\noptions in the segmented control cease to be selected.\n\nA segmented control can feature any [Widget] as one of the values in its\n[Map] of [children]. The type T is the type of the keys used\nto identify each widget and determine which widget is selected. As\nrequired by the [Map] class, keys must be of consistent types\nand must be comparable. The ordering of the keys will determine the order\nof the widgets in the segmented control.\n\nWhen the state of the segmented control changes, the widget calls the\n[onValueChanged] callback. The map key associated with the newly selected\nwidget is returned in the [onValueChanged] callback. Typically, widgets\nthat use a segmented control will listen for the [onValueChanged] callback\nand rebuild the segmented control with a new [groupValue] to update which\noption is currently selected.\n\nThe [children] will be displayed in the order of the keys in the [Map].\nThe height of the segmented control is determined by the height of the\ntallest widget provided as a value in the [Map] of [children].\nThe width of each child in the segmented control will be equal to the width\nof widest child, unless the combined width of the children is wider than\nthe available horizontal space. In this case, the available horizontal space\nis divided by the number of provided [children] to determine the width of\neach widget. The selection area for each of the widgets in the [Map] of\n[children] will then be expanded to fill the calculated space, so each\nwidget will appear to have the same dimensions.\n\nA segmented control may optionally be created with custom colors. The\n[unselectedColor], [selectedColor], [borderColor], and [pressedColor]\narguments can be used to override the segmented control's colors from\n[CupertinoTheme] defaults.\n\nSee also:\n\n * <https://developer.apple.com/design/human-interface-guidelines/ios/controls/segmented-controls/>", "detail": "", "kind": 7, "label": "CupertinoSegmentedControl" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flexible", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Row], [Column], or [Flex] flexes.\n\nUsing a [Flexible] widget gives a child of a [Row], [Column], or [Flex]\nthe flexibility to expand to fill the available space in the main axis\n(e.g., horizontally for a [Row] or vertically for a [Column]), but, unlike\n[Expanded], [Flexible] does not require the child to fill the available\nspace.\n\nA [Flexible] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Flexible] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\nSee also:\n\n * [Expanded], which forces the child to expand to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flexible" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [Viewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "NestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Row", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a horizontal array.\n\nTo cause a child to expand to fill the available horizontal space, wrap the\nchild in an [Expanded] widget.\n\nThe [Row] widget does not scroll (and in general it is considered an error\nto have more children in a [Row] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a vertical variant, see [Column].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example divides the available space into three (horizontally), and\nplaces text centered in the first two cells and the Flutter logo centered in\nthe third:\n\n```dart\nRow(\n children: <Widget>[\n Expanded(\n child: Text('Deliver features faster', textAlign: TextAlign.center),\n ),\n Expanded(\n child: Text('Craft beautiful UIs', textAlign: TextAlign.center),\n ),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\n## Troubleshooting\n\n### Why does my row have a yellow and black warning stripe?\n\nIf the non-flexible contents of the row (those that are not wrapped in\n[Expanded] or [Flexible] widgets) are together wider than the row itself,\nthen the row is said to have overflowed. When a row overflows, the row does\nnot have any remaining space to share between its [Expanded] and [Flexible]\nchildren. The row reports this by drawing a yellow and black striped\nwarning box on the edge that is overflowing. If there is room on the outside\nof the row, the amount of overflow is printed in red lettering.\n\n\n#### Story time\n\nSuppose, for instance, that you had this code:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nThe row first asks its first child, the [FlutterLogo], to lay out, at\nwhatever size the logo would like. The logo is friendly and happily decides\nto be 24 pixels to a side. This leaves lots of room for the next child. The\nrow then asks that next child, the text, to lay out, at whatever size it\nthinks is best.\n\nAt this point, the text, not knowing how wide is too wide, says \"Ok, I will\nbe thiiiiiiiiiiiiiiiiiiiis wide.\", and goes well beyond the space that the\nrow has available, not wrapping. The row responds, \"That's not fair, now I\nhave no more room available for my other children!\", and gets angry and\nsprouts a yellow and black strip.\n\nThe fix is to wrap the second child in an [Expanded] widget, which tells the\nrow that the child should be given the remaining room:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Expanded(\n child: Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n ),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nNow, the row first asks the logo to lay out, and then asks the _icon_ to lay\nout. The [Icon], like the logo, is happy to take on a reasonable size (also\n24 pixels, not coincidentally, since both [FlutterLogo] and [Icon] honor the\nambient [IconTheme]). This leaves some room left over, and now the row tells\nthe text exactly how wide to be: the exact width of the remaining space. The\ntext, now happy to comply to a reasonable request, wraps the text within\nthat width, and you end up with a paragraph split over several lines.\n\n## Layout algorithm\n\n_This section describes how a [Row] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Row] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded horizontal constraints and the incoming\n vertical constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight vertical constraints that\n match the incoming max height.\n2. Divide the remaining horizontal space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of horizontal space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same vertical constraints\n as in step 1, but instead of using unbounded horizontal constraints, use\n horizontal constraints based on the amount of space allocated in step 2.\n Children with [Flexible.fit] properties that are [FlexFit.tight] are\n given tight constraints (i.e., forced to fill the allocated space), and\n children with [Flexible.fit] properties that are [FlexFit.loose] are\n given loose constraints (i.e., not forced to fill the allocated space).\n4. The height of the [Row] is the maximum height of the children (which will\n always satisfy the incoming vertical constraints).\n5. The width of the [Row] is determined by the [mainAxisSize] property. If\n the [mainAxisSize] property is [MainAxisSize.max], then the width of the\n [Row] is the max width of the incoming constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the width of the [Row] is the sum\n of widths of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any horizontal\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Column], for a vertical equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may by sized smaller (leaving some remaining room unused).\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Row" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A snapping physics that always lands directly on items instead of anywhere\nwithin the scroll extent.\n\nBehaves similarly to a slot machine wheel except the ballistics simulation\nnever overshoots and rolls back within a single item if it's to settle on\nthat item.\n\nMust be used with a scrollable that uses a [FixedExtentScrollController].\n\nDefers back to the parent beyond the scroll extents.", "detail": "", "kind": 7, "label": "FixedExtentScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedOpacity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Opacity] which automatically transitions the child's\nopacity over a given duration whenever the given opacity changes.\n\nAnimating an opacity is relatively expensive because it requires painting\nthe child into an intermediate buffer.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\n\n```dart\nclass LogoFade extends StatefulWidget {\n @override\n createState() => LogoFadeState();\n}\n\nclass LogoFadeState extends State<LogoFade> {\n double opacityLevel = 1.0;\n\n void _changeOpacity() {\n setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedOpacity(\n opacity: opacityLevel,\n duration: Duration(seconds: 3),\n child: FlutterLogo(),\n ),\n RaisedButton(\n child: Text('Fade Logo'),\n onPressed: _changeOpacity,\n ),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [FadeTransition], an explicitly animated version of this widget, where\n an [Animation] is provided by the caller instead of being built in.", "detail": "", "kind": 7, "label": "AnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboardListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls a callback whenever the user presses or releases a key\non a keyboard.\n\nA [RawKeyboardListener] is useful for listening to raw key events and\nhardware buttons that are represented as keys. Typically used by games and\nother apps that use keyboards for purposes other than text entry.\n\nFor text entry, consider using a [EditableText], which integrates with\non-screen keyboards and input method editors (IMEs).\n\nSee also:\n\n * [EditableText], which should be used instead of this widget for text\n entry.", "detail": "", "kind": 7, "label": "RawKeyboardListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place in an [Overlay] that can contain a widget.\n\nOverlay entries are inserted into an [Overlay] using the\n[OverlayState.insert] or [OverlayState.insertAll] functions. To find the\nclosest enclosing overlay for a given [BuildContext], use the [Overlay.of]\nfunction.\n\nAn overlay entry can be in at most one overlay at a time. To remove an entry\nfrom its overlay, call the [remove] function on the overlay entry.\n\nBecause an [Overlay] uses a [Stack] layout, overlay entries can use\n[Positioned] and [AnimatedPositioned] to position themselves within the\noverlay.\n\nFor example, [Draggable] uses an [OverlayEntry] to show the drag avatar that\nfollows the user's finger across the screen after the drag begins. Using the\noverlay to display the drag avatar lets the avatar float over the other\nwidgets in the app. As the user's finger moves, draggable calls\n[markNeedsBuild] on the overlay entry to cause it to rebuild. It its build,\nthe entry includes a [Positioned] with its top and left property set to\nposition the drag avatar near the user's finger. When the drag is over,\n[Draggable] removes the entry from the overlay to remove the drag avatar\nfrom view.\n\nBy default, if there is an entirely [opaque] entry over this one, then this\none will not be included in the widget tree (in particular, stateful widgets\nwithin the overlay entry will not be instantiated). To ensure that your\noverlay entry is still built even if it is not visible, set [maintainState]\nto true. This is more expensive, so should be done with care. In particular,\nif widgets in an overlay entry with [maintainState] set to true repeatedly\ncall [State.setState], the user's battery will be drained unnecessarily.\n\nSee also:\n\n * [Overlay]\n * [OverlayState]\n * [WidgetsApp]\n * [MaterialApp]", "detail": "", "kind": 7, "label": "OverlayEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HoldScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing but can be released to resume\nnormal idle behavior.\n\nThis is used while the user is touching the [Scrollable] but before the\ntouch has become a [Drag].\n\nFor the purposes of [ScrollNotification]s, this activity does not constitute\nscrolling, and does not prevent the user from interacting with the contents\nof the [Scrollable] (unlike when a drag has begun or there is a scroll\nanimation underway).", "detail": "", "kind": 7, "label": "HoldScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenableBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget whose content stays synced with a [ValueListenable].\n\nGiven a [ValueListenable<T>] and a [builder] which builds widgets from\nconcrete values of `T`, this class will automatically register itself as a\nlistener of the [ValueListenable] and call the [builder] with updated values\nwhen the value changes.\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nvalue of the [ValueListenable], it's more efficient to build that subtree\nonce instead of rebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\n[ValueListenableBuilder] will pass it back to your [builder] function so\nthat you can incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis sample shows how you could use a [ValueListenableBuilder] instead of\nsetting state on the whole [Scaffold] in the default `flutter create` app.\n\n```dart\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State<MyHomePage> {\n final ValueNotifier<int> _counter = ValueNotifier<int>(0);\n final Widget goodJob = const Text('Good job!');\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title)\n ),\n body: Center(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pushed the button this many times:'),\n ValueListenableBuilder(\n builder: (BuildContext context, int value, Widget child) {\n // This builder will only get called when the _counter\n // is updated.\n return Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: <Widget>[\n Text('$value'),\n child,\n ],\n );\n },\n valueListenable: _counter,\n // The child parameter is most helpful if the child is\n // expensive to build and does not depend on the value from\n // the notifier.\n child: goodJob,\n )\n ],\n ),\n ),\n floatingActionButton: FloatingActionButton(\n child: Icon(Icons.plus_one),\n onPressed: () => _counter.value += 1,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedBuilder], which also triggers rebuilds from a [Listenable]\n without passing back a specific value from a [ValueListenable].\n * [NotificationListener], which lets you rebuild based on [Notification]\n coming from its descendant widgets rather than a [ValueListenable] that\n you have a direct reference to.\n * [StreamBuilder], where a builder can depend on a [Stream] rather than\n a [ValueListenable] for more advanced use cases.", "detail": "", "kind": 7, "label": "ValueListenableBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route with entrance and exit transitions.", "detail": "", "kind": 7, "label": "TransitionRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePageBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's primary contents.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildPage] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) → Widget", "kind": 7, "label": "RoutePageBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of a method that provides a [BuildContext] and\n[ScrollController] for building a widget that may overflow the draggable\n[Axis] of the containing [DraggableScrollSheet].\n\nUsers should apply the [scrollController] to a [ScrollView] subclass, such\nas a [SingleChildScrollView], [ListView] or [GridView], to have the whole\nsheet be draggable.", "detail": "(BuildContext context, ScrollController scrollController) → Widget", "kind": 7, "label": "ScrollableWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that builds a widget given an [Orientation].\n\nUsed by [OrientationBuilder.builder].", "detail": "(BuildContext context, Orientation orientation) → Widget", "kind": 7, "label": "OrientationWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the constructor that is called when an error occurs while\nbuilding a widget.\n\nThe argument provides information regarding the cause of the error.\n\nSee also:\n\n * [ErrorWidget.builder], which can be set to override the default\n [ErrorWidget] builder.\n * [FlutterError.reportError], which is typically called with the same\n [FlutterErrorDetails] object immediately prior to [ErrorWidget.builder]\n being called.", "detail": "(FlutterErrorDetails details) → Widget", "kind": 7, "label": "ErrorWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the localized resource values used by the Cupertino widgets.\n\nSee also:\n\n * [DefaultCupertinoLocalizations], the default, English-only, implementation\n of this interface.", "detail": "", "kind": 7, "label": "CupertinoLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes how [Scrollable] widgets should behave.\n\nUsed by [ScrollConfiguration] to configure the [Scrollable] widgets in a\nsubtree.", "detail": "", "kind": 7, "label": "ScrollBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetAccept", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for causing a [DragTarget] to accept the given data.\n\nUsed by [DragTarget.onAccept].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has a child widget provided to it, instead of building a new\nwidget.\n\nUseful as a base class for other widgets, such as [InheritedWidget] and\n[ParentDataWidget].\n\nSee also:\n\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [ParentDataWidget], for widgets that populate the\n [RenderObject.parentData] slot of their child's [RenderObject] to\n configure the parent widget's layout.\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "ProxyWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleTickerProviderStateMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides a single [Ticker] that is configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create the [AnimationController] in a [State] that only uses a single\n[AnimationController], mix in this class, then pass `vsync: this`\nto the animation controller constructor.\n\nThis mixin only supports vending a single ticker. If you might have multiple\n[AnimationController] objects over the lifetime of the [State], use a full\n[TickerProviderStateMixin] instead.", "detail": "", "kind": 7, "label": "SingleTickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NeverScrollableScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that does not allow the user to scroll.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "NeverScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectionChangedCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the selection change callback used by\n[WidgetInspectorService.selectionChangedCallback].", "detail": "() → void", "kind": 7, "label": "InspectorSelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcher", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that by default does a [FadeTransition] between a new widget and\nthe widget previously set on the [AnimatedSwitcher] as a child.\n\nIf they are swapped fast enough (i.e. before [duration] elapses), more than\none previous child can exist and be transitioning out while the newest one\nis transitioning in.\n\nIf the \"new\" child is the same widget type and key as the \"old\" child, but\nwith different parameters, then [AnimatedSwitcher] will *not* do a\ntransition between them, since as far as the framework is concerned, they\nare the same widget and the existing widget can be updated with the new\nparameters. To force the transition to occur, set a [Key] on each child\nwidget that you wish to be considered unique (typically a [ValueKey] on the\nwidget data that distinguishes this child from the others).\n\nThe same key can be used for a new child as was used for an already-outgoing\nchild; the two will not be considered related. (For example, if a progress\nindicator with key A is first shown, then an image with key B, then another\nprogress indicator with key A again, all in rapid succession, then the old\nprogress indicator and the image will be fading out while a new progress\nindicator is fading in.)\n\n\n```dart\nclass ClickCounter extends StatefulWidget {\n const ClickCounter({Key key}) : super(key: key);\n\n @override\n _ClickCounterState createState() => _ClickCounterState();\n}\n\nclass _ClickCounterState extends State<ClickCounter> {\n int _count = 0;\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Material(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n AnimatedSwitcher(\n duration: const Duration(milliseconds: 500),\n transitionBuilder: (Widget child, Animation<double> animation) {\n return ScaleTransition(child: child, scale: animation);\n },\n child: Text(\n '$_count',\n // This key causes the AnimatedSwitcher to interpret this as a \"new\"\n // child each time the count changes, so that it will begin its animation\n // when the count changes.\n key: ValueKey<int>(_count),\n style: Theme.of(context).textTheme.display1,\n ),\n ),\n RaisedButton(\n child: const Text('Increment'),\n onPressed: () {\n setState(() {\n _count += 1;\n });\n },\n ),\n ],\n ),\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedCrossFade], which only fades between two children, but also\n interpolates their sizes, and is reversible.\n * [FadeTransition] which [AnimatedSwitcher] uses to perform the transition.", "detail": "", "kind": 7, "label": "AnimatedSwitcher" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPrototypeExtentList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places its box children in a linear array and constrains them\nto have the same extent as a prototype item along the main axis.\n\n[SliverPrototypeExtentList] arranges its children in a line along\nthe main axis starting at offset zero and without gaps. Each child is\nconstrained to the same extent as the [prototypeItem] along the main axis\nand the [SliverConstraints.crossAxisExtent] along the cross axis.\n\n[SliverPrototypeExtentList] is more efficient than [SliverList] because\n[SliverPrototypeExtentList] does not need to lay out its children to obtain\ntheir extent along the main axis. It's a little more flexible than\n[SliverFixedExtentList] because there's no need to determine the appropriate\nitem extent in pixels.\n\nSee also:\n\n * [SliverFixedExtentList], whose itemExtent is a pixel value.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverPrototypeExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivityDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A backend for a [ScrollActivity].\n\nUsed by subclasses of [ScrollActivity] to manipulate the scroll view that\nthey are acting upon.\n\nSee also:\n\n * [ScrollActivity], which uses this class as its delegate.\n * [ScrollPositionWithSingleContext], the main implementation of this interface.", "detail": "", "kind": 7, "label": "ScrollActivityDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rectangle.\n\nBy default, [ClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].\n\n[ClipRect] is commonly used with these widgets, which commonly paint outside\ntheir bounds:\n\n * [CustomPaint]\n * [CustomSingleChildLayout]\n * [CustomMultiChildLayout]\n * [Align] and [Center] (e.g., if [Align.widthFactor] or\n [Align.heightFactor] is less than 1.0).\n * [OverflowBox]\n * [SizedOverflowBox]\n\n\nFor example, by combining a [ClipRect] with an [Align], one can show just\nthe top half of an [Image]:\n\n```dart\nClipRect(\n child: Align(\n alignment: Alignment.topCenter,\n heightFactor: 0.5,\n child: Image.network(userAvatarUrl),\n ),\n)\n```\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutId", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metadata for identifying children in a [CustomMultiChildLayout].\n\nThe [MultiChildLayoutDelegate.hasChild],\n[MultiChildLayoutDelegate.layoutChild], and\n[MultiChildLayoutDelegate.positionChild] methods use these identifiers.", "detail": "", "kind": 7, "label": "LayoutId" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Placeholder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a box that represents where other widgets will one day\nbe added.\n\nThis widget is useful during development to indicate that the interface is\nnot yet complete.\n\nBy default, the placeholder is sized to fit its container. If the\nplaceholder is in an unbounded space, it will size itself according to the\ngiven [fallbackWidth] and [fallbackHeight].", "detail": "", "kind": 7, "label": "Placeholder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RebuildDirtyWidgetCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugOnRebuildDirtyWidget] implementations.", "detail": "(Element e, bool builtOnce) → void", "kind": 7, "label": "RebuildDirtyWidgetCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConfirmDismissCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to give the application an opportunity to\nconfirm or veto a dismiss gesture.\n\nUsed by [Dismissible.confirmDismiss].", "detail": "(DismissDirection direction) → Future<bool>", "kind": 7, "label": "ConfirmDismissCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a multiple box children that each fill the viewport.\n\n[SliverFillViewport] places its children in a linear array along the main\naxis. Each child is sized to fill the viewport, both in the main and cross\naxis.\n\nSee also:\n\n * [SliverFixedExtentList], which has a configurable\n [SliverFixedExtentList.itemExtent].\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay show two time series. The first shows how much time was required\non this thread to produce each frame. The second shows how much time was\nrequired on the GPU thread to produce each frame. Ideally, both these values\nwould be less than the total frame budget for the hardware on which the app\nis running. For example, if the hardware has a screen that updates at 60 Hz,\neach thread should ideally spend less than 16ms producing each frame. This\nideal condition is indicated by a green vertical line for each thread.\nOtherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "PerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildListDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using an explicit list.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[SliverChildBuilderDelegate] or by subclassing [SliverChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.\n\nThe widgets in the given [children] list are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\nSee [SliverChildBuilderDelegate] for sample code using\n`semanticIndexOffset` and `semanticIndexCallback`.\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.", "detail": "", "kind": 7, "label": "SliverChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling view inside of which can be nested other scrolling views, with\ntheir scroll positions being intrinsically linked.\n\nThe most common use case for this widget is a scrollable view with a\nflexible [SliverAppBar] containing a [TabBar] in the header (build by\n[headerSliverBuilder], and with a [TabBarView] in the [body], such that the\nscrollable view's contents vary based on which tab is visible.\n\n## Motivation\n\nIn a normal [ScrollView], there is one set of slivers (the components of the\nscrolling view). If one of those slivers hosted a [TabBarView] which scrolls\nin the opposite direction (e.g. allowing the user to swipe horizontally\nbetween the pages represented by the tabs, while the list scrolls\nvertically), then any list inside that [TabBarView] would not interact with\nthe outer [ScrollView]. For example, flinging the inner list to scroll to\nthe top would not cause a collapsed [SliverAppBar] in the outer [ScrollView]\nto expand.\n\n[NestedScrollView] solves this problem by providing custom\n[ScrollController]s for the outer [ScrollView] and the inner [ScrollView]s\n(those inside the [TabBarView], hooking them together so that they appear,\nto the user, as one coherent scroll view.\n\n\nThis example shows a [NestedScrollView] whose header is the combination of a\n[TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a\n[SliverOverlapAbsorber]/[SliverOverlapInjector] pair to make the inner lists\nalign correctly, and it uses [SafeArea] to avoid any horizontal disturbances\n(e.g. the \"notch\" on iOS when the phone is horizontal). In addition,\n[PageStorageKey]s are used to remember the scroll position of each tab's\nlist.\n\nIn the example below, `_tabs` is a list of strings, one for each tab, giving\nthe tab labels. In a real application, it would be replaced by the actual\ndata model being represented.\n\n```dart\nDefaultTabController(\n length: _tabs.length, // This is the number of tabs.\n child: NestedScrollView(\n headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {\n // These are the slivers that show up in the \"outer\" scroll view.\n return <Widget>[\n SliverOverlapAbsorber(\n // This widget takes the overlapping behavior of the SliverAppBar,\n // and redirects it to the SliverOverlapInjector below. If it is\n // missing, then it is possible for the nested \"inner\" scroll view\n // below to end up under the SliverAppBar even when the inner\n // scroll view thinks it has not been scrolled.\n // This is not necessary if the \"headerSliverBuilder\" only builds\n // widgets that do not overlap the next sliver.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n child: SliverAppBar(\n title: const Text('Books'), // This is the title in the app bar.\n pinned: true,\n expandedHeight: 150.0,\n // The \"forceElevated\" property causes the SliverAppBar to show\n // a shadow. The \"innerBoxIsScrolled\" parameter is true when the\n // inner scroll view is scrolled beyond its \"zero\" point, i.e.\n // when it appears to be scrolled below the SliverAppBar.\n // Without this, there are cases where the shadow would appear\n // or not appear inappropriately, because the SliverAppBar is\n // not actually aware of the precise position of the inner\n // scroll views.\n forceElevated: innerBoxIsScrolled,\n bottom: TabBar(\n // These are the widgets to put in each tab in the tab bar.\n tabs: _tabs.map((String name) => Tab(text: name)).toList(),\n ),\n ),\n ),\n ];\n },\n body: TabBarView(\n // These are the contents of the tab views, below the tabs.\n children: _tabs.map((String name) {\n return SafeArea(\n top: false,\n bottom: false,\n child: Builder(\n // This Builder is needed to provide a BuildContext that is \"inside\"\n // the NestedScrollView, so that sliverOverlapAbsorberHandleFor() can\n // find the NestedScrollView.\n builder: (BuildContext context) {\n return CustomScrollView(\n // The \"controller\" and \"primary\" members should be left\n // unset, so that the NestedScrollView can control this\n // inner scroll view.\n // If the \"controller\" property is set, then this scroll\n // view will not be associated with the NestedScrollView.\n // The PageStorageKey should be unique to this ScrollView;\n // it allows the list to remember its scroll position when\n // the tab view is not on the screen.\n key: PageStorageKey<String>(name),\n slivers: <Widget>[\n SliverOverlapInjector(\n // This is the flip side of the SliverOverlapAbsorber above.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n ),\n SliverPadding(\n padding: const EdgeInsets.all(8.0),\n // In this example, the inner scroll view has\n // fixed-height list items, hence the use of\n // SliverFixedExtentList. However, one could use any\n // sliver widget here, e.g. SliverList or SliverGrid.\n sliver: SliverFixedExtentList(\n // The items in this example are fixed to 48 pixels\n // high. This matches the Material Design spec for\n // ListTile widgets.\n itemExtent: 48.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n // This builder is called for each child.\n // In this example, we just number each list item.\n return ListTile(\n title: Text('Item $index'),\n );\n },\n // The childCount of the SliverChildBuilderDelegate\n // specifies how many children this inner list\n // has. In this example, each tab has a list of\n // exactly 30 items, but this is arbitrary.\n childCount: 30,\n ),\n ),\n ),\n ],\n );\n },\n ),\n );\n }).toList(),\n ),\n ),\n)\n```", "detail": "", "kind": 7, "label": "NestedScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshControlIndicatorBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a builder that can create a different widget to show in the\nrefresh indicator space depending on the current state of the refresh\ncontrol and the space available.\n\nThe `refreshTriggerPullDistance` and `refreshIndicatorExtent` parameters are\nthe same values passed into the [CupertinoSliverRefreshControl].\n\nThe `pulledExtent` parameter is the currently available space either from\noverscrolling or as held by the sliver during refresh.", "detail": "(BuildContext context, RefreshIndicatorMode refreshState, double pulledExtent, double refreshTriggerPullDistance, double refreshIndicatorExtent) → Widget", "kind": 7, "label": "RefreshControlIndicatorBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list that works page by page.\n\nEach child of a page view is forced to be the same size as the viewport.\n\nYou can use a [PageController] to control which page is visible in the view.\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nThe [PageController] can also be used to control the\n[PageController.initialPage], which determines which page is shown when the\n[PageView] is first constructed, and the [PageController.viewportFraction],\nwhich determines the size of the pages as a fraction of the viewport size.\n\n\nSee also:\n\n * [PageController], which controls which page is visible in the view.\n * [SingleChildScrollView], when you need to make a single child scrollable.\n * [ListView], for a scrollable list of boxes.\n * [GridView], for a scrollable grid of boxes.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "PageView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBoxTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DecoratedBox] that animates the different properties\nof its [Decoration].\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [DecoratedBox], which also draws a [Decoration] but is not animated.\n * [AnimatedContainer], a more full-featured container that also animates on\n decoration using an internal animation.", "detail": "", "kind": 7, "label": "DecoratedBoxTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Decoration]s.\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[Decoration.lerp].\n\nFor [ShapeDecoration]s which know how to [ShapeDecoration.lerpTo] or\n[ShapeDecoration.lerpFrom] each other, this will produce a smooth\ninterpolation between decorations.\n\nSee also:\n\n * [Tween] for a discussion on how to use interpolation objects.\n * [ShapeDecoration], [RoundedRectangleBorder], [CircleBorder], and\n [StadiumBorder] for examples of shape borders that can be smoothly\n interpolated.\n * [BoxBorder] for a border that can only be smoothly interpolated between other\n [BoxBorder]s.", "detail": "", "kind": 7, "label": "DecorationTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [RenderObjectWidget] as its configuration.\n\n[RenderObjectElement] objects have an associated [RenderObject] widget in\nthe render tree, which handles concrete operations like laying out,\npainting, and hit testing.\n\nContrast with [ComponentElement].\n\nFor details on the lifecycle of an element, see the discussion at [Element].\n\n## Writing a RenderObjectElement subclass\n\nThere are three common child models used by most [RenderObject]s:\n\n* Leaf render objects, with no children: The [LeafRenderObjectElement] class\n handles this case.\n\n* A single child: The [SingleChildRenderObjectElement] class handles this\n case.\n\n* A linked list of children: The [MultiChildRenderObjectElement] class\n handles this case.\n\nSometimes, however, a render object's child model is more complicated. Maybe\nit has a two-dimensional array of children. Maybe it constructs children on\ndemand. Maybe it features multiple lists. In such situations, the\ncorresponding [Element] for the [Widget] that configures that [RenderObject]\nwill be a new subclass of [RenderObjectElement].\n\nSuch a subclass is responsible for managing children, specifically the\n[Element] children of this object, and the [RenderObject] children of its\ncorresponding [RenderObject].\n\n### Specializing the getters\n\n[RenderObjectElement] objects spend much of their time acting as\nintermediaries between their [widget] and their [renderObject]. To make this\nmore tractable, most [RenderObjectElement] subclasses override these getters\nso that they return the specific type that the element expects, e.g.:\n\n```dart\nclass FooElement extends RenderObjectElement {\n\n @override\n Foo get widget => super.widget;\n\n @override\n RenderFoo get renderObject => super.renderObject;\n\n // ...\n}\n```\n\n### Slots\n\nEach child [Element] corresponds to a [RenderObject] which should be\nattached to this element's render object as a child.\n\nHowever, the immediate children of the element may not be the ones that\neventually produce the actual [RenderObject] that they correspond to. For\nexample a [StatelessElement] (the element of a [StatelessWidget]) simply\ncorresponds to whatever [RenderObject] its child (the element returned by\nits [StatelessWidget.build] method) corresponds to.\n\nEach child is therefore assigned a _slot_ token. This is an identifier whose\nmeaning is private to this [RenderObjectElement] node. When the descendant\nthat finally produces the [RenderObject] is ready to attach it to this\nnode's render object, it passes that slot token back to this node, and that\nallows this node to cheaply identify where to put the child render object\nrelative to the others in the parent render object.\n\n### Updating children\n\nEarly in the lifecycle of an element, the framework calls the [mount]\nmethod. This method should call [updateChild] for each child, passing in\nthe widget for that child, and the slot for that child, thus obtaining a\nlist of child [Element]s.\n\nSubsequently, the framework will call the [update] method. In this method,\nthe [RenderObjectElement] should call [updateChild] for each child, passing\nin the [Element] that was obtained during [mount] or the last time [update]\nwas run (whichever happened most recently), the new [Widget], and the slot.\nThis provides the object with a new list of [Element] objects.\n\nWhere possible, the [update] method should attempt to map the elements from\nthe last pass to the widgets in the new pass. For example, if one of the\nelements from the last pass was configured with a particular [Key], and one\nof the widgets in this new pass has that same key, they should be paired up,\nand the old element should be updated with the widget (and the slot\ncorresponding to the new widget's new position, also). The [updateChildren]\nmethod may be useful in this regard.\n\n[updateChild] should be called for children in their logical order. The\norder can matter; for example, if two of the children use [PageStorage]'s\n`writeState` feature in their build method (and neither has a [Widget.key]),\nthen the state written by the first will be overwritten by the second.\n\n#### Dynamically determining the children during the build phase\n\nThe child widgets need not necessarily come from this element's widget\nverbatim. They could be generated dynamically from a callback, or generated\nin other more creative ways.\n\n#### Dynamically determining the children during layout\n\nIf the widgets are to be generated at layout time, then generating them when\nthe [update] method won't work: layout of this element's render object\nhasn't started yet at that point. Instead, the [update] method can mark the\nrender object as needing layout (see [RenderObject.markNeedsLayout]), and\nthen the render object's [RenderObject.performLayout] method can call back\nto the element to have it generate the widgets and call [updateChild]\naccordingly.\n\nFor a render object to call an element during layout, it must use\n[RenderObject.invokeLayoutCallback]. For an element to call [updateChild]\noutside of its [update] method, it must use [BuildOwner.buildScope].\n\nThe framework provides many more checks in normal operation than it does\nwhen doing a build during layout. For this reason, creating widgets with\nlayout-time build semantics should be done with great care.\n\n#### Handling errors when building\n\nIf an element calls a builder function to obtain widgets for its children,\nit may find that the build throws an exception. Such exceptions should be\ncaught and reported using [FlutterError.reportError]. If a child is needed\nbut a builder has failed in this way, an instance of [ErrorWidget] can be\nused instead.\n\n### Detaching children\n\nIt is possible, when using [GlobalKey]s, for a child to be proactively\nremoved by another element before this element has been updated.\n(Specifically, this happens when the subtree rooted at a widget with a\nparticular [GlobalKey] is being moved from this element to an element\nprocessed earlier in the build phase.) When this happens, this element's\n[forgetChild] method will be called with a reference to the affected child\nelement.\n\nThe [forgetChild] method of a [RenderObjectElement] subclass must remove the\nchild element from its child list, so that when it next [update]s its\nchildren, the removed child is not considered.\n\nFor performance reasons, if there are many elements, it may be quicker to\ntrack which elements were forgotten by storing them in a [Set], rather than\nproactively mutating the local record of the child list and the identities\nof all the slots. For example, see the implementation of\n[MultiChildRenderObjectElement].\n\n### Maintaining the render object tree\n\nOnce a descendant produces a render object, it will call\n[insertChildRenderObject]. If the descendant's slot changes identity, it\nwill call [moveChildRenderObject]. If a descendant goes away, it will call\n[removeChildRenderObject].\n\nThese three methods should update the render tree accordingly, attaching,\nmoving, and detaching the given child render object from this element's own\nrender object respectively.\n\n### Walking the children\n\nIf a [RenderObjectElement] object has any children [Element]s, it must\nexpose them in its implementation of the [visitChildren] method. This method\nis used by many of the framework's internal mechanisms, and so should be\nfast. It is also used by the test framework and [debugDumpApp].", "detail": "", "kind": 7, "label": "RenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which takes a specific\n[Animation<RelativeRect>] to transition the child's position from a start\nposition to an end position over the lifetime of the animation.\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [PositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "PositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlockSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops the semantics of all widget that were painted before it\nin the same semantic container.\n\nThis is useful to hide widgets from accessibility tools that are painted\nbehind a certain widget, e.g. an alert should usually disallow interaction\nwith any widget located \"behind\" the alert (even when they are still\npartially visible). Similarly, an open [Drawer] blocks interactions with\nany widget outside the drawer.\n\nSee also:\n\n * [ExcludeSemantics] which drops all semantics of its descendants.", "detail": "", "kind": 7, "label": "BlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDetector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures.\n\nAttempts to recognize gestures that correspond to its non-null callbacks.\n\nIf this widget has a child, it defers to that child for its sizing behavior.\nIf it does not have a child, it grows to fit the parent instead.\n\nBy default a GestureDetector with an invisible child ignores touches;\nthis behavior can be controlled with [behavior].\n\nGestureDetector also listens for accessibility events and maps\nthem to the callbacks. To ignore accessibility events, set\n[excludeFromSemantics] to true.\n\nSee <http://flutter.dev/gestures/> for additional information.\n\nMaterial design applications typically react to touches with ink splash\neffects. The [InkWell] class implements this effect and can be used in place\nof a [GestureDetector] for handling taps.\n\n\nThis example makes a rectangle react to being tapped by setting the\n`_lights` field:\n\n```dart\nGestureDetector(\n onTap: () {\n setState(() { _lights = true; });\n },\n child: Container(\n color: Colors.yellow,\n child: Text('TURN LIGHTS ON'),\n ),\n)\n```\n\n## Debugging\n\nTo see how large the hit test box of a [GestureDetector] is for debugging\npurposes, set [debugPaintPointersEnabled] to true.", "detail": "", "kind": 7, "label": "GestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[SliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [SliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children.\n\n\nIf the children have a fixed extent in the main axis, consider using\n[SliverFixedExtentList] rather than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis and is therefore more efficient.\n\n\nSee also:\n\n * [SliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalizationsDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A factory for a set of localized resources of type `T`, to be loaded by a\n[Localizations] widget.\n\nTypical applications have one [Localizations] widget which is created by the\n[WidgetsApp] and configured with the app's `localizationsDelegates`\nparameter (a list of delegates). The delegate's [type] is used to identify\nthe object created by an individual delegate's [load] method.", "detail": "", "kind": 7, "label": "LocalizationsDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback function that's invoked when the [CupertinoSliverRefreshControl] is\npulled a `refreshTriggerPullDistance`. Must return a [Future]. Upon\ncompletion of the [Future], the [CupertinoSliverRefreshControl] enters the\n[RefreshIndicatorMode.done] state and will start to go away.", "detail": "() → Future<void>", "kind": 7, "label": "RefreshCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that hook [ParentData] information to children of\n[RenderObjectWidget]s.\n\nThis can be used to provide per-child configuration for\n[RenderObjectWidget]s with more than one child. For example, [Stack] uses\nthe [Positioned] parent data widget to position each child.\n\nA [ParentDataWidget] is specific to a particular kind of [RenderObject], and\nthus also to a particular [RenderObjectWidget] class. That class is `T`, the\n[ParentDataWidget] type argument.\n\n\nThis example shows how you would build a [ParentDataWidget] to configure a\n`FrogJar` widget's children by specifying a [Size] for each one.\n\n```dart\nclass FrogSize extends ParentDataWidget<FrogJar> {\n FrogSize({\n Key key,\n @required this.size,\n @required Widget child,\n }) : assert(child != null),\n assert(size != null),\n super(key: key, child: child);\n\n final Size size;\n\n @override\n void applyParentData(RenderObject renderObject) {\n final FrogJarParentData parentData = renderObject.parentData;\n if (parentData.size != size) {\n parentData.size = size;\n final RenderFrogJar targetParent = renderObject.parent;\n targetParent.markNeedsLayout();\n }\n }\n}\n```\n\nSee also:\n\n * [RenderObject], the superclass for layout algorithms.\n * [RenderObject.parentData], the slot that this class configures.\n * [ParentData], the superclass of the data that will be placed in\n [RenderObject.parentData] slots.\n * [RenderObjectWidget], the class for widgets that wrap [RenderObject]s.\n The `T` type parameter for [ParentDataWidget] is a [RenderObjectWidget].\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.", "detail": "", "kind": 7, "label": "ParentDataWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProviderStateMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides [Ticker] objects that are configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create an [AnimationController] in a class that uses this mixin, pass\n`vsync: this` to the animation controller constructor whenever you\ncreate a new animation controller.\n\nIf you only have a single [Ticker] (for example only a single\n[AnimationController]) for the lifetime of your [State], then using a\n[SingleTickerProviderStateMixin] is more efficient. This is the common case.", "detail": "", "kind": 7, "label": "TickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetToRenderBoxAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An adapter for placing a specific [RenderBox] in the widget tree.\n\nA given render object can be placed at most once in the widget tree. This\nwidget enforces that restriction by keying itself using a [GlobalObjectKey]\nfor the given render object.", "detail": "", "kind": 7, "label": "WidgetToRenderBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ValueKey] that defines where [PageStorage] values will be saved.\n\n[Scrollable]s ([ScrollPosition]s really) use [PageStorage] to save their\nscroll offset. Each time a scroll completes, the scrollable's page\nstorage is updated.\n\n[PageStorage] is used to save and restore values that can outlive the widget.\nThe values are stored in a per-route [Map] whose keys are defined by the\n[PageStorageKey]s for the widget and its ancestors. To make it possible\nfor a saved value to be found when a widget is recreated, the key's values\nmust not be objects whose identity will change each time the widget is created.\n\nFor example, to ensure that the scroll offsets for the scrollable within\neach `MyScrollableTabView` below are restored when the [TabBarView]\nis recreated, we've specified [PageStorageKey]s whose values are the\ntabs' string labels.\n\n```dart\nTabBarView(\n children: myTabs.map((Tab tab) {\n MyScrollableTabView(\n key: PageStorageKey<String>(tab.text), // like 'Tab 1'\n tab: tab,\n ),\n }),\n)\n```", "detail": "", "kind": 7, "label": "PageStorageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatelessWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatelessElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenConstructor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a [Tween] factory.\n\nThis is the type of one of the arguments of [TweenVisitor], the signature\nused by [AnimatedWidgetBaseState.forEachTween].", "detail": "(T targetValue) → Tween<T>", "kind": 7, "label": "TweenConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigationToolbar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[NavigationToolbar] is a layout helper to position 3 widgets or groups of\nwidgets along a horizontal axis that's sensible for an application's\nnavigation bar such as in Material Design and in iOS.\n\nThe [leading] and [trailing] widgets occupy the edges of the widget with\nreasonable size constraints while the [middle] widget occupies the remaining\nspace in either a center aligned or start aligned fashion.\n\nEither directly use the themed app bars such as the Material [AppBar] or\nthe iOS [CupertinoNavigationBar] or wrap this widget with more theming\nspecifications for your own custom app bar.", "detail": "", "kind": 7, "label": "NavigationToolbar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines which portion of the content is visible in a scroll view.\n\nThe [pixels] value determines the scroll offset that the scroll view uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThe [ScrollPosition] applies [physics] to scrolling, and stores the\n[minScrollExtent] and [maxScrollExtent].\n\nScrolling is controlled by the current [activity], which is set by\n[beginActivity]. [ScrollPosition] itself does not start any activities.\nInstead, concrete subclasses, such as [ScrollPositionWithSingleContext],\ntypically start activities in response to user input or instructions from a\n[ScrollController].\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\n## Subclassing ScrollPosition\n\nOver time, a [Scrollable] might have many different [ScrollPosition]\nobjects. For example, if [Scrollable.physics] changes type, [Scrollable]\ncreates a new [ScrollPosition] with the new physics. To transfer state from\nthe old instance to the new instance, subclasses implement [absorb]. See\n[absorb] for more details.\n\nSubclasses also need to call [didUpdateScrollDirection] whenever\n[userScrollDirection] changes values.\n\nSee also:\n\n * [Scrollable], which uses a [ScrollPosition] to determine which portion of\n its content to display.\n * [ScrollController], which can be used with [ListView], [GridView] and\n other scrollable widgets to control a [ScrollPosition].\n * [ScrollPositionWithSingleContext], which is the most commonly used\n concrete subclass of [ScrollPosition].\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeMatcher", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This class is a work-around for the \"is\" operator not accepting a variable value as its right operand", "detail": "", "kind": 7, "label": "TypeMatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given [Listenable] changes value.\n\n[AnimatedWidget] is most commonly used with [Animation] objects, which are\n[Listenable], but it can be used with any [Listenable], including\n[ChangeNotifier] and [ValueNotifier].\n\n[AnimatedWidget] is most useful for widgets that are otherwise stateless. To\nuse [AnimatedWidget], simply subclass it and implement the build function.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedWidget].\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with TickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return SpinningContainer(controller: _controller);\n }\n}\n\nclass SpinningContainer extends AnimatedWidget {\n const SpinningContainer({Key key, AnimationController controller})\n : super(key: key, listenable: controller);\n\n Animation<double> get _progress => listenable;\n\n @override\n Widget build(BuildContext context) {\n return Transform.rotate(\n angle: _progress.value * 2.0 * math.pi,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n );\n }\n}\n```\n\nFor more complex case involving additional state, consider using\n[AnimatedBuilder].\n\nSee also:\n\n * [AnimatedBuilder], which is useful for more complex use cases.\n * [Animation], which is a [Listenable] object that can be used for\n [listenable].\n * [ChangeNotifier], which is another [Listenable] object that can be used\n for [listenable].", "detail": "", "kind": 7, "label": "AnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformTarget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be targeted by a [CompositedTransformFollower].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\nupdates the [link] object so that any [CompositedTransformFollower] widgets\nthat are subsequently composited in the same frame and were given the same\n[LayerLink] can position themselves at the same screen location.\n\nA single [CompositedTransformTarget] can be followed by multiple\n[CompositedTransformFollower] widgets.\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nany linked [CompositedTransformFollower]s.\n\nSee also:\n\n * [CompositedTransformFollower], the widget that can target this one.\n * [LeaderLayer], the layer that implements this widget's logic.", "detail": "", "kind": 7, "label": "CompositedTransformTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for being notified when a form field changes value.\n\nUsed by [FormField.onSaved].", "detail": "(T newValue) → void", "kind": 7, "label": "FormFieldSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoNavigationBarBackButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A nav bar back button typically used in [CupertinoNavigationBar].\n\nThis is automatically inserted into [CupertinoNavigationBar] and\n[CupertinoSliverNavigationBar]'s `leading` slot when\n`automaticallyImplyLeading` is true.\n\nShows a back chevron and the previous route's title when available from\nthe previous [CupertinoPageRoute.title]. If [previousPageTitle] is specified,\nit will be shown instead.", "detail": "", "kind": 7, "label": "CupertinoNavigationBarBackButton" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.pageRouteBuilder].\n\nCreates a [PageRoute] using the given [RouteSettings] and [WidgetBuilder].", "detail": "(RouteSettings settings, WidgetBuilder builder) → PageRoute<T>", "kind": 7, "label": "PageRouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverToBoxAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box widget.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverToBoxAdapter]\nis a basic sliver that creates a bridge back to one of the usual box-based\nwidgets.\n\nRather than using multiple [SliverToBoxAdapter] widgets to display multiple\nbox widgets in a [CustomScrollView], consider using [SliverList],\n[SliverFixedExtentList], [SliverPrototypeExtentList], or [SliverGrid],\nwhich are more efficient because they instantiate only those children that\nare actually visible through the scroll view's viewport.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.\n * [SliverList], which displays multiple box widgets in a linear array.\n * [SliverFixedExtentList], which displays multiple box widgets with the\n same main-axis extent in a linear array.\n * [SliverPrototypeExtentList], which displays multiple box widgets with the\n same main-axis extent as a prototype item, in a linear array.\n * [SliverGrid], which displays multiple box widgets in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GenerateAppTitle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.onGenerateTitle].\n\nUsed to generate a value for the app's [Title.title], which the device uses\nto identify the app for the user. The `context` includes the [WidgetsApp]'s\n[Localizations] widget so that this method can be used to produce a\nlocalized title.\n\nThis function must not return null.", "detail": "(BuildContext context) → String", "kind": 7, "label": "GenerateAppTitle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextCapitalization", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how the platform keyboard will select an uppercase or\nlowercase keyboard.\n\nOnly supports text keyboards, other keyboard types will ignore this\nconfiguration. Capitalization is locale-aware.", "detail": "", "kind": 13, "label": "TextCapitalization" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlayChanged", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting changes to the selection component of a\n[TextEditingValue] for the purposes of a [TextSelectionOverlay]. The\n[caretRect] argument gives the location of the caret in the coordinate space\nof the [RenderBox] given by the [TextSelectionOverlay.renderObject].\n\nUsed by [TextSelectionOverlay.onSelectionOverlayChanged].", "detail": "(TextEditingValue value, Rect caretRect) → void", "kind": 7, "label": "TextSelectionOverlayChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of the [LayoutBuilder] builder function.", "detail": "(BuildContext context, BoxConstraints constraints) → Widget", "kind": 7, "label": "LayoutWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImagePhase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The phases a [FadeInImage] goes through.", "detail": "", "kind": 13, "label": "FadeInImagePhase" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SlideTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the position of a widget relative to its normal position.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nBy default, the offsets are applied in the coordinate system of the canvas\n(so positive x offsets move the child towards the right). If a\n[textDirection] is provided, then the offsets are applied in the reading\ndirection, so in right-to-left text, positive x offsets move towards the\nleft, and in left-to-right text, positive x offsets move towards the right.\n\nHere's an illustration of the [SlideTransition] widget, with it's [position]\nanimated by a [CurvedAnimation] set to [Curves.elasticIn]:\n\nSee also:\n\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SlideTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyleTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [TextStyle]s.\n\nThis class specializes the interpolation of [Tween<TextStyle>] to use\n[TextStyle.lerp].\n\nThis will not work well if the styles don't set the same fields.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "TextStyleTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildLoopingListDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies infinite children for [ListWheelScrollView] by\nlooping an explicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildLoopingListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates its own size and clips and aligns its child.\n\n[SizeTransition] acts as a [ClipRect] that animates either its width or its\nheight, depending upon the value of [axis]. The alignment of the child along\nthe [axis] is specified by the [axisAlignment].\n\nLike most widgets, [SizeTransition] will conform to the constraints it is\ngiven, so be sure to put it in a context where it can change size. For\ninstance, if you place it into a [Container] with a fixed size, then the\n[SizeTransition] will not be able to change size, and will appear to do\nnothing.\n\nHere's an illustration of the [SizeTransition] widget, with it's [sizeFactor]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [AnimatedCrossFade], for a widget that automatically animates between\n the sizes of two children, fading between them.\n * [ScaleTransition], a widget that scales the size of the child instead of\n clipping it.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SizeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IdleScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing.\n\nWhen a scroll view is not scrolling, it is performing the idle activity.\n\nIf the [Scrollable] changes dimensions, this activity triggers a ballistic\nactivity to restore the view.", "detail": "", "kind": 7, "label": "IdleScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building children of a [DragTarget].\n\nThe `candidateData` argument contains the list of drag data that is hovering\nover this [DragTarget] and that has passed [DragTarget.onWillAccept]. The\n`rejectedData` argument contains the list of drag data that is hovering over\nthis [DragTarget] and that will not be accepted by the [DragTarget].\n\nUsed by [DragTarget.builder].", "detail": "(BuildContext context, List<T> candidateData, List<dynamic> rejectedData) → Widget", "kind": 7, "label": "DragTargetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticIndexCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback which produces a semantic index given a widget and the local index.\n\nReturn a null value to prevent a widget from receiving an index.\n\nA semantic index is used to tag child semantic nodes for accessibility\nannouncements in scroll view.\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.\n * [SliverChildBuilderDelegate], for an explanation of how this is used to\n generate indexes.", "detail": "(Widget widget, int localIndex) → int", "kind": 7, "label": "SemanticIndexCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotificationPredicate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A predicate for [ScrollNotification], used to customize widgets that\nlisten to notifications from their children.", "detail": "(ScrollNotification notification) → bool", "kind": 7, "label": "ScrollNotificationPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated widget that automatically transitions its size over a given\nduration whenever the given child's size changes.", "detail": "", "kind": 7, "label": "AnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IgnorePointer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is invisible during hit testing.\n\nWhen [ignoring] is true, this widget (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because it returns\nfalse from [RenderBox.hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [AbsorbPointer], which also prevents its children from receiving pointer\n events but is itself visible to hit testing.", "detail": "", "kind": 7, "label": "IgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteObserver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that notifies [RouteAware]s of changes to the\nstate of their [Route].\n\n[RouteObserver] informs subscribers whenever a route of type `R` is pushed\non top of their own route of type `R` or popped from it. This is for example\nuseful to keep track of page transitions, e.g. a `RouteObserver<PageRoute>`\nwill inform subscribed [RouteAware]s whenever the user navigates away from\nthe current page route to another page route.\n\nTo be informed about route changes of any type, consider instantiating a\n`RouteObserver<Route>`.\n\n## Type arguments\n\nWhen using more aggressive\n[lints](http://dart-lang.github.io/linter/lints/), in particular lints such\nas `always_specify_types`, the Dart analyzer will require that certain types\nbe given with their type arguments. Since the [Route] class and its\nsubclasses have a type argument, this includes the arguments passed to this\nclass. Consider using `dynamic` to specify the entire class of routes rather\nthan only specific subtypes. For example, to watch for all [PageRoute]\nvariants, the `RouteObserver<PageRoute<dynamic>>` type may be used.\n\n\nTo make a [StatefulWidget] aware of its current [Route] state, implement\n[RouteAware] in its [State] and subscribe it to a [RouteObserver]:\n\n```dart\n// Register the RouteObserver as a navigation observer.\nfinal RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();\nvoid main() {\n runApp(MaterialApp(\n home: Container(),\n navigatorObservers: [routeObserver],\n ));\n}\n\nclass RouteAwareWidget extends StatefulWidget {\n State<RouteAwareWidget> createState() => RouteAwareWidgetState();\n}\n\n// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.\nclass RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n routeObserver.subscribe(this, ModalRoute.of(context));\n }\n\n @override\n void dispose() {\n routeObserver.unsubscribe(this);\n super.dispose();\n }\n\n @override\n void didPush() {\n // Route was pushed onto navigator and is now topmost route.\n }\n\n @override\n void didPopNext() {\n // Covering route was popped off the navigator.\n }\n\n @override\n Widget build(BuildContext context) => Container();\n\n}\n```", "detail": "", "kind": 7, "label": "RouteObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Future].\n\nThe [future] must have been obtained earlier, e.g. during [State.initState],\n[State.didUpdateConfig], or [State.didChangeDependencies]. It must not be\ncreated during the [State.build] or [StatelessWidget.build] method call when\nconstructing the [FutureBuilder]. If the [future] is created at the same\ntime as the [FutureBuilder], then every time the [FutureBuilder]'s parent is\nrebuilt, the asynchronous task will be restarted.\n\nA general guideline is to assume that every `build` method could get called\nevery frame, and to treat omitted calls as an optimization.\n\n\n## Timing\n\nWidget rebuilding is scheduled by the completion of the future, using\n[State.setState], but is otherwise decoupled from the timing of the future.\nThe [builder] callback is called at the discretion of the Flutter pipeline, and\nwill thus receive a timing-dependent sub-sequence of the snapshots that\nrepresent the interaction with the future.\n\nA side-effect of this is that providing a new but already-completed future\nto a [FutureBuilder] will result in a single frame in the\n[ConnectionState.waiting] state. This is because there is no way to\nsynchronously determine that a [Future] has already completed.\n\n## Builder contract\n\nFor a future that completes successfully with data, assuming [initialData]\nis null, the [builder] will be called with either both or only the latter of\nthe following snapshots:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withData(ConnectionState.done, 'some data')`\n\nIf that same future instead completed with an error, the [builder] would be\ncalled with either both or only the latter of:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withError(ConnectionState.done, 'some error')`\n\nThe initial snapshot data can be controlled by specifying [initialData]. You\nwould use this facility to ensure that if the [builder] is invoked before\nthe future completes, the snapshot carries data of your choice rather than\nthe default null value.\n\nThe data and error fields of the snapshot change only as the connection\nstate field transitions from `waiting` to `done`, and they will be retained\nwhen changing the [FutureBuilder] configuration to another future. If the\nold future has already completed successfully with data as above, changing\nconfiguration to a new future results in snapshot pairs of the form:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.none, 'data of first future')`\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, 'data of second future')`\n\nIn general, the latter will be produced only when the new future is\nnon-null, and the former only when the old future is non-null.\n\nA [FutureBuilder] behaves identically to a [StreamBuilder] configured with\n`future?.asStream()`, except that snapshots with `ConnectionState.active`\nmay appear for the latter, depending on how the stream is implemented.\n\n\nThis sample shows a [FutureBuilder] configuring a text label to show the\nstate of an asynchronous calculation returning a string. Assume the\n`_calculation` field is set by pressing a button elsewhere in the UI.\n\n```dart\nFutureBuilder<String>(\n future: _calculation, // a previously-obtained Future<String> or null\n builder: (BuildContext context, AsyncSnapshot<String> snapshot) {\n switch (snapshot.connectionState) {\n case ConnectionState.none:\n return Text('Press button to start.');\n case ConnectionState.active:\n case ConnectionState.waiting:\n return Text('Awaiting result...');\n case ConnectionState.done:\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n return Text('Result: ${snapshot.data}');\n }\n return null; // unreachable\n },\n)\n```", "detail": "", "kind": 7, "label": "FutureBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of an [Align] that animates its [Align.alignment] property.\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "AlignTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherLayoutBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom layouts for\n[AnimatedSwitcher].\n\nThe builder should return a widget which contains the given children, laid\nout as desired. It must not return null. The builder should be able to\nhandle an empty list of `previousChildren`, or a null `currentChild`.\n\nThe `previousChildren` list is an unmodifiable list, sorted with the oldest\nat the beginning and the newest at the end. It does not include the\n`currentChild`.", "detail": "(Widget currentChild, List<Widget> previousChildren) → Widget", "kind": 7, "label": "AnimatedSwitcherLayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositionedDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PositionedDirectional] which automatically transitions\nthe child's position over a given duration whenever the given position\nchanges.\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositionedDirectional] will trigger\na relayout as well. ([SlideTransition] is also text-direction-aware.)\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositioned], which specifies the widget's position visually (the\n same as this widget, but for animating [Positioned]).", "detail": "", "kind": 7, "label": "AnimatedPositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCell", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Table] is aligned.\n\nA [TableCell] widget must be a descendant of a [Table], and the path from\nthe [TableCell] widget to its enclosing [Table] must contain only\n[TableRow]s, [StatelessWidget]s, or [StatefulWidget]s (not\nother kinds of widgets, like [RenderObjectWidget]s).", "detail": "", "kind": 7, "label": "TableCell" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteAware", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for objects that are aware of their current [Route].\n\nThis is used with [RouteObserver] to make a widget aware of changes to the\n[Navigator]'s session history.", "detail": "", "kind": 7, "label": "RouteAware" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [LeafRenderObjectWidget] as its configuration.", "detail": "", "kind": 7, "label": "LeafRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorObserver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for observing the behavior of a [Navigator].", "detail": "", "kind": 7, "label": "NavigatorObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPicker", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled picker.\n\nDisplays its children widgets on a wheel for selection and\ncalls back when the currently selected item changes.\n\nCan be used with [showCupertinoModalPopup] to display the picker modally at the\nbottom of the screen.\n\nSee also:\n\n * [ListWheelScrollView], the generic widget backing this picker without\n the iOS design specific chrome.\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/pickers/>", "detail": "", "kind": 7, "label": "CupertinoPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [State.setState] functions.", "detail": "(VoidCallback fn) → void", "kind": 7, "label": "StateSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that merges the semantics of its descendants.\n\nCauses all the semantics of the subtree rooted at this node to be\nmerged into one node in the semantics tree. For example, if you\nhave a widget with a Text node next to a checkbox widget, this\ncould be used to merge the label from the Text node with the\n\"checked\" semantic state of the checkbox into a single node that\nhad both the label and the checked state. Otherwise, the label\nwould be presented as a separate feature than the checkbox, and\nthe user would not be able to be sure that they were related.\n\nBe aware that if two nodes in the subtree have conflicting\nsemantics, the result may be nonsensical. For example, a subtree\nwith a checked checkbox and an unchecked checkbox will be\npresented as checked. All the labels will be merged into a single\nstring (with newlines separating each label from the other). If\nmultiple nodes in the merged subtree can handle semantic gestures,\nthe first one in tree order will be the one to receive the\ncallbacks.", "detail": "", "kind": 7, "label": "MergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that automatically dispatches a [SizeChangedLayoutNotification]\nwhen the layout dimensions of its child change.\n\nThe notification is not sent for the initial layout (since the size doesn't\nchange in that case, it's just established).\n\nTo listen for the notification dispatched by this widget, use a\n[NotificationListener<SizeChangedLayoutNotification>].\n\nThe [Material] class listens for [LayoutChangedNotification]s, including\n[SizeChangedLayoutNotification]s, to repaint [InkResponse] and [InkWell] ink\neffects. When a widget is likely to change size, wrapping it in a\n[SizeChangedLayoutNotifier] will cause the ink effects to correctly repaint\nwhen the child changes size.\n\nSee also:\n\n * [Notification], the base class for notifications that bubble through the\n widget tree.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Notification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that can bubble up the widget tree.\n\nYou can determine the type of a notification using the `is` operator to\ncheck the [runtimeType] of the notification.\n\nTo listen for notifications in a subtree, use a [NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].", "detail": "", "kind": 7, "label": "Notification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBindingObserver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for classes that register with the Widgets layer binding.\n\nWhen used as a mixin, provides no-op method implementations.\n\nSee [WidgetsBinding.addObserver] and [WidgetsBinding.removeObserver].\n\nThis class can be extended directly, to get default behaviors for all of the\nhandlers, or can used with the `implements` keyword, in which case all the\nhandlers must be implemented (and the analyzer will list those that have\nbeen omitted).\n\n\nThis [StatefulWidget] implements the parts of the [State] and\n[WidgetsBindingObserver] protocols necessary to react to application\nlifecycle messages. See [didChangeAppLifecycleState].\n\n```dart\nclass AppLifecycleReactor extends StatefulWidget {\n const AppLifecycleReactor({ Key key }) : super(key: key);\n\n @override\n _AppLifecycleReactorState createState() => _AppLifecycleReactorState();\n}\n\nclass _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {\n @override\n void initState() {\n super.initState();\n WidgetsBinding.instance.addObserver(this);\n }\n\n @override\n void dispose() {\n WidgetsBinding.instance.removeObserver(this);\n super.dispose();\n }\n\n AppLifecycleState _notification;\n\n @override\n void didChangeAppLifecycleState(AppLifecycleState state) {\n setState(() { _notification = state; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Text('Last notification: $_notification');\n }\n}\n```\n\nTo respond to other notifications, replace the [didChangeAppLifecycleState]\nmethod above with other methods from this class.", "detail": "", "kind": 7, "label": "WidgetsBindingObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls how [Scrollable] widgets behave in a subtree.\n\nThe scroll configuration determines the [ScrollPhysics] and viewport\ndecorations used by descendants of [child].", "detail": "", "kind": 7, "label": "ScrollConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interactive button within either material's [BottomNavigationBar]\nor the iOS themed [CupertinoTabBar] with an icon and title.\n\nThis class is rarely used in isolation. It is typically embedded in one of\nthe bottom navigation widgets above.\n\nSee also:\n\n * [BottomNavigationBar]\n * <https://material.io/design/components/bottom-navigation.html>\n * [CupertinoTabBar]\n * <https://developer.apple.com/ios/human-interface-guidelines/bars/tab-bars>", "detail": "", "kind": 7, "label": "BottomNavigationBarItem" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that enables inspecting the child widget's structure.\n\nSelect a location on your device or emulator and view what widgets and\nrender object that best matches the location. An outline of the selected\nwidget and terse summary information is shown on device with detailed\ninformation is shown in the observatory or in IntelliJ when using the\nFlutter Plugin.\n\nThe inspector has a select mode and a view mode.\n\nIn the select mode, tapping the device selects the widget that best matches\nthe location of the touch and switches to view mode. Dragging a finger on\nthe device selects the widget under the drag location but does not switch\nmodes. Touching the very edge of the bounding box of a widget triggers\nselecting the widget even if another widget that also overlaps that\nlocation would otherwise have priority.\n\nIn the view mode, the previously selected widget is outlined, however,\ntouching the device has the same effect it would have if the inspector\nwasn't present. This allows interacting with the application and viewing how\nthe selected widget changes position. Clicking on the select icon in the\nbottom left corner of the application switches back to select mode.", "detail": "", "kind": 7, "label": "WidgetInspector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshIndicatorMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of the refresh control.\n\nPassed into the [RefreshControlIndicatorBuilder] builder function so\nusers can show different UI in different modes.", "detail": "", "kind": 13, "label": "RefreshIndicatorMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rounded rectangle.\n\nBy default, [ClipRRect] uses its own bounds as the base rectangle for the\nclip, but the size and location of the clip can be customized using a custom\n[clipper].\n\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Hero", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that marks its child as being a candidate for\n[hero animations](https://flutter.dev/docs/development/ui/animations/hero-animations).\n\nWhen a [PageRoute] is pushed or popped with the [Navigator], the entire\nscreen's content is replaced. An old route disappears and a new route\nappears. If there's a common visual feature on both routes then it can\nbe helpful for orienting the user for the feature to physically move from\none page to the other during the routes' transition. Such an animation\nis called a *hero animation*. The hero widgets \"fly\" in the Navigator's\noverlay during the transition and while they're in-flight they're, by\ndefault, not shown in their original locations in the old and new routes.\n\nTo label a widget as such a feature, wrap it in a [Hero] widget. When\nnavigation happens, the [Hero] widgets on each route are identified\nby the [HeroController]. For each pair of [Hero] widgets that have the\nsame tag, a hero animation is triggered.\n\nIf a [Hero] is already in flight when navigation occurs, its\nflight animation will be redirected to its new destination. The\nwidget shown in-flight during the transition is, by default, the\ndestination route's [Hero]'s child.\n\nFor a Hero animation to trigger, the Hero has to exist on the very first\nframe of the new page's animation.\n\nRoutes must not contain more than one [Hero] for each [tag].\n\n\n## Discussion\n\nHeroes and the [Navigator]'s [Overlay] [Stack] must be axis-aligned for\nall this to work. The top left and bottom right coordinates of each animated\nHero will be converted to global coordinates and then from there converted\nto that [Stack]'s coordinate space, and the entire Hero subtree will, for\nthe duration of the animation, be lifted out of its original place, and\npositioned on that stack. If the [Hero] isn't axis aligned, this is going to\nfail in a rather ugly fashion. Don't rotate your heroes!\n\nTo make the animations look good, it's critical that the widget tree for the\nhero in both locations be essentially identical. The widget of the *target*\nis, by default, used to do the transition: when going from route A to route\nB, route B's hero's widget is placed over route A's hero's widget. If a\n[flightShuttleBuilder] is supplied, its output widget is shown during the\nflight transition instead.\n\nBy default, both route A and route B's heroes are hidden while the\ntransitioning widget is animating in-flight above the 2 routes.\n[placeholderBuilder] can be used to show a custom widget in their place\ninstead once the transition has taken flight.\n\nDuring the transition, the transition widget is animated to route B's hero's\nposition, and then the widget is inserted into route B. When going back from\nB to A, route A's hero's widget is, by default, placed over where route B's\nhero's widget was, and then the animation goes the other way.\n\n### Nested Navigators\n\nIf either or both routes contain nested [Navigator]s, only [Hero]s\ncontained in the top-most routes (as defined by [Route.isCurrent]) *of those\nnested [Navigator]s* are considered for animation. Just like in the\nnon-nested case the top-most routes containing these [Hero]s in the nested\n[Navigator]s have to be [PageRoute]s.\n\n## Parts of a Hero Transition\n\n![Diagrams with parts of the Hero transition.](https://flutter.github.io/assets-for-api-docs/assets/interaction/heroes.png)", "detail": "", "kind": 7, "label": "Hero" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoIcons", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifiers for the supported Cupertino icons.\n\nUse with the [Icon] class to show specific icons.\n\nIcons are identified by their name as listed below.\n\nTo use this class, make sure you add a dependency on `cupertino_icons` in your\nproject's `pubspec.yaml` file. This ensures that the CupertinoIcons font is\nincluded in your application. This font is used to display the icons. For example:\n\n```yaml\nname: my_awesome_application\n\ndependencies:\n cupertino_icons: ^0.1.0\n```\n\nSee also:\n\n * [Icon], used to show these icons.\n * <https://github.com/flutter/cupertino_icons/blob/master/map.png>, a map of the icons in this icons font.", "detail": "", "kind": 7, "label": "CupertinoIcons" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultCupertinoLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "US English strings for the cupertino widgets.", "detail": "", "kind": 7, "label": "DefaultCupertinoLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Scrollable] to build the viewport through which the\nscrollable content is displayed.", "detail": "(BuildContext context, ViewportOffset position) → Widget", "kind": 7, "label": "ViewportBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses an [InheritedWidget] as its configuration.", "detail": "", "kind": 7, "label": "InheritedElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styling specifications for a [CupertinoTheme].\n\nAll constructor parameters can be null, in which case a\n[CupertinoColors.activeBlue] based default iOS theme styling is used.\n\nParameters can also be partially specified, in which case some parameters\nwill cascade down to other dependent parameters to create a cohesive\nvisual effect. For instance, if a [primaryColor] is specified, it would\ncascade down to affect some fonts in [textTheme] if [textTheme] is not\nspecified.\n\nSee also:\n\n * [CupertinoTheme], in which this [CupertinoThemeData] is inserted.\n * [ThemeData], a Material equivalent that also configures Cupertino\n styling via a [CupertinoThemeData] subclass [MaterialBasedCupertinoThemeData].", "detail": "", "kind": 7, "label": "CupertinoThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformFollower", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that follows a [CompositedTransformTarget].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\napplies a transformation that causes it to provide its child with a\ncoordinate space that matches that of the linked [CompositedTransformTarget]\nwidget, offset by [offset].\n\nThe [LayerLink] object used as the [link] must be the same object as that\nprovided to the matching [CompositedTransformTarget].\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nthis [CompositedTransformFollower].\n\nHit testing on descendants of this widget will only work if the target\nposition is within the box that this widget's parent considers to be\nhittable. If the parent covers the screen, this is trivially achievable, so\nthis widget is usually used as the root of an [OverlayEntry] in an app-wide\n[Overlay] (e.g. as created by the [MaterialApp] widget's [Navigator]).\n\nSee also:\n\n * [CompositedTransformTarget], the widget that this widget can target.\n * [FollowerLayer], the layer that implements this widget's logic.\n * [Transform], which applies an arbitrary transform to a child.", "detail": "", "kind": 7, "label": "CompositedTransformFollower" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableText", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A basic text input field.\n\nThis widget interacts with the [TextInput] service to let the user edit the\ntext it contains. It also provides scrolling, selection, and cursor\nmovement. This widget does not provide any focus management (e.g.,\ntap-to-focus).\n\n## Input Actions\n\nA [TextInputAction] can be provided to customize the appearance of the\naction button on the soft keyboard for Android and iOS. The default action\nis [TextInputAction.done].\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\nEditableText receives focus. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\n## Lifecycle\n\nUpon completion of editing, like pressing the \"done\" button on the keyboard,\ntwo actions take place:\n\n 1st: Editing is finalized. The default behavior of this step includes\n an invocation of [onChanged]. That default behavior can be overridden.\n See [onEditingComplete] for details.\n\n 2nd: [onSubmitted] is invoked with the user's input value.\n\n[onSubmitted] can be used to manually move focus to another input widget\nwhen a user finishes with the currently focused input widget.\n\nRather than using this widget directly, consider using [TextField], which\nis a full-featured, material-design text input field with placeholder text,\nlabels, and [Form] integration.\n\n## Gesture Events Handling\n\nThis widget provides rudimentary, platform-agnostic gesture handling for\nuser actions such as tapping, long-pressing and scrolling when\n[rendererIgnoresPointer] is false (false by default). To tightly conform\nto the platform behavior with respect to input gestures in text fields, use\n[TextField] or [CupertinoTextField]. For custom selection behavior, call\nmethods such as [RenderEditable.selectPosition],\n[RenderEditable.selectWord], etc. programmatically.\n\nSee also:\n\n * [TextField], which is a full-featured, material-design text input field\n with placeholder text, labels, and [Form] integration.", "detail": "", "kind": 7, "label": "EditableText" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an editable text field.\n\nWhenever the user modifies a text field with an associated\n[TextEditingController], the text field updates [value] and the controller\nnotifies its listeners. Listeners can then read the [text] and [selection]\nproperties to learn what the user has typed or how the selection has been\nupdated.\n\nSimilarly, if you modify the [text] or [selection] properties, the text\nfield will be notified and will update itself appropriately.\n\nA [TextEditingController] can also be used to provide an initial value for a\ntext field. If you build a text field with a controller that already has\n[text], the text field will use that text as its initial value.\n\nThe [text] or [selection] properties can be set from within a listener\nadded to this controller. If both properties need to be changed then the\ncontroller's [value] should be set instead.\n\nThis example creates a [TextField] with a [TextEditingController] whose\nchange listener forces the entered text to be lower case and keeps the\ncursor at the end of the input.\n\n```dart\nfinal _controller = TextEditingController();\n\nvoid initState() {\n _controller.addListener(() {\n final text = _controller.text.toLowerCase();\n _controller.value = _controller.value.copyWith(\n text: text,\n selection: TextSelection(baseOffset: text.length, extentOffset: text.length),\n composing: TextRange.empty,\n );\n });\n super.initState();\n}\n\nvoid dispose() {\n _controller.dispose();\n super.dispose();\n}\n\nWidget build(BuildContext context) {\n return Scaffold(\n body: Container(\n alignment: Alignment.center,\n padding: const EdgeInsets.all(6),\n child: TextFormField(\n controller: _controller,\n decoration: InputDecoration(border: OutlineInputBorder()),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [TextField], which is a Material Design text field that can be controlled\n with a [TextEditingController].\n * [EditableText], which is a raw region of editable text that can be\n controlled with a [TextEditingController].", "detail": "", "kind": 7, "label": "TextEditingController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspectorService", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Service used by GUI tools to interact with the [WidgetInspector].\n\nCalls to this object are typically made from GUI tools such as the [Flutter\nIntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nusing the [Dart VM Service protocol](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md).\nThis class uses its own object id and manages object lifecycles itself\ninstead of depending on the [object ids](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#getobject)\nspecified by the VM Service Protocol because the VM Service Protocol ids\nexpire unpredictably. Object references are tracked in groups so that tools\nthat clients can use dereference all objects in a group with a single\noperation making it easier to avoid memory leaks.\n\nAll methods in this class are appropriate to invoke from debugging tools\nusing the Observatory service protocol to evaluate Dart expressions of the\nform `WidgetInspectorService.instance.methodName(arg1, arg2, ...)`. If you\nmake changes to any instance method of this class you need to verify that\nthe [Flutter IntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nwidget inspector support still works with the changes.\n\nAll methods returning String values return JSON.", "detail": "", "kind": 7, "label": "WidgetInspectorService" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned without\ncommitting to a specific [TextDirection].\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nA [PositionedDirectional] widget must be a descendant of a [Stack], and the\npath from the [PositionedDirectional] widget to its enclosing [Stack] must\ncontain only [StatelessWidget]s or [StatefulWidget]s (not other kinds of\nwidgets, like [RenderObjectWidget]s).\n\nIf a widget is wrapped in a [PositionedDirectional], then it is a\n_positioned_ widget in its [Stack]. If the [top] property is non-null, the\ntop edge of this child/ will be positioned [top] layout units from the top\nof the stack widget. The [start], [bottom], and [end] properties work\nanalogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [start] and [end] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nSee also:\n\n * [Positioned], which specifies the widget's position visually.\n * [Positioned.directional], which also specifies the widget's horizontal\n position using [start] and [end] but has an explicit [TextDirection].", "detail": "", "kind": 7, "label": "PositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsDebugger", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that visualizes the semantics for the child.\n\nThis widget is useful for understand how an app presents itself to\naccessibility technology.", "detail": "", "kind": 7, "label": "SemanticsDebugger" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [SingleChildRenderObjectWidget] as its configuration.\n\nThe child is optional.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [RenderObjectWithChildMixin] mixin. Such widgets are\nexpected to inherit from [SingleChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "SingleChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQueryData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Information about a piece of media (e.g., a window).\n\nFor example, the [MediaQueryData.size] property contains the width and\nheight of the current window.\n\nTo obtain the current [MediaQueryData] for a given [BuildContext], use the\n[MediaQuery.of] function. For example, to obtain the size of the current\nwindow, use `MediaQuery.of(context).size`.\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nMediaQueryData includes two [EdgeInsets] values:\n[padding] and [viewInsets]. These\nvalues reflect the configuration of the device and are used by\nmany top level widgets, like [SafeArea] and the Cupertino and\nMaterial scaffold widgets. The padding value defines areas that\nmight not be completely visible, like the display \"notch\" on the\niPhone X. The viewInsets value defines areas that aren't visible at\nall, typically because they're obscured by the device's keyboard.\n\nThe viewInsets and padding values are independent, they're both\nmeasured from the edges of the MediaQuery widget's bounds. The\nbounds of the top level MediaQuery created by [WidgetsApp] are the\nsame as the window that contains the app.\n\nWidgets whose layouts consume space defined by [viewInsets] or\n[padding] should enclose their children in secondary MediaQuery\nwidgets that reduce those properties by the same amount.\nThe [removePadding] and [removeInsets] methods are useful for this.", "detail": "", "kind": 7, "label": "MediaQueryData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalBarrier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nSee also:\n\n * [ModalRoute], which indirectly uses this widget.\n * [AnimatedModalBarrier], which is similar but takes an animated [color]\n instead of a single color value.", "detail": "", "kind": 7, "label": "ModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyleTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DefaultTextStyle] that animates the different properties\nof its [TextStyle].\n\nSee also:\n\n * [DefaultTextStyle], which also defines a [TextStyle] for its descendants\n but is not animated.", "detail": "", "kind": 7, "label": "DefaultTextStyleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderNestedScrollViewViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [RenderViewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "RenderNestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have no children.", "detail": "", "kind": 7, "label": "LeafRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQuery", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a subtree in which media queries resolve to the given data.\n\nFor example, to learn the size of the current media (e.g., the window\ncontaining your app), you can read the [MediaQueryData.size] property from\nthe [MediaQueryData] returned by [MediaQuery.of]:\n`MediaQuery.of(context).size`.\n\nQuerying the current media using [MediaQuery.of] will cause your widget to\nrebuild automatically whenever the [MediaQueryData] changes (e.g., if the\nuser rotates their device).\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nSee also:\n\n * [WidgetsApp] and [MaterialApp], which introduce a [MediaQuery] and keep\n it up to date with the current screen metrics as they change.\n * [MediaQueryData], the data structure that represents the metrics.", "detail": "", "kind": 7, "label": "MediaQuery" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionGestureDetector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A gesture detector to respond to non-exclusive event chains for a text field.\n\nAn ordinary [GestureDetector] configured to handle events like tap and\ndouble tap will only recognize one or the other. This widget detects both:\nfirst the tap and then, if another tap down occurs within a time limit, the\ndouble tap.\n\nSee also:\n\n * [TextField], a Material text field which uses this gesture detector.\n * [CupertinoTextField], a Cupertino text field which uses this gesture\n detector.", "detail": "", "kind": 7, "label": "TextSelectionGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LabeledGlobalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key with a debugging label.\n\nThe debug label is useful for documentation and for debugging. The label\ndoes not affect the key's identity.", "detail": "", "kind": 7, "label": "LabeledGlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPositionWithSingleContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll position that manages scroll activities for a single\n[ScrollContext].\n\nThis class is a concrete subclass of [ScrollPosition] logic that handles a\nsingle [ScrollContext], such as a [Scrollable]. An instance of this class\nmanages [ScrollActivity] instances, which change what content is visible in\nthe [Scrollable]'s [Viewport].\n\nSee also:\n\n * [ScrollPosition], which defines the underlying model for a position\n within a [Scrollable] but is agnostic as to how that position is\n changed.\n * [ScrollView] and its subclasses such as [ListView], which use\n [ScrollPositionWithSingleContext] to manage their scroll position.\n * [ScrollController], which can manipulate one or more [ScrollPosition]s,\n and which uses [ScrollPositionWithSingleContext] as its default class for\n scroll positions.", "detail": "", "kind": 7, "label": "ScrollPositionWithSingleContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlowingOverscrollIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A visual indication that a scroll view has overscrolled.\n\nA [GlowingOverscrollIndicator] listens for [ScrollNotification]s in order\nto control the overscroll indication. These notifications are typically\ngenerated by a [ScrollView], such as a [ListView] or a [GridView].\n\n[GlowingOverscrollIndicator] generates [OverscrollIndicatorNotification]\nbefore showing an overscroll indication. To prevent the indicator from\nshowing the indication, call [OverscrollIndicatorNotification.disallowGlow]\non the notification.\n\nCreated automatically by [ScrollBehavior.buildViewportChrome] on platforms\n(e.g., Android) that commonly use this type of overscroll indication.\n\nIn a [MaterialApp], the edge glow color is the [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "GlowingOverscrollIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverflowBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nSee also:\n\n * [RenderConstrainedOverflowBox] for details about how [OverflowBox] is\n rendered.\n * [SizedOverflowBox], a widget that is a specific size but passes its\n original constraints through to its child, which may then overflow.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], a box with a specified size.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "OverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragSelectionUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that's dragging to select text has moved again.\n\nThe first argument [startDetails] contains the details of the event that\ninitiated the dragging.\n\nThe second argument [updateDetails] contains the details of the current\npointer movement. It's the same as the one passed to [DragGestureRecognizer.onUpdate].\n\nThis signature is different from [GestureDragUpdateCallback] to make it\neasier for various text fields to use [TextSelectionGestureDetector] without\nhaving to store the start position.", "detail": "(DragStartDetails startDetails, DragUpdateDetails updateDetails) → void", "kind": 7, "label": "DragSelectionUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverWithKeepAliveWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have [KeepAlive] children.", "detail": "", "kind": 7, "label": "SliverWithKeepAliveWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatusTransitionWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given animation changes status.", "detail": "", "kind": 7, "label": "StatusTransitionWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutChangedNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the layout of one of the descendants of the object receiving\nthis notification has changed in some way, and that therefore any\nassumptions about that layout are no longer valid.\n\nUseful if, for instance, you're trying to align multiple descendants.\n\nTo listen for notifications in a subtree, use a\n[NotificationListener<LayoutChangedNotification>].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].\n\nIn the widgets library, only the [SizeChangedLayoutNotifier] class and\n[Scrollable] classes dispatch this notification (specifically, they dispatch\n[SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).\nTransitions, in particular, do not. Changing one's layout in one's build\nfunction does not cause this notification to be dispatched automatically. If\nan ancestor expects to be notified for any layout change, make sure you\neither only use widgets that never change layout, or that notify their\nancestors when appropriate, or alternatively, dispatch the notifications\nyourself when appropriate.\n\nAlso, since this notification is sent when the layout is changed, it is only\nuseful for paint effects that depend on the layout. If you were to use this\nnotification to change the build, for instance, you would always be one\nframe behind, which would look really ugly and laggy.", "detail": "", "kind": 7, "label": "LayoutChangedNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that creates custom scroll effects using slivers.\n\nA [CustomScrollView] lets you supply [slivers] directly to create various\nscrolling effects, such as lists, grids, and expanding headers. For example,\nto create a scroll view that contains an expanding app bar followed by a\nlist and a grid, use a list of three slivers: [SliverAppBar], [SliverList],\nand [SliverGrid].\n\n[Widget]s in these [slivers] must produce [RenderSliver] objects.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n\nThis sample code shows a scroll view that contains a flexible pinned app\nbar, a grid, and an infinite list.\n\n```dart\nCustomScrollView(\n slivers: <Widget>[\n const SliverAppBar(\n pinned: true,\n expandedHeight: 250.0,\n flexibleSpace: FlexibleSpaceBar(\n title: Text('Demo'),\n ),\n ),\n SliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n ),\n SliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n ),\n ],\n)\n```\n\n## Accessibility\n\nA [CustomScrollView] can allow Talkback/VoiceOver to make announcements\nto the user when the scroll state changes. For example, on Android an\nannouncement might be read as \"showing items 1 to 10 of 23\". To produce\nthis announcement, the scroll view needs three pieces of information:\n\n * The first visible child index.\n * The total number of children.\n * The total number of visible children.\n\nThe last value can be computed exactly by the framework, however the first\ntwo must be provided. Most of the higher-level scrollable widgets provide\nthis information automatically. For example, [ListView] provides each child\nwidget with a semantic index automatically and sets the semantic child\ncount to the length of the list.\n\nTo determine visible indexes, the scroll view needs a way to associate the\ngenerated semantics of each scrollable item with a semantic index. This can\nbe done by wrapping the child widgets in an [IndexedSemantics].\n\nThis semantic index is not necessarily the same as the index of the widget in\nthe scrollable, because some widgets may not contribute semantic\ninformation. Consider a [new ListView.separated()]: every other widget is a\ndivider with no semantic information. In this case, only odd numbered\nwidgets have a semantic index (equal to the index ~/ 2). Furthermore, the\ntotal number of children in this example would be half the number of\nwidgets. (The [new ListView.separated()] constructor handles this\nautomatically; this is only used here as an example.)\n\nThe total number of visible children can be provided by the constructor\nparameter `semanticChildCount`. This should always be the same as the\nnumber of widgets wrapped in [IndexedSemantics].\n\nSee also:\n\n * [SliverList], which is a sliver that displays linear list of children.\n * [SliverFixedExtentList], which is a more efficient sliver that displays\n linear list of children that have the same extent along the scroll axis.\n * [SliverGrid], which is a sliver that displays a 2D array of children.\n * [SliverPadding], which is a sliver that adds blank space around another\n sliver.\n * [SliverAppBar], which is a sliver that displays a header that can expand\n and float as the scroll view scrolls.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].\n * [IndexedSemantics], which allows annotating child lists with an index\n for scroll announcements.", "detail": "", "kind": 7, "label": "CustomScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's size.\n\nSimilar to the [Builder] widget except that the framework calls the [builder]\nfunction at layout time and provides the parent widget's constraints. This\nis useful when the parent constrains the child's size and doesn't depend on\nthe child's intrinsic size. The [LayoutBuilder]'s final size will match its\nchild's size.\n\n\nIf the child should be smaller than the parent, consider wrapping the child\nin an [Align] widget. If the child might want to be bigger, consider\nwrapping it in a [SingleChildScrollView].\n\nSee also:\n\n * [Builder], which calls a `builder` function at build time.\n * [StatefulBuilder], which passes its `builder` function a `setState` callback.\n * [CustomSingleChildLayout], which positions its child during layout.", "detail": "", "kind": 7, "label": "LayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays a [dart:ui.Image] directly.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nThis widget is rarely used directly. Instead, consider using [Image].", "detail": "", "kind": 7, "label": "RawImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSingleChildLayout", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.\n\nSee also:\n\n * [SingleChildLayoutDelegate], which controls the layout of the child.\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [FractionallySizedBox], which sizes its child based on a fraction of its own\n size and positions the child according to an [Alignment] value.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.", "detail": "", "kind": 7, "label": "CustomSingleChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the subtree through which this notification bubbles must be\nkept alive even if it would normally be discarded as an optimization.\n\nFor example, a focused text field might fire this notification to indicate\nthat it should not be disposed even if the user scrolls the field off\nscreen.\n\nEach [KeepAliveNotification] is configured with a [handle] that consists of\na [Listenable] that is triggered when the subtree no longer needs to be kept\nalive.\n\nThe [handle] should be triggered any time the sending widget is removed from\nthe tree (in [State.deactivate]). If the widget is then rebuilt and still\nneeds to be kept alive, it should immediately send a new notification\n(possible with the very same [Listenable]) during build.\n\nThis notification is listened to by the [AutomaticKeepAlive] widget, which\nis added to the tree automatically by [SliverList] (and [ListView]) and\n[SliverGrid] (and [GridView]) widgets.\n\nFailure to trigger the [handle] in the manner described above will likely\ncause the [AutomaticKeepAlive] to lose track of whether the widget should be\nkept alive or not, leading to memory leaks or lost data. For example, if the\nwidget that requested keep-alive is removed from the subtree but doesn't\ntrigger its [Listenable] on the way out, then the subtree will continue to\nbe kept alive until the list itself is disposed. Similarly, if the\n[Listenable] is triggered while the widget needs to be kept alive, but a new\n[KeepAliveNotification] is not immediately sent, then the widget risks being\ngarbage collected while it wants to be kept alive.\n\nIt is an error to use the same [handle] in two [KeepAliveNotification]s\nwithin the same [AutomaticKeepAlive] without triggering that [handle] before\nthe second notification is sent.\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses\n[KeepAliveNotification] internally.", "detail": "", "kind": 7, "label": "KeepAliveNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElementVisitor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback to [BuildContext.visitChildElements].\n\nThe argument is the child being visited.\n\nIt is safe to call `element.visitChildElements` reentrantly within\nthis callback.", "detail": "(Element element) → void", "kind": 7, "label": "ElementVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListenerCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [Notification] listeners.\n\nReturn true to cancel the notification bubbling. Return false to allow the\nnotification to continue to be dispatched to further ancestors.\n\nUsed by [NotificationListener.onNotification].", "detail": "(T notification) → bool", "kind": 7, "label": "NotificationListenerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserScrollNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that the user has changed the direction in which they are\nscrolling.\n\nSee also:\n\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "UserScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Align", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that aligns its child within itself and optionally sizes itself\nbased on the child's size.\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\n## How it works\n\nThe [alignment] property describes a point in the `child`'s coordinate system\nand a different point in the coordinate system of this widget. The [Align]\nwidget positions the `child` such that both points are lined up on top of\neach other.\n\nThe [Align] widget in this example uses one of the defined constants from\n[Alignment], [topRight]. This places the [FlutterLogo] in the top right corner\nof the parent blue [Container].\n\n![A blue square container with the Flutter logo in the top right corner.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_constant.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment.topRight,\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [Alignment] used in the following example defines a single point:\n\n * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height\n of [FlutterLogo]/2 + height of [FlutterLogo]/2) = (36.0, 48.0).\n\nThe [Alignment] class uses a coordinate system with an origin in the center\nof the [Container], as shown with the [Icon] above. [Align] will place the\n[FlutterLogo] at (36.0, 48.0) according to this coordinate system.\n\n![A blue square container with the Flutter logo positioned according to the\nAlignment specified above. A point is marked at the center of the container\nfor the origin of the Alignment coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_alignment.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [FractionalOffset] used in the following example defines two points:\n\n * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0)\n in the coordinate system of the blue container.\n * (0.2 * width of [Align], 0.6 * height of [Align]) = (24.0, 72.0) in the\n coordinate system of the [Align] widget.\n\nThe [Align] widget positions the [FlutterLogo] such that the two points are on\ntop of each other. In this example, the top left of the [FlutterLogo] will\nbe placed at (24.0, 72.0) - (12.0, 36.0) = (12.0, 36.0) from the top left of\nthe [Align] widget.\n\nThe [FractionalOffset] class uses a coordinate system with an origin in the top-left\ncorner of the [Container] in difference to the center-oriented system used in\nthe example above with [Alignment].\n\n![A blue square container with the Flutter logo positioned according to the\nFractionalOffset specified above. A point is marked at the top left corner\nof the container for the origin of the FractionalOffset coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_fractional_offset.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: FractionalOffset(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Center], which is the same as [Align] but with the [alignment] always\n set to [Alignment.center].\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Align" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget for a given index, e.g., in a\nlist.\n\nUsed by [ListView.builder] and other APIs that use lazily-generated widgets.\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [TransitionBuilder], which is similar but also takes a child.", "detail": "(BuildContext context, int index) → Widget", "kind": 7, "label": "IndexedWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotationTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the rotation of a widget.\n\nHere's an illustration of the [RotationTransition] widget, with it's [turns]\nanimated by a [CurvedAnimation] set to [Curves.elasticOut]:\nSee also:\n\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "RotationTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldValidator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for validating a form field.\n\nReturns an error string to display if the input is invalid, or null\notherwise.\n\nUsed by [FormField.validator].", "detail": "(T value) → String", "kind": 7, "label": "FormFieldValidator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Stream].\n\n\nWidget rebuilding is scheduled by each interaction, using [State.setState],\nbut is otherwise decoupled from the timing of the stream. The [builder]\nis called at the discretion of the Flutter pipeline, and will thus receive a\ntiming-dependent sub-sequence of the snapshots that represent the\ninteraction with the stream.\n\nAs an example, when interacting with a stream producing the integers\n0 through 9, the [builder] may be called with any ordered sub-sequence\nof the following snapshots that includes the last one (the one with\nConnectionState.done):\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 0)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 1)`\n* ...\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 9)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.done, 9)`\n\nThe actual sequence of invocations of the [builder] depends on the relative\ntiming of events produced by the stream and the build rate of the Flutter\npipeline.\n\nChanging the [StreamBuilder] configuration to another stream during event\ngeneration introduces snapshot pairs of the form:\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.none, 5)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, 5)`\n\nThe latter will be produced only when the new stream is non-null, and the\nformer only when the old stream is non-null.\n\nThe stream may produce errors, resulting in snapshots of the form:\n\n* `new AsyncSnapshot<int>.withError(ConnectionState.active, 'some error')`\n\nThe data and error fields of snapshots produced are only changed when the\nstate is `ConnectionState.active`.\n\nThe initial snapshot data can be controlled by specifying [initialData].\nThis should be used to ensure that the first frame has the expected value,\nas the builder will always be called before the stream listener has a chance\nto be processed.\n\n\nThis sample shows a [StreamBuilder] configuring a text label to show the\nlatest bid received for a lot in an auction. Assume the `_lot` field is\nset by a selector elsewhere in the UI.\n\n```dart\nStreamBuilder<int>(\n stream: _lot?.bids, // a Stream<int> or null\n builder: (BuildContext context, AsyncSnapshot<int> snapshot) {\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n switch (snapshot.connectionState) {\n case ConnectionState.none: return Text('Select lot');\n case ConnectionState.waiting: return Text('Awaiting bids...');\n case ConnectionState.active: return Text('\\$${snapshot.data}');\n case ConnectionState.done: return Text('\\$${snapshot.data} (closed)');\n }\n return null; // unreachable\n },\n)\n```\n\nSee also:\n\n * [ValueListenableBuilder], which wraps a [ValueListenable] instead of a\n [Stream].\n * [StreamBuilderBase], which supports widget building based on a computation\n that spans all interactions made with the stream.", "detail": "", "kind": 7, "label": "StreamBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMask", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a mask generated by a [Shader] to its child.\n\nFor example, [ShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.\n\n\nThis example makes the text look like it is on fire:\n\n```dart\nShaderMask(\n shaderCallback: (Rect bounds) {\n return RadialGradient(\n center: Alignment.topLeft,\n radius: 1.0,\n colors: <Color>[Colors.yellow, Colors.deepOrange.shade900],\n tileMode: TileMode.mirror,\n ).createShader(bounds);\n },\n child: const Text('I’m burning the memories'),\n)\n```\n\nSee also:\n\n * [Opacity], which can apply a uniform alpha effect to its child.\n * [CustomPaint], which lets you draw directly on the canvas.\n * [DecoratedBox], for another approach at decorating child widgets.\n * [BackdropFilter], which applies an image filter to the background.", "detail": "", "kind": 7, "label": "ShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).", "detail": "(TextSelection selection, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageScaffold", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements a single iOS application page's layout.\n\nThe scaffold lays out the navigation bar on top and the content between or\nbehind the navigation bar.\n\nSee also:\n\n * [CupertinoTabScaffold], a similar widget for tabbed applications.\n * [CupertinoPageRoute], a modal page route that typically hosts a\n [CupertinoPageScaffold] with support for iOS-style page transitions.", "detail": "", "kind": 7, "label": "CupertinoPageScaffold" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DatePickerDateOrder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the order of the columns inside [CupertinoDatePicker] in date mode.", "detail": "", "kind": 13, "label": "DatePickerDateOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSlider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style slider.\n\nUsed to select from a range of values.\n\nA slider can be used to select from either a continuous or a discrete set of\nvalues. The default is use a continuous range of values from [min] to [max].\nTo use discrete values, use a non-null value for [divisions], which\nindicates the number of discrete intervals. For example, if [min] is 0.0 and\n[max] is 50.0 and [divisions] is 5, then the slider can take on the values\ndiscrete values 0.0, 10.0, 20.0, 30.0, 40.0, and 50.0.\n\nThe slider itself does not maintain any state. Instead, when the state of\nthe slider changes, the widget calls the [onChanged] callback. Most widgets\nthat use a slider will listen for the [onChanged] callback and rebuild the\nslider with a new [value] to update the visual appearance of the slider.\n\nSee also:\n\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/sliders/>", "detail": "", "kind": 7, "label": "CupertinoSlider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which a single widget can be scrolled.\n\nThis widget is useful when you have a single box that will normally be\nentirely visible, for example a clock face in a time picker, but you need to\nmake sure it can be scrolled if the container gets too small in one axis\n(the scroll direction).\n\nIt is also useful if you need to shrink-wrap in both axes (the main\nscrolling direction as well as the cross axis), as one might see in a dialog\nor pop-up menu. In that case, you might pair the [SingleChildScrollView]\nwith a [ListBody] child.\n\nWhen you have a list of children and do not require cross-axis\nshrink-wrapping behavior, for example a scrolling list that is always the\nwidth of the screen, consider [ListView], which is vastly more efficient\nthat a [SingleChildScrollView] containing a [ListBody] or [Column] with\nmany children.\n\n## Sample code: Using [SingleChildScrollView] with a [Column]\n\nSometimes a layout is designed around the flexible properties of a\n[Column], but there is the concern that in some cases, there might not\nbe enough room to see the entire contents. This could be because some\ndevices have unusually small screens, or because the application can\nbe used in landscape mode where the aspect ratio isn't what was\noriginally envisioned, or because the application is being shown in a\nsmall window in split-screen mode. In any case, as a result, it might\nmake sense to wrap the layout in a [SingleChildScrollView].\n\nSimply doing so, however, usually results in a conflict between the [Column],\nwhich typically tries to grow as big as it can, and the [SingleChildScrollView],\nwhich provides its children with an infinite amount of space.\n\nTo resolve this apparent conflict, there are a couple of techniques, as\ndiscussed below. These techniques should only be used when the content is\nnormally expected to fit on the screen, so that the lazy instantiation of\na sliver-based [ListView] or [CustomScrollView] is not expected to provide\nany performance benefit. If the viewport is expected to usually contain\ncontent beyond the dimensions of the screen, then [SingleChildScrollView]\nwould be very expensive.\n\n### Centering, spacing, or aligning fixed-height content\n\nIf the content has fixed (or intrinsic) dimensions but needs to be spaced out,\ncentered, or otherwise positioned using the [Flex] layout model of a [Column],\nthe following technique can be used to provide the [Column] with a minimum\ndimension while allowing it to shrink-wrap the contents when there isn't enough\nroom to apply these spacing or alignment needs.\n\nA [LayoutBuilder] is used to obtain the size of the viewport (implicitly via\nthe constraints that the [SingleChildScrollView] sees, since viewports\ntypically grow to fit their maximum height constraint). Then, inside the\nscroll view, a [ConstrainedBox] is used to set the minimum height of the\n[Column].\n\nThe [Column] has no [Expanded] children, so rather than take on the infinite\nheight from its [BoxConstraints.maxHeight], (the viewport provides no maximum height\nconstraint), it automatically tries to shrink to fit its children. It cannot\nbe smaller than its [BoxConstraints.minHeight], though, and It therefore\nbecomes the bigger of the minimum height provided by the\n[ConstrainedBox] and the sum of the heights of the children.\n\nIf the children aren't enough to fit that minimum size, the [Column] ends up\nwith some remaining space to allocate as specified by its\n[Column.mainAxisAlignment] argument.\n\nIn this example, the children are spaced out equally, unless there's no more\nroom, in which case they stack vertically and scroll.\n\nWhen using this technique, [Expanded] and [Flexible] are not useful, because\nin both cases the \"available space\" is infinite (since this is in a viewport).\nThe next section describes a technique for providing a maximum height constraint.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: Column(\n mainAxisSize: MainAxisSize.min,\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Container(\n // Another fixed-height child.\n color: const Color(0xff008000), // Green\n height: 120.0,\n ),\n ],\n ),\n ),\n );\n },\n );\n}\n```\n\n### Expanding content to fit the viewport\n\nThe following example builds on the previous one. In addition to providing a\nminimum dimension for the child [Column], an [IntrinsicHeight] widget is used\nto force the column to be exactly as big as its contents. This constraint\ncombines with the [ConstrainedBox] constraints discussed previously to ensure\nthat the column becomes either as big as viewport, or as big as the contents,\nwhichever is biggest.\n\nBoth constraints must be used to get the desired effect. If only the\n[IntrinsicHeight] was specified, then the column would not grow to fit the\nentire viewport when its children were smaller than the whole screen. If only\nthe size of the viewport was used, then the [Column] would overflow if the\nchildren were bigger than the viewport.\n\nThe widget that is to grow to fit the remaining space so provided is wrapped\nin an [Expanded] widget.\n\nThis technique is quite expensive, as it more or less requires that the contents\nof the viewport be laid out twice (once to find their intrinsic dimensions, and\nonce to actually lay them out). The number of widgets within the column should\ntherefore be kept small. Alternatively, subsets of the children that have known\ndimensions can be wrapped in a [SizedBox] that has tight vertical constraints,\nso that the intrinsic sizing algorithm can short-circuit the computation when it\nreaches those parts of the subtree.\n\nIn this example, the column becomes either as big as viewport, or as big as\nthe contents, whichever is biggest.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: IntrinsicHeight(\n child: Column(\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Expanded(\n // A flexible child that will grow to fit the viewport but\n // still be at least as big as necessary to fit its contents.\n child: Container(\n color: const Color(0xff800000), // Red\n height: 120.0,\n ),\n ),\n ],\n ),\n ),\n ),\n );\n },\n );\n}\n```\n\nSee also:\n\n * [ListView], which handles multiple children in a scrolling list.\n * [GridView], which handles multiple children in a scrolling grid.\n * [PageView], for a scrollable that works page by page.\n * [Scrollable], which handles arbitrary scrolling effects.", "detail": "", "kind": 7, "label": "SingleChildScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryConstructor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.constructor].", "detail": "() → T", "kind": 7, "label": "GestureRecognizerFactoryConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilderBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that build themselves based on interaction with\na specified [Stream].\n\nA [StreamBuilderBase] is stateful and maintains a summary of the interaction\nso far. The type of the summary and how it is updated with each interaction\nis defined by sub-classes.\n\nExamples of summaries include:\n\n* the running average of a stream of integers;\n* the current direction and speed based on a stream of geolocation data;\n* a graph displaying data points from a stream.\n\nIn general, the summary is the result of a fold computation over the data\nitems and errors received from the stream along with pseudo-events\nrepresenting termination or change of stream. The initial summary is\nspecified by sub-classes by overriding [initial]. The summary updates on\nreceipt of stream data and errors are specified by overriding [afterData] and\n[afterError], respectively. If needed, the summary may be updated on stream\ntermination by overriding [afterDone]. Finally, the summary may be updated\non change of stream by overriding [afterDisconnected] and [afterConnected].\n\n`T` is the type of stream events.\n\n`S` is the type of interaction summary.\n\nSee also:\n\n * [StreamBuilder], which is specialized for the case where only the most\n recent interaction is needed for widget building.", "detail": "", "kind": 7, "label": "StreamBuilderBase" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a [Navigator] widget.", "detail": "", "kind": 7, "label": "NavigatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Visibility", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to show or hide a child.\n\nBy default, the [visible] property controls whether the [child] is included\nin the subtree or not; when it is not [visible], the [replacement] child\n(typically a zero-sized box) is included instead.\n\nA variety of flags can be used to tweak exactly how the child is hidden.\n(Changing the flags dynamically is discouraged, as it can cause the [child]\nsubtree to be rebuilt, with any state in the subtree being discarded.\nTypically, only the [visible] flag is changed dynamically.)\n\nThese widgets provide some of the facets of this one:\n\n * [Opacity], which can stop its child from being painted.\n * [Offstage], which can stop its child from being laid out or painted.\n * [TickerMode], which can stop its child from being animated.\n * [ExcludeSemantics], which can hide the child from accessibility tools.\n * [IgnorePointer], which can disable touch interactions with the child.\n\nUsing this widget is not necessary to hide children. The simplest way to\nhide a child is just to not include it, or, if a child _must_ be given (e.g.\nbecause the parent is a [StatelessWidget]) then to use [SizedBox.shrink]\ninstead of the child that would otherwise be included.\n\nSee also:\n\n * [AnimatedSwitcher], which can fade from one child to the next as the\n subtree changes.\n * [AnimatedCrossFade], which can fade between two specific children.", "detail": "", "kind": 7, "label": "Visibility" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a path.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\n[PhysicalModel] does the same but only supports shapes that can be expressed\nas rectangles with rounded corners.\n\nSee also:\n\n * [ShapeBorderClipper], which converts a [ShapeBorder] to a [CustomerClipper], as\n needed by this widget.", "detail": "", "kind": 7, "label": "PhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildOwner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manager class for the widgets framework.\n\nThis class tracks which widgets need rebuilding, and handles other tasks\nthat apply to widget trees as a whole, such as managing the inactive element\nlist for the tree and triggering the \"reassemble\" command when necessary\nduring hot reload when debugging.\n\nThe main build owner is typically owned by the [WidgetsBinding], and is\ndriven from the operating system along with the rest of the\nbuild/layout/paint pipeline.\n\nAdditional build owners can be built to manage off-screen widget trees.\n\nTo assign a build owner to a tree, use the\n[RootRenderObjectElement.assignOwner] method on the root element of the\nwidget tree.", "detail": "", "kind": 7, "label": "BuildOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] of entries that can be managed independently.\n\nOverlays let independent child widgets \"float\" visual elements on top of\nother widgets by inserting them into the overlay's [Stack]. The overlay lets\neach of these widgets manage their participation in the overlay using\n[OverlayEntry] objects.\n\nAlthough you can create an [Overlay] directly, it's most common to use the\noverlay created by the [Navigator] in a [WidgetsApp] or a [MaterialApp]. The\nnavigator uses its overlay to manage the visual appearance of its routes.\n\nSee also:\n\n * [OverlayEntry].\n * [OverlayState].\n * [WidgetsApp].\n * [MaterialApp].", "detail": "", "kind": 7, "label": "Overlay" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have multiple box children.\n\nHelps subclasses build their children lazily using a [SliverChildDelegate].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the color, opacity, and size of icons.\n\nUsed by [IconTheme] to control the color, opacity, and size of icons in a\nwidget subtree.\n\nTo obtain the current icon theme, use [IconTheme.of]. To convert an icon\ntheme to a version with all the fields filled in, use [new\nIconThemeData.fallback].", "detail": "", "kind": 7, "label": "IconThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedAlign", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Align] which automatically transitions the child's\nposition over a given duration whenever the given [alignment] changes.\n\nHere's an illustration of what this can look like, using a [curve] of\n[Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedPadding], which can animate the padding instead of the\n alignment.\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.", "detail": "", "kind": 7, "label": "AnimatedAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragAnchor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where the [Draggable] should be anchored during a drag.", "detail": "", "kind": 13, "label": "DragAnchor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A general-purpose widget for building animations.\n\nAnimatedBuilder is useful for more complex widgets that wish to include\nan animation as part of a larger build function. To use AnimatedBuilder,\nsimply construct the widget and pass it a builder function.\n\nFor simple cases without additional state, consider using\n[AnimatedWidget].\n\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nanimation, it's more efficient to build that subtree once instead of\nrebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\nAnimatedBuilder will pass it back to your builder function so that you\ncan incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedBuilder] and makes use of the\n[child] feature to avoid having to rebuild the [Container] each time.\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return AnimatedBuilder(\n animation: _controller,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n builder: (BuildContext context, Widget child) {\n return Transform.rotate(\n angle: _controller.value * 2.0 * math.pi,\n child: child,\n );\n },\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "AnimatedBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnconstrainedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes no constraints on its child, allowing it to render\nat its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This container will then attempt\nto adopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the container, a warning will be\nprinted on the console, and black and yellow striped areas will appear where\nthe overflow occurs.\n\nSee also:\n\n * [ConstrainedBox], for a box which imposes constraints on its child.\n * [Align], which loosens the constraints given to the child rather than\n removing them entirely.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow\n the parent.", "detail": "", "kind": 7, "label": "UnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single list of children. (This superclass only provides the\nstorage for that child list, it doesn't actually provide the updating\nlogic.)", "detail": "", "kind": 7, "label": "MultiChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a callback that verifies that it's OK to call [Navigator.pop].\n\nUsed by [Form.onWillPop], [ModalRoute.addScopedWillPopCallback],\n[ModalRoute.removeScopedWillPopCallback], and [WillPopScope].", "detail": "() → Future<bool>", "kind": 7, "label": "WillPopCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedOverflowBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is a specific size but passes its original constraints\nthrough to its child, which may then overflow.\n\nSee also:\n\n * [OverflowBox], A widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoColors", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A palette of [Color] constants that describe colors commonly used when\nmatching the iOS platform aesthetics.", "detail": "", "kind": 7, "label": "CupertinoColors" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of a [FormField]. Passed to the [FormFieldBuilder] method\nfor use in constructing the form field's widget.", "detail": "", "kind": 7, "label": "FormFieldState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a filter to the existing painted content and then\npaints [child].\n\nThe filter will be applied to all the area within its parent or ancestor\nwidget's clip. If there's no clip, the filter will be applied to the full\nscreen.\n\n\nIf the [BackdropFilter] needs to be applied to an area that exactly matches\nits child, wraps the [BackdropFilter] with a clip widget that clips exactly\nto that child.\n\n```dart\nStack(\n fit: StackFit.expand,\n children: <Widget>[\n Text('0' * 10000),\n Center(\n child: ClipRect( // <-- clips to the 200x200 [Container] below\n child: BackdropFilter(\n filter: ui.ImageFilter.blur(\n sigmaX: 5.0,\n sigmaY: 5.0,\n ),\n child: Container(\n alignment: Alignment.center,\n width: 200.0,\n height: 200.0,\n child: Text('Hello World'),\n ),\n ),\n ),\n ),\n ],\n)\n```\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.\n\nSee also:\n\n * [DecoratedBox], which draws a background under (or over) a widget.\n * [Opacity], which changes the opacity of the widget itself.", "detail": "", "kind": 7, "label": "BackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Notification] related to scrolling.\n\n[Scrollable] widgets notify their ancestors about scrolling-related changes.\nThe notifications have the following lifecycle:\n\n * A [ScrollStartNotification], which indicates that the widget has started\n scrolling.\n * Zero or more [ScrollUpdateNotification]s, which indicate that the widget\n has changed its scroll position, mixed with zero or more\n [OverscrollNotification]s, which indicate that the widget has not changed\n its scroll position because the change would have caused its scroll\n position to go outside its scroll bounds.\n * Interspersed with the [ScrollUpdateNotification]s and\n [OverscrollNotification]s are zero or more [UserScrollNotification]s,\n which indicate that the user has changed the direction in which they are\n scrolling.\n * A [ScrollEndNotification], which indicates that the widget has stopped\n scrolling.\n * A [UserScrollNotification], with a [UserScrollNotification.direction] of\n [ScrollDirection.idle].\n\nNotifications bubble up through the tree, which means a given\n[NotificationListener] will receive notifications for all descendant\n[Scrollable] widgets. To focus on notifications from the nearest\n[Scrollable] descendant, check that the [depth] property of the notification\nis zero.\n\nWhen a scroll notification is received by a [NotificationListener], the\nlistener will have already completed build and layout, and it is therefore\ntoo late for that widget to call [State.setState]. Any attempt to adjust the\nbuild or layout based on a scroll notification would result in a layout that\nlagged one frame behind, which is a poor user experience. Scroll\nnotifications are therefore primarily useful for paint effects (since paint\nhappens after layout). The [GlowingOverscrollIndicator] and [Scrollbar]\nwidgets are examples of paint effects that use scroll notifications.\n\nTo drive layout based on the scroll position, consider listening to the\n[ScrollPosition] directly (or indirectly via a [ScrollController]).", "detail": "", "kind": 7, "label": "ScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an Android view in the Widget hierarchy.\n\nRequires Android API level 20 or greater.\n\nEmbedding Android views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\nThe embedded Android view is painted just like any other Flutter widget and transformations\napply to it as well.\n\nThe widget fills all available space, the parent of this object must provide bounded layout\nconstraints.\n\nThe widget participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified in the `gestureRecognizers` constructor parameter. If\nthe set of gesture recognizers is empty, a gesture will be dispatched to the platform\nview iff it was not claimed by any other gesture recognizer.\n\nThe Android view object is created using a [PlatformViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewFactory.html).\nPlugins can register platform view factories with [PlatformViewRegistry#registerViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewRegistry.html#registerViewFactory-java.lang.String-io.flutter.plugin.platform.PlatformViewFactory-).\n\nRegistration is typically done in the plugin's registerWith method, e.g:\n\n```java\n public static void registerWith(Registrar registrar) {\n registrar.platformViewRegistry().registerViewFactory(\"webview\", WebViewFactory(registrar.messenger()));\n }\n```\n\nThe platform view's lifetime is the same as the lifetime of the [State] object for this widget.\nWhen the [State] is disposed the platform view (and auxiliary resources) are lazily\nreleased (some resources are immediately released and some by platform garbage collector).\nA stateful widget's state is disposed when the widget is removed from the tree or when it is\nmoved within the tree. If the stateful widget has a key and it's only moved relative to its siblings,\nor it has a [GlobalKey] and it's moved within the tree, it will not be disposed.", "detail": "", "kind": 7, "label": "AndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGrid", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[SliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nThe main axis direction of a grid is the direction in which it scrolls; the\ncross axis direction is the orthogonal direction.\n\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows twenty boxes in a pretty teal grid:\n\n```dart\nSliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n)\n```\n\n\nSee also:\n\n * [SliverList], which places its children in a linear array.\n * [SliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.", "detail": "", "kind": 7, "label": "SliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image that shows a [placeholder] image while the target [image] is\nloading, then fades in the new image when it loads.\n\nUse this class to display long-loading images, such as [new NetworkImage],\nso that the image appears on screen with a graceful animation rather than\nabruptly pops onto the screen.\n\n\nIf the [image] emits an [ImageInfo] synchronously, such as when the image\nhas been loaded and cached, the [image] is displayed immediately and the\n[placeholder] is never displayed.\n\n[fadeOutDuration] and [fadeOutCurve] control the fade-out animation of the\nplaceholder.\n\n[fadeInDuration] and [fadeInCurve] control the fade-in animation of the\ntarget [image].\n\nPrefer a [placeholder] that's already cached so that it is displayed in one\nframe. This prevents it from popping onto the screen.\n\nWhen [image] changes it is resolved to a new [ImageStream]. If the new\n[ImageStream.key] is different this widget subscribes to the new stream and\nreplaces the displayed image with images emitted by the new stream.\n\nWhen [placeholder] changes and the [image] has not yet emitted an\n[ImageInfo], then [placeholder] is resolved to a new [ImageStream]. If the\nnew [ImageStream.key] is different this widget subscribes to the new stream\nand replaces the displayed image to images emitted by the new stream.\n\nWhen either [placeholder] or [image] changes, this widget continues showing\nthe previously loaded image (if any) until the new image provider provides a\ndifferent image. This is known as \"gapless playback\" (see also\n[Image.gaplessPlayback]).\n\n\n```dart\nFadeInImage(\n // here `bytes` is a Uint8List containing the bytes for the in-memory image\n placeholder: MemoryImage(bytes),\n image: NetworkImage('https://backend.example.com/image.png'),\n)\n```", "detail": "", "kind": 7, "label": "FadeInImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that manages [Hero] transitions.\n\nAn instance of [HeroController] should be used in [Navigator.observers].\nThis is done automatically by [MaterialApp].", "detail": "", "kind": 7, "label": "HeroController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [PageView].\n\nThe metrics are available on [ScrollNotification]s generated from\n[PageView]s.", "detail": "", "kind": 7, "label": "PageMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModelElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [InheritedModel] as its configuration.", "detail": "", "kind": 7, "label": "InheritedModelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSizeWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for widgets that can return the size this widget would prefer\nif it were otherwise unconstrained.\n\nThere are a few cases, notably [AppBar] and [TabBar], where it would be\nundesirable for the widget to constrain its own size but where the widget\nneeds to expose a preferred or \"default\" size. For example a primary\n[Scaffold] sets its app bar height to the app bar's preferred height\nplus the height of the system status bar.\n\nUse [PreferredSize] to give a preferred size to an arbitrary widget.", "detail": "", "kind": 7, "label": "PreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFixedExtentList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[SliverFixedExtentList] places its children in a linear array along the main\naxis starting at offset zero and without gaps. Each child is forced to have\nthe [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[SliverFixedExtentList] is more efficient than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis.\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows an infinite number of items in varying shades of blue:\n\n```dart\nSliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n)\n```\n\n\nSee also:\n\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Direction of the hero's flight based on the navigation operation.", "detail": "", "kind": 13, "label": "HeroFlightDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showSnackBar]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself had been used, no [Scaffold] would have\nbeen found, and the [Scaffold.of] function would have returned null.\n\n```dart\n @override\n Widget build(BuildContext context) {\n // here, Scaffold.of(context) returns null\n return Scaffold(\n appBar: AppBar(title: Text('Demo')),\n body: Builder(\n builder: (BuildContext context) {\n return FlatButton(\n child: Text('BUTTON'),\n onPressed: () {\n // here, Scaffold.of(context) returns the locally created Scaffold\n Scaffold.of(context).showSnackBar(SnackBar(\n content: Text('Hello.')\n ));\n }\n );\n }\n )\n );\n }\n```\n\nThe [BuildContext] for a particular widget can change location over time as\nthe widget is moved around the tree. Because of this, values returned from\nthe methods on this class should not be cached beyond the execution of a\nsingle synchronous function.\n\n[BuildContext] objects are actually [Element] objects. The [BuildContext]\ninterface is used to discourage direct manipulation of [Element] objects.", "detail": "", "kind": 7, "label": "BuildContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTarget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that receives data when a [Draggable] widget is dropped.\n\nWhen a draggable is dragged on top of a drag target, the drag target is\nasked whether it will accept the data the draggable is carrying. If the user\ndoes drop the draggable on top of the drag target (and the drag target has\nindicated that it will accept the draggable's data), then the drag target is\nasked to accept the draggable's data.\n\nSee also:\n\n * [Draggable]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "DragTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Widget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the configuration for an [Element].\n\nWidgets are the central class hierarchy in the Flutter framework. A widget\nis an immutable description of part of a user interface. Widgets can be\ninflated into elements, which manage the underlying render tree.\n\nWidgets themselves have no mutable state (all their fields must be final).\nIf you wish to associate mutable state with a widget, consider using a\n[StatefulWidget], which creates a [State] object (via\n[StatefulWidget.createState]) whenever it is inflated into an element and\nincorporated into the tree.\n\nA given widget can be included in the tree zero or more times. In particular\na given widget can be placed in the tree multiple times. Each time a widget\nis placed in the tree, it is inflated into an [Element], which means a\nwidget that is incorporated into the tree multiple times will be inflated\nmultiple times.\n\nThe [key] property controls how one widget replaces another widget in the\ntree. If the [runtimeType] and [key] properties of the two widgets are\n[operator==], respectively, then the new widget replaces the old widget by\nupdating the underlying element (i.e., by calling [Element.update] with the\nnew widget). Otherwise, the old element is removed from the tree, the new\nwidget is inflated into an element, and the new element is inserted into the\ntree.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.", "detail": "", "kind": 7, "label": "Widget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerLocation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to show a [Banner].\n\nThe start and end locations are relative to the ambient [Directionality]\n(which can be overridden by [Banner.layoutDirection]).", "detail": "", "kind": 13, "label": "BannerLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPhysicalModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PhysicalModel].\n\nThe [borderRadius] and [elevation] are animated.\n\nThe [color] is animated if the [animateColor] property is set; otherwise,\nthe color changes immediately at the start of the animation for the other\ntwo properties. This allows the color to be animated independently (e.g.\nbecause it is being driven by an [AnimatedTheme]).\n\nThe [shape] is not animated.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].", "detail": "", "kind": 7, "label": "AnimatedPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoScrollbar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS style scrollbar.\n\nA scrollbar indicates which portion of a [Scrollable] widget is actually\nvisible.\n\nTo add a scrollbar to a [ScrollView], simply wrap the scroll view widget in\na [CupertinoScrollbar] widget.\n\nSee also:\n\n * [ListView], which display a linear, scrollable list of children.\n * [GridView], which display a 2 dimensional, scrollable array of children.\n * [Scrollbar], a Material Design scrollbar that dynamically adapts to the\n platform showing either an Android style or iOS style scrollbar.", "detail": "", "kind": 7, "label": "CupertinoScrollbar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapInjector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [SliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [Viewport], so that it will always be laid out before the\n[SliverOverlapInjector] during a particular frame.\n\nSee also:\n\n * [NestedScrollView], which uses a [SliverOverlapAbsorber] to align its\n children, and which shows sample usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightShuttleBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A function that lets [Hero]s self supply a [Widget] that is shown during the\nhero's flight from one route to another instead of default (which is to\nshow the destination route's instance of the Hero).", "detail": "(BuildContext flightContext, Animation<double> animation, HeroFlightDirection flightDirection, BuildContext fromHeroContext, BuildContext toHeroContext) → Widget", "kind": 7, "label": "HeroFlightShuttleBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that manages a pair of text selection handles.\n\nThe selection handles are displayed in the [Overlay] that most closely\nencloses the given [BuildContext].", "detail": "", "kind": 7, "label": "TextSelectionOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoNavigationBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled navigation bar.\n\nThe navigation bar is a toolbar that minimally consists of a widget, normally\na page title, in the [middle] of the toolbar.\n\nIt also supports a [leading] and [trailing] widget before and after the\n[middle] widget while keeping the [middle] widget centered.\n\nThe [leading] widget will automatically be a back chevron icon button (or a\nclose button in case of a fullscreen dialog) to pop the current route if none\nis provided and [automaticallyImplyLeading] is true (true by default).\n\nThe [middle] widget will automatically be a title text from the current\n[CupertinoPageRoute] if none is provided and [automaticallyImplyMiddle] is\ntrue (true by default).\n\nIt should be placed at top of the screen and automatically accounts for\nthe OS's status bar.\n\nIf the given [backgroundColor]'s opacity is not 1.0 (which is the case by\ndefault), it will produce a blurring effect to the content behind it.\n\nWhen [transitionBetweenRoutes] is true, this navigation bar will transition\non top of the routes instead of inside them if the route being transitioned\nto also has a [CupertinoNavigationBar] or a [CupertinoSliverNavigationBar]\nwith [transitionBetweenRoutes] set to true. If [transitionBetweenRoutes] is\ntrue, none of the [Widget] parameters can contain a key in its subtree since\nthat widget will exist in multiple places in the tree simultaneously.\n\nBy default, only one [CupertinoNavigationBar] or [CupertinoSliverNavigationBar]\nshould be present in each [PageRoute] to support the default transitions.\nUse [transitionBetweenRoutes] or [heroTag] to customize the transition\nbehavior for multiple navigation bars per route.\n\nSee also:\n\n * [CupertinoPageScaffold], a page layout helper typically hosting the\n [CupertinoNavigationBar].\n * [CupertinoSliverNavigationBar] for a navigation bar to be placed in a\n scrolling list and that supports iOS-11-style large titles.", "detail": "", "kind": 7, "label": "CupertinoNavigationBar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Navigator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that manages a set of child widgets with a stack discipline.\n\nMany apps have a navigator near the top of their widget hierarchy in order\nto display their logical history using an [Overlay] with the most recently\nvisited pages visually on top of the older pages. Using this pattern lets\nthe navigator visually transition from one page to another by moving the widgets\naround in the overlay. Similarly, the navigator can be used to show a dialog\nby positioning the dialog widget above the current page.\n\n## Using the Navigator\n\nMobile apps typically reveal their contents via full-screen elements\ncalled \"screens\" or \"pages\". In Flutter these elements are called\nroutes and they're managed by a [Navigator] widget. The navigator\nmanages a stack of [Route] objects and provides methods for managing\nthe stack, like [Navigator.push] and [Navigator.pop].\n\n### Displaying a full-screen route\n\nAlthough you can create a navigator directly, it's most common to use\nthe navigator created by a [WidgetsApp] or a [MaterialApp] widget. You\ncan refer to that navigator with [Navigator.of].\n\nA [MaterialApp] is the simplest way to set things up. The [MaterialApp]'s\nhome becomes the route at the bottom of the [Navigator]'s stack. It is what\nyou see when the app is launched.\n\n```dart\nvoid main() {\n runApp(MaterialApp(home: MyAppHome()));\n}\n```\n\nTo push a new route on the stack you can create an instance of\n[MaterialPageRoute] with a builder function that creates whatever you\nwant to appear on the screen. For example:\n\n```dart\nNavigator.push(context, MaterialPageRoute<void>(\n builder: (BuildContext context) {\n return Scaffold(\n appBar: AppBar(title: Text('My Page')),\n body: Center(\n child: FlatButton(\n child: Text('POP'),\n onPressed: () {\n Navigator.pop(context);\n },\n ),\n ),\n );\n },\n));\n```\n\nThe route defines its widget with a builder function instead of a\nchild widget because it will be built and rebuilt in different\ncontexts depending on when it's pushed and popped.\n\nAs you can see, the new route can be popped, revealing the app's home\npage, with the Navigator's pop method:\n\n```dart\nNavigator.pop(context);\n```\n\nIt usually isn't necessary to provide a widget that pops the Navigator\nin a route with a [Scaffold] because the Scaffold automatically adds a\n'back' button to its AppBar. Pressing the back button causes\n[Navigator.pop] to be called. On Android, pressing the system back\nbutton does the same thing.\n\n### Using named navigator routes\n\nMobile apps often manage a large number of routes and it's often\neasiest to refer to them by name. Route names, by convention,\nuse a path-like structure (for example, '/a/b/c').\nThe app's home page route is named '/' by default.\n\nThe [MaterialApp] can be created\nwith a [Map<String, WidgetBuilder>] which maps from a route's name to\na builder function that will create it. The [MaterialApp] uses this\nmap to create a value for its navigator's [onGenerateRoute] callback.\n\n```dart\nvoid main() {\n runApp(MaterialApp(\n home: MyAppHome(), // becomes the route named '/'\n routes: <String, WidgetBuilder> {\n '/a': (BuildContext context) => MyPage(title: 'page A'),\n '/b': (BuildContext context) => MyPage(title: 'page B'),\n '/c': (BuildContext context) => MyPage(title: 'page C'),\n },\n ));\n}\n```\n\nTo show a route by name:\n\n```dart\nNavigator.pushNamed(context, '/b');\n```\n\n### Routes can return a value\n\nWhen a route is pushed to ask the user for a value, the value can be\nreturned via the [pop] method's result parameter.\n\nMethods that push a route return a [Future]. The Future resolves when the\nroute is popped and the [Future]'s value is the [pop] method's `result`\nparameter.\n\nFor example if we wanted to ask the user to press 'OK' to confirm an\noperation we could `await` the result of [Navigator.push]:\n\n```dart\nbool value = await Navigator.push(context, MaterialPageRoute<bool>(\n builder: (BuildContext context) {\n return Center(\n child: GestureDetector(\n child: Text('OK'),\n onTap: () { Navigator.pop(context, true); }\n ),\n );\n }\n));\n```\n\nIf the user presses 'OK' then value will be true. If the user backs\nout of the route, for example by pressing the Scaffold's back button,\nthe value will be null.\n\nWhen a route is used to return a value, the route's type parameter must\nmatch the type of [pop]'s result. That's why we've used\n`MaterialPageRoute<bool>` instead of `MaterialPageRoute<void>` or just\n`MaterialPageRoute`. (If you prefer to not specify the types, though, that's\nfine too.)\n\n### Popup routes\n\nRoutes don't have to obscure the entire screen. [PopupRoute]s cover the\nscreen with a [ModalRoute.barrierColor] that can be only partially opaque to\nallow the current screen to show through. Popup routes are \"modal\" because\nthey block input to the widgets below.\n\nThere are functions which create and show popup routes. For\nexample: [showDialog], [showMenu], and [showModalBottomSheet]. These\nfunctions return their pushed route's Future as described above.\nCallers can await the returned value to take an action when the\nroute is popped, or to discover the route's value.\n\nThere are also widgets which create popup routes, like [PopupMenuButton] and\n[DropdownButton]. These widgets create internal subclasses of PopupRoute\nand use the Navigator's push and pop methods to show and dismiss them.\n\n### Custom routes\n\nYou can create your own subclass of one of the widget library route classes\nlike [PopupRoute], [ModalRoute], or [PageRoute], to control the animated\ntransition employed to show the route, the color and behavior of the route's\nmodal barrier, and other aspects of the route.\n\nThe [PageRouteBuilder] class makes it possible to define a custom route\nin terms of callbacks. Here's an example that rotates and fades its child\nwhen the route appears or disappears. This route does not obscure the entire\nscreen because it specifies `opaque: false`, just as a popup route does.\n\n```dart\nNavigator.push(context, PageRouteBuilder(\n opaque: false,\n pageBuilder: (BuildContext context, _, __) {\n return Center(child: Text('My PageRoute'));\n },\n transitionsBuilder: (___, Animation<double> animation, ____, Widget child) {\n return FadeTransition(\n opacity: animation,\n child: RotationTransition(\n turns: Tween<double>(begin: 0.5, end: 1.0).animate(animation),\n child: child,\n ),\n );\n }\n));\n```\n\nThe page route is built in two parts, the \"page\" and the\n\"transitions\". The page becomes a descendant of the child passed to\nthe `transitionsBuilder` function. Typically the page is only built once,\nbecause it doesn't depend on its animation parameters (elided with `_`\nand `__` in this example). The transition is built on every frame\nfor its duration.\n\n### Nesting Navigators\n\nAn app can use more than one Navigator. Nesting one Navigator below\nanother Navigator can be used to create an \"inner journey\" such as tabbed\nnavigation, user registration, store checkout, or other independent journeys\nthat represent a subsection of your overall application.\n\n#### Real World Example\n\nIt is standard practice for iOS apps to use tabbed navigation where each\ntab maintains its own navigation history. Therefore, each tab has its own\n[Navigator], creating a kind of \"parallel navigation.\"\n\nIn addition to the parallel navigation of the tabs, it is still possible to\nlaunch full-screen pages that completely cover the tabs. For example: an\non-boarding flow, or an alert dialog. Therefore, there must exist a \"root\"\n[Navigator] that sits above the tab navigation. As a result, each of the\ntab's [Navigator]s are actually nested [Navigator]s sitting below a single\nroot [Navigator].\n\nThe nested [Navigator]s for tabbed navigation sit in [WidgetApp] and\n[CupertinoTabView], so you don't need to worry about nested [Navigator]s\nin this situation, but it's a real world example where nested [Navigator]s\nare used.\n\nThe following example demonstrates how a nested [Navigator] can be used to\npresent a standalone user registration journey.\n\nEven though this example uses two [Navigator]s to demonstrate nested\n[Navigator]s, a similar result is possible using only a single [Navigator].\n\nRun this example with `flutter run --route=/signup` to start it with\nthe signup flow instead of on the home page.\n\n```dart\nimport 'package:flutter/material.dart';\n```\n\n```dart\nvoid main() => runApp(new MyApp());\n```\n\n```dart\nclass MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Code Sample for Navigator',\n // MaterialApp contains our top-level Navigator\n initialRoute: '/',\n routes: {\n '/': (BuildContext context) => HomePage(),\n '/signup': (BuildContext context) => SignUpPage(),\n },\n );\n }\n}\n\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: Text('Home Page'),\n ),\n );\n }\n}\n\nclass CollectPersonalInfoPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: GestureDetector(\n onTap: () {\n // This moves from the personal info page to the credentials page,\n // replacing this page with that one.\n Navigator.of(context)\n .pushReplacementNamed('signup/choose_credentials');\n },\n child: Container(\n color: Colors.lightBlue,\n alignment: Alignment.center,\n child: Text('Collect Personal Info Page'),\n ),\n ),\n );\n }\n}\n\nclass ChooseCredentialsPage extends StatelessWidget {\n const ChooseCredentialsPage({\n this.onSignupComplete,\n });\n\n final VoidCallback onSignupComplete;\n\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: onSignupComplete,\n child: DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.pinkAccent,\n alignment: Alignment.center,\n child: Text('Choose Credentials Page'),\n ),\n ),\n );\n }\n}\n\nclass SignUpPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n // SignUpPage builds its own Navigator which ends up being a nested\n // Navigator in our app.\n return Navigator(\n initialRoute: 'signup/personal_info',\n onGenerateRoute: (RouteSettings settings) {\n WidgetBuilder builder;\n switch (settings.name) {\n case 'signup/personal_info':\n // Assume CollectPersonalInfoPage collects personal info and then\n // navigates to 'signup/choose_credentials'.\n builder = (BuildContext _) => CollectPersonalInfoPage();\n break;\n case 'signup/choose_credentials':\n // Assume ChooseCredentialsPage collects new credentials and then\n // invokes 'onSignupComplete()'.\n builder = (BuildContext _) => ChooseCredentialsPage(\n onSignupComplete: () {\n // Referencing Navigator.of(context) from here refers to the\n // top level Navigator because SignUpPage is above the\n // nested Navigator that it created. Therefore, this pop()\n // will pop the entire \"sign up\" journey and return to the\n // \"/\" route, AKA HomePage.\n Navigator.of(context).pop();\n },\n );\n break;\n default:\n throw Exception('Invalid route: ${settings.name}');\n }\n return MaterialPageRoute(builder: builder, settings: settings);\n },\n );\n }\n}\n```\n\n[Navigator.of] operates on the nearest ancestor [Navigator] from the given\n[BuildContext]. Be sure to provide a [BuildContext] below the intended\n[Navigator], especially in large [build] methods where nested [Navigator]s\nare created. The [Builder] widget can be used to access a [BuildContext] at\na desired location in the widget subtree.", "detail": "", "kind": 7, "label": "Navigator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverSafeArea", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that insets another sliver by sufficient padding to avoid\nintrusions by the operating system.\n\nFor example, this will indent the sliver by enough to avoid the status bar\nat the top of the screen.\n\nIt will also indent the sliver by the amount necessary to avoid The Notch\non the iPhone X, or other similar creative physical features of the\ndisplay.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\nSee also:\n\n * [SafeArea], for insetting widgets to avoid operating system intrusions.\n * [SliverPadding], for insetting slivers in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SliverSafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoFullscreenDialogTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style transition used for summoning fullscreen dialogs.\n\nFor example, used when creating a new calendar event by bringing in the next\nscreen from the bottom.", "detail": "", "kind": 7, "label": "CupertinoFullscreenDialogTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTextField", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style text field.\n\nA text field lets the user enter text, either with a hardware keyboard or with\nan onscreen keyboard.\n\nThis widget corresponds to both a `UITextField` and an editable `UITextView`\non iOS.\n\nThe text field calls the [onChanged] callback whenever the user changes the\ntext in the field. If the user indicates that they are done typing in the\nfield (e.g., by pressing a button on the soft keyboard), the text field\ncalls the [onSubmitted] callback.\n\nTo control the text that is displayed in the text field, use the\n[controller]. For example, to set the initial value of the text field, use\na [controller] that already contains some text such as:\n\n\n```dart\nclass MyPrefilledText extends StatefulWidget {\n @override\n _MyPrefilledTextState createState() => _MyPrefilledTextState();\n}\n\nclass _MyPrefilledTextState extends State<MyPrefilledText> {\n TextEditingController _textController;\n\n @override\n void initState() {\n super.initState();\n _textController = TextEditingController(text: 'initial text');\n }\n\n @override\n Widget build(BuildContext context) {\n return CupertinoTextField(controller: _textController);\n }\n}\n```\n\nThe [controller] can also control the selection and composing region (and to\nobserve changes to the text, selection, and composing region).\n\nThe text field has an overridable [decoration] that, by default, draws a\nrounded rectangle border around the text field. If you set the [decoration]\nproperty to null, the decoration will be removed entirely.\n\nSee also:\n\n * <https://developer.apple.com/documentation/uikit/uitextfield>\n * [TextField], an alternative text field widget that follows the Material\n Design UI conventions.\n * [EditableText], which is the raw text editing control at the heart of a\n [TextField].", "detail": "", "kind": 7, "label": "CupertinoTextField" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "RenderObjectWidgets provide the configuration for [RenderObjectElement]s,\nwhich wrap [RenderObject]s, which provide the actual rendering of the\napplication.", "detail": "", "kind": 7, "label": "RenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures described by the given gesture\nfactories.\n\nFor common gestures, use a [GestureRecognizer].\n[RawGestureDetector] is useful primarily when developing your\nown gesture recognizers.\n\nConfiguring the gesture recognizers requires a carefully constructed map, as\ndescribed in [gestures] and as shown in the example below.\n\n\nThis example shows how to hook up a [TapGestureRecognizer]. It assumes that\nthe code is being used inside a [State] object with a `_last` field that is\nthen displayed as the child of the gesture detector.\n\n```dart\nRawGestureDetector(\n gestures: <Type, GestureRecognizerFactory>{\n TapGestureRecognizer: GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(\n () => TapGestureRecognizer(),\n (TapGestureRecognizer instance) {\n instance\n ..onTapDown = (TapDownDetails details) { setState(() { _last = 'down'; }); }\n ..onTapUp = (TapUpDetails details) { setState(() { _last = 'up'; }); }\n ..onTap = () { setState(() { _last = 'tap'; }); }\n ..onTapCancel = () { setState(() { _last = 'cancel'; }); };\n },\n ),\n },\n child: Container(width: 300.0, height: 300.0, color: Colors.yellow, child: Text(_last)),\n)\n```\n\nSee also:\n\n * [GestureDetector], a less flexible but much simpler widget that does the same thing.\n * [Listener], a widget that reports raw pointer events.\n * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.", "detail": "", "kind": 7, "label": "RawGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedModeBanner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a [Banner] saying \"DEBUG\" when running in checked mode.\n[MaterialApp] builds one of these by default.\nDoes nothing in release mode.", "detail": "", "kind": 7, "label": "CheckedModeBanner" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoActionSheet", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style action sheet.\n\nAn action sheet is a specific style of alert that presents the user\nwith a set of two or more choices related to the current context.\nAn action sheet can have a title, an additional message, and a list\nof actions. The title is displayed above the message and the actions\nare displayed below this content.\n\nThis action sheet styles its title and message to match standard iOS action\nsheet title and message text style.\n\nTo display action buttons that look like standard iOS action sheet buttons,\nprovide [CupertinoActionSheetAction]s for the [actions] given to this action sheet.\n\nTo include a iOS-style cancel button separate from the other buttons,\nprovide an [CupertinoActionSheetAction] for the [cancelButton] given to this\naction sheet.\n\nAn action sheet is typically passed as the child widget to\n[showCupertinoModalPopup], which displays the action sheet by sliding it up\nfrom the bottom of the screen.\n\nSee also:\n\n * [CupertinoActionSheetAction], which is an iOS-style action sheet button.\n * <https://developer.apple.com/design/human-interface-guidelines/ios/views/action-sheets/>", "detail": "", "kind": 7, "label": "CupertinoActionSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an iOS view in the Widget hierarchy.\n\n\nEmbedding iOS views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\n\n\n\nConstruction of UIViews is done asynchronously, before the UIView is ready this widget paints\nnothing while maintaining the same layout constraints.", "detail": "", "kind": 7, "label": "UiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a scrolling container that animates items when they are\ninserted or removed.\n\nWhen an item is inserted with [insertItem] an animation begins running. The\nanimation is passed to [AnimatedList.itemBuilder] whenever the item's widget\nis needed.\n\nWhen an item is removed with [removeItem] its animation is reversed.\nThe removed item's animation is passed to the [removeItem] builder\nparameter.\n\nAn app that needs to insert or remove items in response to an event\ncan refer to the [AnimatedList]'s state with a global key:\n\n```dart\nGlobalKey<AnimatedListState> listKey = GlobalKey<AnimatedListState>();\n...\nAnimatedList(key: listKey, ...);\n...\nlistKey.currentState.insert(123);\n```\n\n[AnimatedList] item input handlers can also refer to their [AnimatedListState]\nwith the static [AnimatedList.of] method.", "detail": "", "kind": 7, "label": "AnimatedListState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that replaces the entire screen with an iOS transition.\n\nThe page slides in from the right and exits in reverse. The page also shifts\nto the left in parallax when another page enters to cover it.\n\nThe page slides in from the bottom and exits in reverse with no parallax\neffect for fullscreen dialogs.\n\nBy default, when a modal route is replaced by another, the previous route\nremains in memory. To free all the resources when this is not necessary, set\n[maintainState] to false.\n\nThe type `T` specifies the return type of the route which can be supplied as\nthe route is popped from the stack via [Navigator.pop] when an optional\n`result` can be provided.\n\nSee also:\n\n * [MaterialPageRoute], for an adaptive [PageRoute] that uses a\n platform-appropriate transition.\n * [CupertinoPageScaffold], for applications that have one page with a fixed\n navigation bar on top.\n * [CupertinoTabScaffold], for applications that have a tab bar at the\n bottom with multiple pages.", "detail": "", "kind": 7, "label": "CupertinoPageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dismissible", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dismissed by dragging in the indicated [direction].\n\nDragging or flinging this widget in the [DismissDirection] causes the child\nto slide out of view. Following the slide animation, if [resizeDuration] is\nnon-null, the Dismissible widget animates its height (or width, whichever is\nperpendicular to the dismiss direction) to zero over the [resizeDuration].\n\n\nBackgrounds can be used to implement the \"leave-behind\" idiom. If a background\nis specified it is stacked behind the Dismissible's child and is exposed when\nthe child moves.\n\nThe widget calls the [onDismissed] callback either after its size has\ncollapsed to zero (if [resizeDuration] is non-null) or immediately after\nthe slide animation (if [resizeDuration] is null). If the Dismissible is a\nlist item, it must have a key that distinguishes it from the other items and\nits [onDismissed] callback must remove the item from the list.", "detail": "", "kind": 7, "label": "Dismissible" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DatePickerDateTimeOrder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the order of the columns inside [CupertinoDatePicker] in\ntime and date time mode.", "detail": "", "kind": 13, "label": "DatePickerDateTimeOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionHandleType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Which type of selection handle to be displayed.\n\nWith mixed-direction text, both handles may be the same type. Examples:\n\n* LTR text: 'the <quick brown> fox':\n\n The '<' is drawn with the [left] type, the '>' with the [right]\n\n* RTL text: 'XOF <NWORB KCIUQ> EHT':\n\n Same as above.\n\n* mixed text: '<the NWOR<B KCIUQ fox'\n\n Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn\n with the [left] type.\n\nSee also:\n\n * [TextDirection], which discusses left-to-right and right-to-left text in\n more detail.", "detail": "", "kind": 13, "label": "TextSelectionHandleType" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stack", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its children relative to the edges of its box.\n\nThis class is useful if you want to overlap several children in a simple\nway, for example having some text and an image, overlaid with a gradient and\na button attached to the bottom.\n\nEach child of a [Stack] widget is either _positioned_ or _non-positioned_.\nPositioned children are those wrapped in a [Positioned] widget that has at\nleast one non-null property. The stack sizes itself to contain all the\nnon-positioned children, which are positioned according to [alignment]\n(which defaults to the top-left corner in left-to-right environments and the\ntop-right corner in right-to-left environments). The positioned children are\nthen placed relative to the stack according to their top, right, bottom, and\nleft properties.\n\nThe stack paints its children in order with the first child being at the\nbottom. If you want to change the order in which the children paint, you\ncan rebuild the stack with the children in the new order. If you reorder\nthe children in this way, consider giving the children non-null keys.\nThese keys will cause the framework to move the underlying objects for\nthe children to their new locations rather than recreate them at their\nnew location.\n\nFor more details about the stack layout algorithm, see [RenderStack].\n\nIf you want to lay a number of children out in a particular pattern, or if\nyou want to make a custom layout manager, you probably want to use\n[CustomMultiChildLayout] instead. In particular, when using a [Stack] you\ncan't position children relative to their size or the stack's own size.\n\n\nUsing a [Stack] you can position widgets over one another.\n\n```dart\nStack(\n children: <Widget>[\n Container(\n width: 100,\n height: 100,\n color: Colors.red,\n ),\n Container(\n width: 90,\n height: 90,\n color: Colors.green,\n ),\n Container(\n width: 80,\n height: 80,\n color: Colors.blue,\n ),\n ],\n)\n```\n\n\nThis example shows how [Stack] can be used to enhance text visibility\nby adding gradient backdrops.\n\n```dart\nSizedBox(\n width: 250,\n height: 250,\n child: Stack(\n children: <Widget>[\n Container(\n width: 250,\n height: 250,\n color: Colors.white,\n ),\n Container(\n padding: EdgeInsets.all(5.0),\n alignment: Alignment.bottomCenter,\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: <Color>[\n Colors.black.withAlpha(0),\n Colors.black12,\n Colors.black45\n ],\n ),\n ),\n child: Text(\n \"Foreground Text\",\n style: TextStyle(color: Colors.white, fontSize: 20.0),\n ),\n ),\n ],\n ),\n)\n```\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * [Flow], which provides paint-time control of its children using transform\n matrices.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Stack" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the child semantics with an index.\n\nSemantic indexes are used by TalkBack/Voiceover to make announcements about\nthe current scroll state. Certain widgets like the [ListView] will\nautomatically provide a child index for building semantics. A user may wish\nto manually provide semantic indexes if not all child of the scrollable\ncontribute semantics.\n\n\nThe example below handles spacers in a scrollable that don't contribute\nsemantics. The automatic indexes would give the spaces a semantic index,\ncausing scroll announcements to erroneously state that there are four items\nvisible.\n\n```dart\nListView(\n addSemanticIndexes: false,\n semanticChildCount: 2,\n children: const <Widget>[\n IndexedSemantics(index: 0, child: Text('First')),\n Spacer(),\n IndexedSemantics(index: 1, child: Text('Second')),\n Spacer(),\n ],\n)\n```\n\nSee also:\n\n * [CustomScrollView], for an explanation of index semantics.", "detail": "", "kind": 7, "label": "IndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridPaper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a rectilinear grid of lines one pixel wide.\n\nUseful with a [Stack] for visualizing your layout along a grid.\n\nThe grid's origin (where the first primary horizontal line and the first\nprimary vertical line intersect) is at the top left of the widget.\n\nThe grid is drawn over the [child] widget.", "detail": "", "kind": 7, "label": "GridPaper" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directionality", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the ambient directionality of text and\ntext-direction-sensitive render objects.\n\nFor example, [Padding] depends on the [Directionality] to resolve\n[EdgeInsetsDirectional] objects into absolute [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "Directionality" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that paints a [Decoration] either before or after its child paints.\n\n[Container] insets its child by the widths of the borders; this widget does\nnot.\n\nCommonly used with [BoxDecoration].\n\nThe [child] is not clipped. To clip a child to the shape of a particular\n[ShapeDecoration], consider using a [ClipPath] widget.\n\n\nThis sample shows a radial gradient that draws a moon on a night sky:\n\n```dart\nDecoratedBox(\n decoration: BoxDecoration(\n gradient: RadialGradient(\n center: const Alignment(-0.5, -0.6),\n radius: 0.15,\n colors: <Color>[\n const Color(0xFFEEEEEE),\n const Color(0xFF111133),\n ],\n stops: <double>[0.9, 1.0],\n ),\n ),\n)\n```\n\nSee also:\n\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * [DecoratedBoxTransition], the version of this class that animates on the\n [decoration] property.\n * [Decoration], which you can extend to provide other effects with\n [DecoratedBox].\n * [CustomPaint], another way to draw custom effects from the widget layer.", "detail": "", "kind": 7, "label": "DecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Title", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that describes this app in the operating system.", "detail": "", "kind": 7, "label": "Title" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's orientation\n(distinct from the device orientation).\n\nSee also:\n\n * [LayoutBuilder], which exposes the complete constraints, not just the\n orientation.\n * [CustomSingleChildLayout], which positions its child during layout.\n * [CustomMultiChildLayout], with which you can define the precise layout\n of a list of children during the layout phase.\n * [MediaQueryData.orientation], which exposes whether the device is in\n landscape or portrait mode.", "detail": "", "kind": 7, "label": "OrientationBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expanded", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that expands a child of a [Row], [Column], or [Flex]\nso that the child fills the available space.\n\nUsing an [Expanded] widget makes a child of a [Row], [Column], or [Flex]\nexpand to fill the available space along the main axis (e.g., horizontally for\na [Row] or vertically for a [Column]). If multiple children are expanded,\nthe available space is divided among them according to the [flex] factor.\n\nAn [Expanded] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Expanded] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\n\nThis example shows how to use an [Expanded] widget in a [Column] so that\nit's middle child, a [Container] here, expands to fill the space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Column Sample'),\n ),\n body: Center(\n child: Column(\n children: <Widget>[\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n Expanded(\n child: Container(\n color: Colors.blue,\n width: 100,\n ),\n ),\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n ],\n ),\n ),\n );\n}\n```\n\nThis example shows how to use an [Expanded] widget in a [Row] with multiple\nchildren expanded, utilizing the [flex] factor to prioritize available space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Row Sample'),\n ),\n body: Center(\n child: Row(\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n Container(\n color: Colors.blue,\n height: 100,\n width: 50,\n ),\n Expanded(\n flex: 1,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Flexible], which does not force the child to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Expanded" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BallisticScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on a physics [Simulation].\n\nA [BallisticScrollActivity] is typically used when the user lifts their\nfinger off the screen to continue the scrolling gesture with the current velocity.\n\n[BallisticScrollActivity] is also used to restore a scroll view to a valid\nscroll offset when the geometry of the scroll view changes. In these\nsituations, the [Simulation] typically starts with a zero velocity.\n\nSee also:\n\n * [DrivenScrollActivity], which animates a scroll view based on a set of\n animation parameters.", "detail": "", "kind": 7, "label": "BallisticScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenVisitor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks passed to [AnimatedWidgetBaseState.forEachTween].", "detail": "(Tween<T> tween, T targetValue, TweenConstructor<T> constructor) → Tween<T>", "kind": 7, "label": "TweenVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An action the user has requested the text input control to perform.\n\nEach action represents a logical meaning, and also configures the soft\nkeyboard to display a certain kind of action button. The visual appearance\nof the action button might differ between versions of the same OS.\n\nDespite the logical meaning of each action, choosing a particular\n[TextInputAction] does not necessarily cause any specific behavior to\nhappen. It is up to the developer to ensure that the behavior that occurs\nwhen an action button is pressed is appropriate for the action button chosen.\n\nFor example: If the user presses the keyboard action button on iOS when it\nreads \"Emergency Call\", the result should not be a focus change to the next\nTextField. This behavior is not logically appropriate for a button that says\n\"Emergency Call\".\n\nSee [EditableText] for more information about customizing action button\nbehavior.\n\nMost [TextInputAction]s are supported equally by both Android and iOS.\nHowever, there is not a complete, direct mapping between Android's IME input\ntypes and iOS's keyboard return types. Therefore, some [TextInputAction]s\nare inappropriate for one of the platforms. If a developer chooses an\ninappropriate [TextInputAction] when running in debug mode, an error will be\nthrown. If the same thing is done in release mode, then instead of sending\nthe inappropriate value, Android will use \"unspecified\" on the platform\nside and iOS will use \"default\" on the platform side.\n\nSee also:\n\n * [TextInput], which configures the platform's keyboard setup.\n * [EditableText], which invokes callbacks when the action button is pressed.", "detail": "", "kind": 13, "label": "TextInputAction" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two relative rects.\n\nThis class specializes the interpolation of [Tween<RelativeRect>] to\nuse [RelativeRect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RelativeRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has mutable state.\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\nA stateful widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\nStateful widgets are useful when the part of the user interface you are\ndescribing can change dynamically, e.g. due to having an internal\nclock-driven state, or depending on some system state. For compositions that\ndepend only on the configuration information in the object itself and the\n[BuildContext] in which the widget is inflated, consider using\n[StatelessWidget].\n\n\n[StatefulWidget] instances themselves are immutable and store their mutable\nstate either in separate [State] objects that are created by the\n[createState] method, or in objects to which that [State] subscribes, for\nexample [Stream] or [ChangeNotifier] objects, to which references are stored\nin final fields on the [StatefulWidget] itself.\n\nThe framework calls [createState] whenever it inflates a\n[StatefulWidget], which means that multiple [State] objects might be\nassociated with the same [StatefulWidget] if that widget has been inserted\ninto the tree in multiple places. Similarly, if a [StatefulWidget] is\nremoved from the tree and later inserted in to the tree again, the framework\nwill call [createState] again to create a fresh [State] object, simplifying\nthe lifecycle of [State] objects.\n\nA [StatefulWidget] keeps the same [State] object when moving from one\nlocation in the tree to another if its creator used a [GlobalKey] for its\n[key]. Because a widget with a [GlobalKey] can be used in at most one\nlocation in the tree, a widget that uses a [GlobalKey] has at most one\nassociated element. The framework takes advantage of this property when\nmoving a widget with a global key from one location in the tree to another\nby grafting the (unique) subtree associated with that widget from the old\nlocation to the new location (instead of recreating the subtree at the new\nlocation). The [State] objects associated with [StatefulWidget] are grafted\nalong with the rest of the subtree, which means the [State] object is reused\n(instead of being recreated) in the new location. However, in order to be\neligible for grafting, the widget must be inserted into the new location in\nthe same animation frame in which it was removed from the old location.\n\n## Performance considerations\n\nThere are two primary categories of [StatefulWidget]s.\n\nThe first is one which allocates resources in [State.initState] and disposes\nof them in [State.dispose], but which does not depend on [InheritedWidget]s\nor call [State.setState]. Such widgets are commonly used at the root of an\napplication or page, and communicate with subwidgets via [ChangeNotifier]s,\n[Stream]s, or other such objects. Stateful widgets following such a pattern\nare relatively cheap (in terms of CPU and GPU cycles), because they are\nbuilt once then never update. They can, therefore, have somewhat complicated\nand deep build methods.\n\nThe second category is widgets that use [State.setState] or depend on\n[InheritedWidget]s. These will typically rebuild many times during the\napplication's lifetime, and it is therefore important to minimize the impact\nof rebuilding such a widget. (They may also use [State.initState] or\n[State.didChangeDependencies] and allocate resources, but the important part\nis that they rebuild.)\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateful widget:\n\n * Push the state to the leaves. For example, if your page has a ticking\n clock, rather than putting the state at the top of the page and\n rebuilding the entire page each time the clock ticks, create a dedicated\n clock widget that only updates itself.\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. Ideally, a stateful widget would only create a\n single widget, and that widget would be a [RenderObjectWidget].\n (Obviously this isn't always practical, but the closer a widget gets to\n this ideal, the more efficient it will be.)\n\n * If a subtree does not change, cache the widget that represents that\n subtree and re-use it each time it can be used. It is massively more\n efficient for a widget to be re-used than for a new (but\n identically-configured) widget to be created. Factoring out the stateful\n part into a widget that takes a child argument is a common way of doing\n this.\n\n * Use `const` widgets where possible. (This is equivalent to caching a\n widget and re-using it.)\n\n * Avoid changing the depth of any created subtrees or changing the type of\n any widgets in the subtree. For example, rather than returning either the\n child or the child wrapped in an [IgnorePointer], always wrap the child\n widget in an [IgnorePointer] and control the [IgnorePointer.ignoring]\n property. This is because changing the depth of the subtree requires\n rebuilding, laying out, and painting the entire subtree, whereas just\n changing the property will require the least possible change to the\n render tree (in the case of [IgnorePointer], for example, no layout or\n repaint is necessary at all).\n\n * If the depth must be changed for some reason, consider wrapping the\n common parts of the subtrees in widgets that have a [GlobalKey] that\n remains consistent for the life of the stateful widget. (The\n [KeyedSubtree] widget may be useful for this purpose if no other widget\n can conveniently be assigned the key.)\n\n\nThis is a skeleton of a stateful widget subclass called `YellowBird`.\n\nIn this example. the [State] has no actual state. State is normally\nrepresented as private member fields. Also, normally widgets have more\nconstructor arguments, each of which corresponds to a `final` property.\n\n```dart\nclass YellowBird extends StatefulWidget {\n const YellowBird({ Key key }) : super(key: key);\n\n @override\n _YellowBirdState createState() => _YellowBirdState();\n}\n\nclass _YellowBirdState extends State<YellowBird> {\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFFFFE306));\n }\n}\n```\n\nThis example shows the more generic widget `Bird` which can be given a\ncolor and a child, and which has some internal state with a method that\ncan be called to mutate it:\n\n```dart\nclass Bird extends StatefulWidget {\n const Bird({\n Key key,\n this.color = const Color(0xFFFFE306),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n _BirdState createState() => _BirdState();\n}\n\nclass _BirdState extends State<Bird> {\n double _size = 1.0;\n\n void grow() {\n setState(() { _size += 0.1; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(\n color: widget.color,\n transform: Matrix4.diagonal3Values(_size, _size, 1.0),\n child: widget.child,\n );\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [State], where the logic behind a [StatefulWidget] is hosted.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatefulWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. Rather than receiving\ntheir children as an explicit [List], they receive their children using a\n[SliverChildDelegate].\n\nIt's uncommon to subclass [SliverChildDelegate]. Instead, consider using one\nof the existing subclasses that provide adaptors to builder callbacks or\nexplicit child lists.\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as in the\ncase of [SliverChildListDelegate]) or lazily provided ones (such as in the\ncase of [SliverChildBuilderDelegate]).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree, states\nand render objects are destroyed. A new child at the same position in the\nsliver will be lazily recreated along with new elements, states and render\nobjects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the sliver child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the sliver child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child widget\n subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the sliver child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the sliver keeps the child's\n render object (and by extension, its associated elements and states) in a\n cache list instead of destroying them. When scrolled back into view, the\n render object is repainted as-is (if it wasn't marked dirty in the\n interim).\n\n This only works if the [SliverChildDelegate] subclasses don't wrap the\n child widget subtree with other widgets such as [AutomaticKeepAlive] and\n [RepaintBoundary] via `addAutomaticKeepAlives` and\n `addRepaintBoundaries`.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default in\n [SliverChildListDelegate] or [SliverChildListDelegate]). Instead of\n unconditionally caching the child element subtree when scrolling\n off-screen like [KeepAlive], [AutomaticKeepAlive] can let whether to\n cache the subtree be determined by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its sliver child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the sliver child element subtree will be\n destroyed when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive by\n using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.", "detail": "", "kind": 7, "label": "SliverChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildListDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using an\nexplicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollIndicatorNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that an [GlowingOverscrollIndicator] will start showing an\noverscroll indication.\n\nTo prevent the indicator from showing the indication, call [disallowGlow] on\nthe notification.\n\nSee also:\n\n * [GlowingOverscrollIndicator], which generates this type of notification.", "detail": "", "kind": 7, "label": "OverscrollIndicatorNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollbarPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomPainter] for painting scrollbars.\n\nUnlike [CustomPainter]s that subclasses [CustomPainter] and only repaint\nwhen [shouldRepaint] returns true (which requires this [CustomPainter] to\nbe rebuilt), this painter has the added optimization of repainting and not\nrebuilding when:\n\n * the scroll position changes; and\n * when the scrollbar fades away.\n\nCalling [update] with the new [ScrollMetrics] will repaint the new scrollbar\nposition.\n\nUpdating the value on the provided [fadeoutOpacityAnimation] will repaint\nwith the new opacity.\n\nYou must call [dispose] on this [ScrollbarPainter] when it's no longer used.\n\nSee also:\n\n * [Scrollbar] for a widget showing a scrollbar around a [Scrollable] in the\n Material Design style.\n * [CupertinoScrollbar] for a widget showing a scrollbar around a\n [Scrollable] in the iOS style.", "detail": "", "kind": 7, "label": "ScrollbarPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoActivityIndicator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style activity indicator.\n\nSee also:\n\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/progress-indicators/#activity-indicators>", "detail": "", "kind": 7, "label": "CupertinoActivityIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListItemBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedList].", "detail": "(BuildContext context, int index, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionControls", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for building the selection UI, to be provided by the\nimplementor of the toolbar widget.\n\nOverride text operations such as [handleCut] if needed.", "detail": "", "kind": 7, "label": "TextSelectionControls" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the opacity of a widget.\n\nFor a widget that automatically animates between the sizes of two children,\nfading between them, see [AnimatedCrossFade].\n\n\nHere's an illustration of the [FadeTransition] widget, with it's [opacity]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:", "detail": "", "kind": 7, "label": "FadeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that listens for [Notification]s bubbling up the tree.\n\nNotifications will trigger the [onNotification] callback only if their\n[runtimeType] is a subtype of `T`.\n\nTo dispatch notifications, use the [Notification.dispatch] method.", "detail": "", "kind": 7, "label": "NotificationListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics used by a [PageView].\n\nThese physics cause the page view to snap to page boundaries.\n\nSee also:\n\n * [ScrollPhysics], the base class which defines the API for scrolling\n physics.\n * [PageView.physics], which can override the physics used by a page view.", "detail": "", "kind": 7, "label": "PageScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [ScrollPosition] to a scroll view with fixed item sizes.\n\nThe metrics are available on [ScrollNotification]s generated from a scroll\nviews such as [ListWheelScrollView]s with a [FixedExtentScrollController] and\nexposes the current [itemIndex] and the scroll view's [itemExtent].\n\n`FixedExtent` refers to the fact that the scrollable items have the same size.\nThis is distinct from `Fixed` in the parent class name's [FixedScrollMetric]\nwhich refers to its immutability.", "detail": "", "kind": 7, "label": "FixedExtentMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFade", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that cross-fades between two given children and animates itself\nbetween their sizes.\n\nThe animation is controlled through the [crossFadeState] parameter.\n[firstCurve] and [secondCurve] represent the opacity curves of the two\nchildren. The [firstCurve] is inverted, i.e. it fades out when providing a\ngrowing curve like [Curves.linear]. The [sizeCurve] is the curve used to\nanimate between the size of the fading-out child and the size of the\nfading-in child.\n\nThis widget is intended to be used to fade a pair of widgets with the same\nwidth. In the case where the two children have different heights, the\nanimation crops overflowing children during the animation by aligning their\ntop edge, which means that the bottom will be clipped.\n\nThe animation is automatically triggered when an existing\n[AnimatedCrossFade] is rebuilt with a different value for the\n[crossFadeState] property.\n\n\nThis code fades between two representations of the Flutter logo. It depends\non a boolean field `_first`; when `_first` is true, the first logo is shown,\notherwise the second logo is shown. When the field changes state, the\n[AnimatedCrossFade] widget cross-fades between the two forms of the logo\nover three seconds.\n\n```dart\nAnimatedCrossFade(\n duration: const Duration(seconds: 3),\n firstChild: const FlutterLogo(style: FlutterLogoStyle.horizontal, size: 100.0),\n secondChild: const FlutterLogo(style: FlutterLogoStyle.stacked, size: 100.0),\n crossFadeState: _first ? CrossFadeState.showFirst : CrossFadeState.showSecond,\n)\n```\n\nSee also:\n\n * [AnimatedSize], the lower-level widget which [AnimatedCrossFade] uses to\n automatically change size.\n * [AnimatedSwitcher], which switches out a child for a new one with a\n customizable transition.", "detail": "", "kind": 7, "label": "AnimatedCrossFade" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrivenScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on animation parameters.\n\nFor example, a [DrivenScrollActivity] is used to implement\n[ScrollController.animateTo].\n\nSee also:\n\n * [BallisticScrollActivity], which animates a scroll view based on a\n physics [Simulation].", "detail": "", "kind": 7, "label": "DrivenScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Spacer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Spacer creates an adjustable, empty spacer that can be used to tune the\nspacing between widgets in a [Flex] container, like [Row] or [Column].\n\nThe [Spacer] widget will take up any available space, so setting the\n[Flex.mainAxisAlignment] on a flex container that contains a [Spacer] to\n[MainAxisAlignment.spaceAround], [MainAxisAlignment.spaceBetween], or\n[MainAxisAlignment.spaceEvenly] will not have any visible effect: the\n[Spacer] has taken up all of the additional space, therefore there is none\nleft to redistribute.\n\n\n```dart\nRow(\n children: <Widget>[\n Text('Begin'),\n Spacer(), // Defaults to a flex of one.\n Text('Middle'),\n // Gives twice the space between Middle and End than Begin and Middle.\n Spacer(flex: 2),\n Text('End'),\n ],\n)\n```\n\nSee also:\n\n * [Row] and [Column], which are the most common containers to use a Spacer\n in.\n * [SizedBox], to create a box with a specific size and an optional child.", "detail": "", "kind": 7, "label": "Spacer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollStartNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has started scrolling.\n\nSee also:\n\n * [ScrollEndNotification], which indicates that scrolling has stopped.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollStartNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveHandle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Listenable] which can be manually triggered.\n\nUsed with [KeepAliveNotification] objects as their\n[KeepAliveNotification.handle].\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses a\n[KeepAliveHandle] internally.", "detail": "", "kind": 7, "label": "KeepAliveHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SafeArea", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by sufficient padding to avoid intrusions by\nthe operating system.\n\nFor example, this will indent the child by enough to avoid the status bar at\nthe top of the screen.\n\nIt will also indent the child by the amount necessary to avoid The Notch on\nthe iPhone X, or other similar creative physical features of the display.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\n\nSee also:\n\n * [SliverSafeArea], for insetting slivers to avoid operating system\n intrusions.\n * [Padding], for insetting widgets in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoButton", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style button.\n\nTakes in a text or an icon that fades out and in on touch. May optionally have a\nbackground.\n\nSee also:\n\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/buttons/>", "detail": "", "kind": 7, "label": "CupertinoButton" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that composes other [Element]s.\n\nRather than creating a [RenderObject] directly, a [ComponentElement] creates\n[RenderObject]s indirectly by creating other [Element]s.\n\nContrast with [RenderObjectElement].", "detail": "", "kind": 7, "label": "ComponentElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedDefaultTextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [DefaultTextStyle] which automatically transitions the\ndefault text style (the text style to apply to descendant [Text] widgets\nwithout explicit style) over a given duration whenever the given style\nchanges.\n\nThe [textAlign], [softWrap], [textOverflow], and [maxLines] properties are\nnot animated and take effect immediately when changed.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].", "detail": "", "kind": 7, "label": "AnimatedDefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleListResolutionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeListResolutionCallback].\n\nA [LocaleListResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the list of\nlocales for the device.\n\nThe [locales] list is the device's preferred locales when the app started, or the\ndevice's preferred locales the user selected after the app was started. This list\nis in order of preference. If this list is null or empty, then Flutter has not yet\nreceived the locale information from the platform. The [supportedLocales] parameter\nis just the value of [WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleResolutionCallback], which takes only one default locale (instead of a list)\n and is attempted only after this callback fails or is null. [LocaleListResolutionCallback]\n is recommended over [LocaleResolutionCallback].", "detail": "(List<Locale> locales, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleListResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a [Scrollable]'s contents, useful for modeling the state\nof its viewport.\n\nThis class defines a current position, [pixels], and a range of values\nconsidered \"in bounds\" for that position. The range has a minimum value at\n[minScrollExtent] and a maximum value at [maxScrollExtent] (inclusive). The\nviewport scrolls in the direction and axis described by [axisDirection]\nand [axis].\n\nThe [outOfRange] getter will return true if [pixels] is outside this defined\nrange. The [atEdge] getter will return true if the [pixels] position equals\neither the [minScrollExtent] or the [maxScrollExtent].\n\nThe dimensions of the viewport in the given [axis] are described by\n[viewportDimension].\n\nThe above values are also exposed in terms of [extentBefore],\n[extentInside], and [extentAfter], which may be more useful for use cases\nsuch as scroll bars; for example, see [Scrollbar].\n\nSee also:\n\n * [FixedScrollMetrics], which is an immutable object that implements this\n interface.", "detail": "", "kind": 7, "label": "ScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAliveClientMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin with convenience methods for clients of [AutomaticKeepAlive]. Used\nwith [State] subclasses.\n\nSubclasses must implement [wantKeepAlive], and their [build] methods must\ncall `super.build` (the return value will always return null, and should be\nignored).\n\nThen, whenever [wantKeepAlive]'s value changes (or might change), the\nsubclass should call [updateKeepAlive].\n\nThe type argument `T` is the type of the [StatefulWidget] subclass of the\n[State] into which this class is being mixed.\n\nSee also:\n\n * [AutomaticKeepAlive], which listens to messages from this mixin.\n * [KeepAliveNotification], the notifications sent by this mixin.", "detail": "", "kind": 7, "label": "AutomaticKeepAliveClientMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offstage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that lays the child out as if it was in the tree, but without\npainting anything, without making the child available for hit testing, and\nwithout taking any room in the parent.\n\nAnimations continue to run in offstage children, and therefore use battery\nand CPU time, regardless of whether the animations end up being visible.\n\n[Offstage] can be used to measure the dimensions of a widget without\nbringing it on screen (yet). To hide a widget from view while it is not\nneeded, prefer removing the widget from the tree entirely rather than\nkeeping it alive in an [Offstage] subtree.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly).\n * [TickerMode], which can be used to disable animations in a subtree.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Offstage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state of connection to an asynchronous computation.\n\nSee also:\n\n * [AsyncSnapshot], which augments a connection state with information\n received from the asynchronous computation.", "detail": "", "kind": 13, "label": "ConnectionState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ParentDataWidget] as its configuration.", "detail": "", "kind": 7, "label": "ParentDataElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A viewport showing a subset of children on a wheel.\n\nTypically used with [ListWheelScrollView], this viewport is similar to\n[Viewport] in that it shows a subset of children in a scrollable based\non the scrolling offset and the children's dimensions. But uses\n[RenderListWheelViewport] to display the children on a wheel.\n\nSee also:\n\n * [ListWheelScrollView], widget that combines this viewport with a scrollable.\n * [RenderListWheelViewport], the render object that renders the children\n on a wheel.", "detail": "", "kind": 7, "label": "ListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the draggable is dropped.\n\nThe velocity and offset at which the pointer was moving when the draggable\nwas dropped is available in the [DraggableDetails]. Also included in the\n`details` is whether the draggable's [DragTarget] accepted it.\n\nUsed by [Draggable.onDragEnd]", "detail": "(DraggableDetails details) → void", "kind": 7, "label": "DragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget, e.g. [StatelessWidget.build]\nor [State.build].\n\nUsed by [Builder.builder], [OverlayEntry.builder], etc.\n\nSee also:\n\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [TransitionBuilder], which is similar but also takes a child.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context) → Widget", "kind": 7, "label": "WidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewHeaderSliversBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [NestedScrollView] for building its header.\n\nThe `innerBoxIsScrolled` argument is typically used to control the\n[SliverAppBar.forceElevated] property to ensure that the app bar shows a\nshadow, since it would otherwise not necessarily be aware that it had\ncontent ostensibly below it.", "detail": "(BuildContext context, bool innerBoxIsScrolled) → List<Widget>", "kind": 7, "label": "NestedScrollViewHeaderSliversBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AspectRatio", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that attempts to size the child to a specific aspect ratio.\n\nThe widget first tries the largest width permitted by the layout\nconstraints. The height of the widget is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The widget will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the widget would\ncontinue iterating through the constraints. If the widget does not\nfind a feasible size after consulting each constraint, the widget\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "AspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that overlays a widget over the current route.", "detail": "", "kind": 7, "label": "PopupRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDialog", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style dialog.\n\nThis dialog widget does not have any opinion about the contents of the\ndialog. Rather than using this widget directly, consider using\n[CupertinoAlertDialog], which implement a specific kind of dialog.\n\nPush with `Navigator.of(..., rootNavigator: true)` when using with\n[CupertinoTabScaffold] to ensure that the dialog appears above the tabs.\n\nSee also:\n\n * [CupertinoAlertDialog], which is a dialog with title, contents, and\n actions.\n * <https://developer.apple.com/ios/human-interface-guidelines/views/alerts/>", "detail": "(Deprecated) ", "kind": 7, "label": "CupertinoDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building the widget representing the form field.\n\nUsed by [FormField.builder].", "detail": "(FormFieldState<T> field) → Widget", "kind": 7, "label": "FormFieldBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Builder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that calls a closure to obtain its child widget.\n\nSee also:\n\n * [StatefulBuilder], a platonic widget which also has state.", "detail": "", "kind": 7, "label": "Builder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageTransition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides an iOS-style page transition animation.\n\nThe page slides in from the right and exits in reverse. It also shifts to the left in\na parallax motion when another page enters to cover it.", "detail": "", "kind": 7, "label": "CupertinoPageTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Center", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that centers its child within itself.\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\nSee also:\n\n * [Align], which lets you arbitrarily position a child within itself,\n rather than just centering it.\n * [Row], a widget that displays its children in a horizontal array.\n * [Column], a widget that displays its children in a vertical array.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Center" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Text", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A run of text with a single style.\n\nThe [Text] widget displays a string of text with single style. The string\nmight break across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nThe [style] argument is optional. When omitted, the text will use the style\nfrom the closest enclosing [DefaultTextStyle]. If the given style's\n[TextStyle.inherit] property is true (the default), the given style will\nbe merged with the closest enclosing [DefaultTextStyle]. This merging\nbehavior is useful, for example, to make the text bold while using the\ndefault font family and size.\n\n\n```dart\nText(\n 'Hello, $_name! How are you?',\n textAlign: TextAlign.center,\n overflow: TextOverflow.ellipsis,\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\nUsing the [Text.rich] constructor, the [Text] widget can\ndisplay a paragraph with differently styled [TextSpan]s. The sample\nthat follows displays \"Hello beautiful world\" with different styles\nfor each word.\n\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'Hello', // default text style\n children: <TextSpan>[\n TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),\n TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),\n ],\n ),\n)\n```\n\n## Interactivity\n\nTo make [Text] react to touch events, wrap it in a [GestureDetector] widget\nwith a [GestureDetector.onTap] handler.\n\nIn a material design application, consider using a [FlatButton] instead, or\nif that isn't appropriate, at least using an [InkWell] instead of\n[GestureDetector].\n\nTo make sections of the text interactive, use [RichText] and specify a\n[TapGestureRecognizer] as the [TextSpan.recognizer] of the relevant part of\nthe text.\n\nSee also:\n\n * [RichText], which gives you more control over the text styles.\n * [DefaultTextStyle], which sets default styles for [Text] widgets.", "detail": "", "kind": 7, "label": "Text" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSliverRefreshControl", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver widget implementing the iOS-style pull to refresh content control.\n\nWhen inserted as the first sliver in a scroll view or behind other slivers\nthat still lets the scrollable overscroll in front of this sliver (such as\nthe [CupertinoSliverNavigationBar], this widget will:\n\n * Let the user draw inside the overscrolled area via the passed in [builder].\n * Trigger the provided [onRefresh] function when overscrolled far enough to\n pass [refreshTriggerPullDistance].\n * Continue to hold [refreshIndicatorExtent] amount of space for the [builder]\n to keep drawing inside of as the [Future] returned by [onRefresh] processes.\n * Scroll away once the [onRefresh] [Future] completes.\n\nThe [builder] function will be informed of the current [RefreshIndicatorMode]\nwhen invoking it, except in the [RefreshIndicatorMode.inactive] state when\nno space is available and nothing needs to be built. The [builder] function\nwill otherwise be continuously invoked as the amount of space available\nchanges from overscroll, as the sliver scrolls away after the [onRefresh]\ntask is done, etc.\n\nOnly one refresh can be triggered until the previous refresh has completed\nand the indicator sliver has retracted at least 90% of the way back.\n\nCan only be used in downward-scrolling vertical lists that overscrolls. In\nother words, refreshes can't be triggered with lists using\n[ClampingScrollPhysics].\n\nIn a typical application, this sliver should be inserted between the app bar\nsliver such as [CupertinoSliverNavigationBar] and your main scrollable\ncontent's sliver.\n\nSee also:\n\n * [CustomScrollView], a typical sliver holding scroll view this control\n should go into.\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/refresh-content-controls/>\n * [RefreshIndicator], a Material Design version of the pull-to-refresh\n paradigm. This widget works differently than [RefreshIndicator] because\n instead of being an overlay on top of the scrollable, the\n [CupertinoSliverRefreshControl] is part of the scrollable and actively occupies\n scrollable space.", "detail": "", "kind": 7, "label": "CupertinoSliverRefreshControl" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes and positions children efficiently, according to the\nlogic in a [FlowDelegate].\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow, which happens\nwithout the children being laid out again (contrast this with a [Stack],\nwhich does the sizing and positioning together during layout).\n\nThe most efficient way to trigger a repaint of the flow is to supply an\nanimation to the constructor of the [FlowDelegate]. The flow will listen to\nthis animation and repaint whenever the animation ticks, avoiding both the\nbuild and layout phases of the pipeline.\n\nSee also:\n\n * [Wrap], which provides the layout model that some other frameworks call\n \"flow\", and is otherwise unrelated to [Flow].\n * [FlowDelegate], which controls the visual presentation of the children.\n * [Stack], which arranges children relative to the edges of the container.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that both has state and calls a closure to obtain its child widget.\n\nSee also:\n\n * [Builder], the platonic stateless widget.", "detail": "", "kind": 7, "label": "StatefulBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A bridge from a [RenderObject] to an [Element] tree.\n\nThe given container is the [RenderObject] that the [Element] tree should be\ninserted into. It must be a [RenderObject] that implements the\n[RenderObjectWithChildMixin] protocol. The type argument `T` is the kind of\n[RenderObject] that the container expects as its child.\n\nUsed by [runApp] to bootstrap applications.", "detail": "", "kind": 7, "label": "RenderObjectToWidgetAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LimitedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box that limits its size only when it's unconstrained.\n\nIf this widget's maximum width is unconstrained then its child's width is\nlimited to [maxWidth]. Similarly, if this widget's maximum height is\nunconstrained then its child's height is limited to [maxHeight].\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).\n\nSee also:\n\n * [ConstrainedBox], which applies its constraints in all cases, not just\n when the incoming constraints are unbounded.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "LimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultAssetBundle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the default asset bundle for its descendants.\n\nFor example, used by [Image] to determine which bundle to use for\n[AssetImage]s if no bundle is specified explicitly.\n\n\nThis can be used in tests to override what the current asset bundle is, thus\nallowing specific resources to be injected into the widget under test.\n\nFor example, a test could create a test asset bundle like this:\n\n```dart\nclass TestAssetBundle extends CachingAssetBundle {\n @override\n Future<ByteData> load(String key) async {\n if (key == 'resources/test')\n return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);\n return null;\n }\n}\n```\n\n...then wrap the widget under test with a [DefaultAssetBundle] using this\nbundle implementation:\n\n```dart\nawait tester.pumpWidget(\n MaterialApp(\n home: DefaultAssetBundle(\n bundle: TestAssetBundle(),\n child: TestWidget(),\n ),\n ),\n);\n```\n\nAssuming that `TestWidget` uses [DefaultAssetBundle.of] to obtain its\n[AssetBundle], it will now see the [TestAssetBundle]'s \"Hello World!\" data\nwhen requesting the \"resources/test\" asset.\n\nSee also:\n\n * [AssetBundle], the interface for asset bundles.\n * [rootBundle], the default default asset bundle.", "detail": "", "kind": 7, "label": "DefaultAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncSnapshot", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable representation of the most recent interaction with an asynchronous\ncomputation.\n\nSee also:\n\n * [StreamBuilder], which builds itself based on a snapshot from interacting\n with a [Stream].\n * [FutureBuilder], which builds itself based on a snapshot from interacting\n with a [Future].", "detail": "", "kind": 7, "label": "AsyncSnapshot" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Banner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a diagonal message above the corner of another widget.\n\nUseful for showing the execution mode of an app (e.g., that asserts are\nenabled.)\n\nSee also:\n\n * [CheckedModeBanner], which the [WidgetsApp] widget includes by default in\n debug mode, to show a banner that says \"DEBUG\".", "detail": "", "kind": 7, "label": "Banner" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetectorState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [RawGestureDetector].", "detail": "", "kind": 7, "label": "RawGestureDetectorState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ProxyWidget] as its configuration.", "detail": "", "kind": 7, "label": "ProxyElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CreateRectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that takes two [Rect] instances and returns a\n[RectTween] that transitions between them.\n\nThis is typically used with a [HeroController] to provide an animation for\n[Hero] positions that looks nicer than a linear movement. For example, see\n[MaterialRectArcTween].", "detail": "(Rect begin, Rect end) → Tween<Rect>", "kind": 7, "label": "CreateRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for strategies that build widgets based on asynchronous\ninteraction.\n\nSee also:\n\n * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Stream].\n * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Future].", "detail": "(BuildContext context, AsyncSnapshot<T> snapshot) → Widget", "kind": 7, "label": "AsyncWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageIcon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An icon that comes from an [ImageProvider], e.g. an [AssetImage].\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for icons based on glyphs from fonts instead of images.\n * [Icons], a predefined font based set of icons from the material design library.", "detail": "", "kind": 7, "label": "ImageIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for scrolling activities like dragging and flinging.\n\nSee also:\n\n * [ScrollPosition], which uses [ScrollActivity] objects to manage the\n [ScrollPosition] of a [Scrollable].", "detail": "", "kind": 7, "label": "ScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorberHandle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Handle to provide to a [SliverOverlapAbsorber], a [SliverOverlapInjector],\nand an [NestedScrollViewViewport], to shift overlap in a [NestedScrollView].\n\nA particular [SliverOverlapAbsorberHandle] can only be assigned to a single\n[SliverOverlapAbsorber] at a time. It can also be (and normally is) assigned\nto one or more [SliverOverlapInjector]s, which must be later descendants of\nthe same [NestedScrollViewViewport] as the [SliverOverlapAbsorber]. The\n[SliverOverlapAbsorber] must be a direct descendant of the\n[NestedScrollViewViewport], taking part in the same sliver layout. (The\n[SliverOverlapInjector] can be a descendant that takes part in a nested\nscroll view's sliver layout.)\n\nWhenever the [NestedScrollViewViewport] is marked dirty for layout, it will\ncause its assigned [SliverOverlapAbsorberHandle] to fire notifications. It\nis the responsibility of the [SliverOverlapInjector]s (and any other\nclients) to mark themselves dirty when this happens, in case the geometry\nsubsequently changes during layout.\n\nSee also:\n\n * [NestedScrollView], which uses a [NestedScrollViewViewport] and a\n [SliverOverlapAbsorber] to align its children, and which shows sample\n usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorberHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nSee also the discussions at [Key] and [Widget.key].", "detail": "", "kind": 7, "label": "ObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectButtonBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by\n[WidgetInspector.selectButtonBuilder].", "detail": "(BuildContext context, VoidCallback onPressed) → Widget", "kind": 7, "label": "InspectorSelectButtonBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOval", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildBuilderDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using a builder\ncallback.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot have to be built until they are displayed.", "detail": "", "kind": 7, "label": "ListWheelChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTabBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled bottom navigation tab bar.\n\nDisplays multiple tabs using [BottomNavigationBarItem] with one tab being\nactive, the first tab by default.\n\nThis [StatelessWidget] doesn't store the active tab itself. You must\nlisten to the [onTap] callbacks and call `setState` with a new [currentIndex]\nfor the new selection to reflect. This can also be done automatically\nby wrapping this with a [CupertinoTabScaffold].\n\nTab changes typically trigger a switch between [Navigator]s, each with its\nown navigation stack, per standard iOS design. This can be done by using\n[CupertinoTabView]s inside each tab builder in [CupertinoTabScaffold].\n\nIf the given [backgroundColor]'s opacity is not 1.0 (which is the case by\ndefault), it will produce a blurring effect to the content behind it.\n\nSee also:\n\n * [CupertinoTabScaffold], which hosts the [CupertinoTabBar] at the bottom.\n * [BottomNavigationBarItem], an item in a [CupertinoTabBar].", "detail": "", "kind": 7, "label": "CupertinoTabBar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetLeave", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] leaves a [DragTarget].\n\nUsed by [DragTarget.onLeave].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetLeave" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents the details when a specific pointer event occurred on\nthe [Draggable].\n\nThis includes the [Velocity] at which the pointer was moving and [Offset]\nwhen the draggable event occurred, and whether its [DragTarget] accepted it.\n\nAlso, this is the details object for callbacks that use [DragEndCallback].", "detail": "", "kind": 7, "label": "DraggableDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [MultiChildRenderObjectWidget] as its configuration.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [ContainerRenderObjectMixin] mixin with a parent data\ntype that implements [ContainerParentDataMixin<RenderObject>]. Such widgets\nare expected to inherit from [MultiChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "MultiChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Localizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the [Locale] for its `child` and the localized resources that the\nchild depends on.\n\nLocalized resources are loaded by the list of [LocalizationsDelegate]\n`delegates`. Each delegate is essentially a factory for a collection\nof localized resources. There are multiple delegates because there are\nmultiple sources for localizations within an app.\n\nDelegates are typically simple subclasses of [LocalizationsDelegate] that\noverride [LocalizationsDelegate.load]. For example a delegate for the\n`MyLocalizations` class defined below would be:\n\n```dart\nclass _MyDelegate extends LocalizationsDelegate<MyLocalizations> {\n @override\n Future<MyLocalizations> load(Locale locale) => MyLocalizations.load(locale);\n\n @override\n bool shouldReload(MyLocalizationsDelegate old) => false;\n}\n```\n\nEach delegate can be viewed as a factory for objects that encapsulate a\na set of localized resources. These objects are retrieved with\nby runtime type with [Localizations.of].\n\nThe [WidgetsApp] class creates a `Localizations` widget so most apps\nwill not need to create one. The widget app's `Localizations` delegates can\nbe initialized with [WidgetsApp.localizationsDelegates]. The [MaterialApp]\nclass also provides a `localizationsDelegates` parameter that's just\npassed along to the [WidgetsApp].\n\nApps should retrieve collections of localized resources with\n`Localizations.of<MyLocalizations>(context, MyLocalizations)`,\nwhere MyLocalizations is an app specific class defines one function per\nresource. This is conventionally done by a static `.of` method on the\nMyLocalizations class.\n\nFor example, using the `MyLocalizations` class defined below, one would\nlookup a localized title string like this:\n```dart\nMyLocalizations.of(context).title()\n```\nIf `Localizations` were to be rebuilt with a new `locale` then\nthe widget subtree that corresponds to [BuildContext] `context` would\nbe rebuilt after the corresponding resources had been loaded.\n\nThis class is effectively an [InheritedWidget]. If it's rebuilt with\na new `locale` or a different list of delegates or any of its\ndelegates' [LocalizationsDelegate.shouldReload()] methods returns true,\nthen widgets that have created a dependency by calling\n`Localizations.of(context)` will be rebuilt after the resources\nfor the new locale have been loaded.\n\n\nThis following class is defined in terms of the\n[Dart `intl` package](https://github.com/dart-lang/intl). Using the `intl`\npackage isn't required.\n\n```dart\nclass MyLocalizations {\n MyLocalizations(this.locale);\n\n final Locale locale;\n\n static Future<MyLocalizations> load(Locale locale) {\n return initializeMessages(locale.toString())\n .then((void _) {\n return MyLocalizations(locale);\n });\n }\n\n static MyLocalizations of(BuildContext context) {\n return Localizations.of<MyLocalizations>(context, MyLocalizations);\n }\n\n String title() => Intl.message('<title>', name: 'title', locale: locale.toString());\n // ... more Intl.message() methods like title()\n}\n```\nA class based on the `intl` package imports a generated message catalog that provides\nthe `initializeMessages()` function and the per-locale backing store for `Intl.message()`.\nThe message catalog is produced by an `intl` tool that analyzes the source code for\nclasses that contain `Intl.message()` calls. In this case that would just be the\n`MyLocalizations` class.\n\nOne could choose another approach for loading localized resources and looking them up while\nstill conforming to the structure of this example.", "detail": "", "kind": 7, "label": "Localizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableScrollableSheet", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container for a [Scrollable] that responds to drag gestures by resizing\nthe scrollable until a limit is reached, and then scrolling.\n\nThis widget can be dragged along the vertical axis between its\n[minChildSize], which defaults to `0.25` and [maxChildSize], which defaults\nto `1.0`. These sizes are percentages of the height of the parent container.\n\nThe widget coordinates resizing and scrolling of the widget returned by\nbuilder as the user drags along the horizontal axis.\n\nThe widget will initially be displayed at its initialChildSize which\ndefaults to `0.5`, meaning half the height of its parent. Dragging will work\nbetween the range of minChildSize and maxChildSize (as percentages of the\nparent container's height) as long as the builder creates a widget which\nuses the provided [ScrollController]. If the widget created by the\n[ScrollableWidgetBuilder] does not use provided [ScrollController], the\nsheet will remain at the initialChildSize.\n\n\nThis is a sample widget which shows a [ListView] that has 25 [ListTile]s.\nIt starts out as taking up half the body of the [Scaffold], and can be\ndragged up to the full height of the scaffold or down to 25% of the height\nof the scaffold. Upon reaching full height, the list contents will be\nscrolled up or down, until they reach the top of the list again and the user\ndrags the sheet back down.\n\n```dart\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('DraggableScrollableSheet'),\n ),\n body: SizedBox.expand(\n child: DraggableScrollableSheet(\n builder: (BuildContext context, ScrollController scrollController) {\n return Container(\n color: Colors.blue[100],\n child: ListView.builder(\n controller: scrollController,\n itemCount: 25,\n itemBuilder: (BuildContext context, int index) {\n return ListTile(title: Text('Item $index'));\n },\n ),\n );\n },\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DraggableScrollableSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFadeBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [AnimatedCrossFade.layoutBuilder] callback.\n\nThe `topChild` is the child fading in, which is normally drawn on top. The\n`bottomChild` is the child fading out, normally drawn on the bottom.\n\nFor good performance, the returned widget tree should contain both the\n`topChild` and the `bottomChild`; the depth of the tree, and the types of\nthe widgets in the tree, from the returned widget to each of the children\nshould be the same; and where there is a widget with multiple children, the\ntop child and the bottom child should be keyed using the provided\n`topChildKey` and `bottomChildKey` keys respectively.\n\n\n```dart\nWidget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) {\n return Stack(\n fit: StackFit.loose,\n children: <Widget>[\n Positioned(\n key: bottomChildKey,\n left: 0.0,\n top: 0.0,\n right: 0.0,\n child: bottomChild,\n ),\n Positioned(\n key: topChildKey,\n child: topChild,\n )\n ],\n );\n}\n```", "detail": "(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) → Widget", "kind": 7, "label": "AnimatedCrossFadeBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDialogAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A button typically used in a [CupertinoAlertDialog].\n\nSee also:\n\n * [CupertinoAlertDialog], a dialog that informs the user about situations\n that require acknowledgement.", "detail": "", "kind": 7, "label": "CupertinoDialogAction" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ControlsWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that creates a widget given the two callbacks `onStepContinue` and\n`onStepCancel`.\n\nUsed by [Stepper.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].", "detail": "(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) → Widget", "kind": 7, "label": "ControlsWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin used by routes to handle back navigations internally by popping a list.\n\nWhen a [Navigator] is instructed to pop, the current route is given an\nopportunity to handle the pop internally. A `LocalHistoryRoute` handles the\npop internally if its list of local history entries is non-empty. Rather\nthan being removed as the current route, the most recent [LocalHistoryEntry]\nis removed from the list and its [LocalHistoryEntry.onRemove] is called.", "detail": "", "kind": 7, "label": "LocalHistoryRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An element that lazily builds children for a [SliverMultiBoxAdaptorWidget].\n\nImplements [RenderSliverBoxChildManager], which lets this element manage\nthe children of subclasses of [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flex", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a one-dimensional array.\n\nThe [Flex] widget allows you to control the axis along which the children are\nplaced (horizontal or vertical). This is referred to as the _main axis_. If\nyou know the main axis in advance, then consider using a [Row] (if it's\nhorizontal) or [Column] (if it's vertical) instead, because that will be less\nverbose.\n\nTo cause a child to expand to fill the available space in the [direction]\nof this widget's main axis, wrap the child in an [Expanded] widget.\n\nThe [Flex] widget does not scroll (and in general it is considered an error\nto have more children in a [Flex] than will fit in the available room). If\nyou have some widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nIf you only have one child, then rather than using [Flex], [Row], or\n[Column], consider using [Align] or [Center] to position the child.\n\n## Layout algorithm\n\n_This section describes how a [Flex] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Flex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded main axis constraints and the incoming\n cross axis constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight cross axis constraints\n that match the incoming max extent in the cross axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of main axis space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [Flex] is the maximum cross axis extent of\n the children (which will always satisfy the incoming constraints).\n5. The main axis extent of the [Flex] is determined by the [mainAxisSize]\n property. If the [mainAxisSize] property is [MainAxisSize.max], then the\n main axis extent of the [Flex] is the max extent of the incoming main\n axis constraints. If the [mainAxisSize] property is [MainAxisSize.min],\n then the main axis extent of the [Flex] is the sum of the main axis\n extents of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a version of this widget that is always horizontal.\n * [Column], for a version of this widget that is always vertical.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n that may be sized smaller (leaving some remaining room unused).\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flex" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExcludeSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops all the semantics of its descendants.\n\nWhen [excluding] is true, this widget (and its subtree) is excluded from\nthe semantics tree.\n\nThis can be used to hide descendant widgets that would otherwise be\nreported but that would only be confusing. For example, the\nmaterial library's [Chip] widget hides the avatar since it is\nredundant with the chip label.\n\nSee also:\n\n * [BlockSemantics] which drops semantics of widgets earlier in the tree.", "detail": "", "kind": 7, "label": "ExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollEndNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has stopped scrolling.\n\nSee also:\n\n * [ScrollStartNotification], which indicates that scrolling has started.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollEndNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoThumbPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints an iOS-style slider thumb.\n\nUsed by [CupertinoSwitch] and [CupertinoSlider].", "detail": "", "kind": 7, "label": "CupertinoThumbPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatefulWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatefulElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches Android.\n\nSee also:\n\n * [BouncingScrollSimulation], which implements iOS scroll physics.", "detail": "", "kind": 7, "label": "ClampingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragScrollActivity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The activity a scroll view performs when a the user drags their finger\nacross the screen.\n\nSee also:\n\n * [ScrollDragController], which listens to the [Drag] and actually scrolls\n the scroll view.", "detail": "", "kind": 7, "label": "DragScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsFlutterBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A concrete binding for applications based on the Widgets framework.\n\nThis is the glue that binds the framework to the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Route", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstraction for an entry managed by a [Navigator].\n\nThis class defines an abstract interface between the navigator and the\n\"routes\" that are pushed on and popped off the navigator. Most routes have\nvisual affordances, which they place in the navigators [Overlay] using one\nor more [OverlayEntry] objects.\n\nSee [Navigator] for more explanation of how to use a Route\nwith navigation, including code examples.\n\nSee [MaterialPageRoute] for a route that replaces the\nentire screen with a platform-adaptive transition.", "detail": "", "kind": 7, "label": "Route" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDragController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scrolls a scroll view as the user drags their finger across the screen.\n\nSee also:\n\n * [DragScrollActivity], which is the activity the scroll view performs\n while a drag is underway.", "detail": "", "kind": 7, "label": "ScrollDragController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedStack", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] that shows a single child from a list of children.\n\nThe displayed child is the one with the given [index]. The stack is\nalways as big as the largest child.\n\nIf value is null, then nothing is displayed.\n\nSee also:\n\n * [Stack], for more details about stacks.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Transform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a transformation before painting its child.\n\n\n\nThis example rotates and skews an orange box containing text, keeping the\ntop right corner pinned to its original position.\n\n```dart\nContainer(\n color: Colors.black,\n child: Transform(\n alignment: Alignment.topRight,\n transform: Matrix4.skewY(0.3)..rotateZ(-math.pi / 12.0),\n child: Container(\n padding: const EdgeInsets.all(8.0),\n color: const Color(0xFFE8581C),\n child: const Text('Apartment for rent!'),\n ),\n ),\n)\n```\n\nSee also:\n\n * [RotatedBox], which rotates the child widget during layout, not just\n during painting.\n * [FractionalTranslation], which applies a translation to the child\n that is relative to the child's size.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.", "detail": "", "kind": 7, "label": "Transform" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysScrollableScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that always lets the user scroll.\n\nOn Android, overscrolls will be clamped by default and result in an\noverscroll glow. On iOS, overscrolls will load a spring that will return\nthe scroll view to its normal range when released.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "AlwaysScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that prevent the scroll offset from reaching\nbeyond the bounds of the content.\n\nThis is the behavior typically seen on Android.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on Android.\n * [BouncingScrollPhysics], which is the analogous physics for iOS' bouncing\n behavior.\n * [GlowingOverscrollIndicator], which is used by [ScrollConfiguration] to\n provide the glowing effect that is usually found with this clamping effect\n on Android. When using a [MaterialApp], the [GlowingOverscrollIndicator]'s\n glow color is specified to use [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "ClampingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RichText", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A paragraph of rich text.\n\nThe [RichText] widget displays text that uses multiple different styles. The\ntext to display is described using a tree of [TextSpan] objects, each of\nwhich has an associated style that is used for that subtree. The text might\nbreak across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nText displayed in a [RichText] widget must be explicitly styled. When\npicking which style to use, consider using [DefaultTextStyle.of] the current\n[BuildContext] to provide defaults. For more details on how to style text in\na [RichText] widget, see the documentation for [TextStyle].\n\nConsider using the [Text] widget to integrate with the [DefaultTextStyle]\nautomatically. When all the text uses the same style, the default constructor\nis less verbose. The [Text.rich] constructor allows you to style multiple\nspans with the default text style while still allowing specified styles per\nspan.\n\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Hello ',\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),\n TextSpan(text: ' world!'),\n ],\n ),\n)\n```\n\nSee also:\n\n * [TextStyle], which discusses how to style text.\n * [TextSpan], which is used to describe the text in a paragraph.\n * [Text], which automatically applies the ambient styles described by a\n [DefaultTextStyle] to a single string.", "detail": "", "kind": 7, "label": "RichText" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScope", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a scope in which widgets can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nA focus scope does not itself receive focus but instead helps remember\nprevious focus states. A scope is currently active when its [node] is the\nfirst focus of its parent scope. To activate a [FocusScope], either use the\n[autofocus] property or explicitly make the [node] the first focus in the\nparent scope:\n\n```dart\nFocusScope.of(context).setFirstFocus(node);\n```\n\nIf a [FocusScope] is removed from the widget tree, then the previously\nfocused node will be focused, but only if the [node] is the same [node]\nobject as in the previous frame. To assure this, you can use a GlobalKey to\nkeep the [FocusScope] widget from being rebuilt from one frame to the next,\nor pass in the [node] from a parent that is not rebuilt. If there is no next\nsibling, then the parent scope node will be focused.\n\nSee also:\n\n * [FocusScopeNode], which is the associated node in the focus tree.\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.", "detail": "", "kind": 7, "label": "FocusScope" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Form", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An optional container for grouping together multiple form field widgets\n(e.g. [TextField] widgets).\n\nEach individual form field should be wrapped in a [FormField] widget, with\nthe [Form] widget as a common ancestor of all of those. Call methods on\n[FormState] to save, reset, or validate each [FormField] that is a\ndescendant of this [Form]. To obtain the [FormState], you may use [Form.of]\nwith a context whose ancestor is the [Form], or pass a [GlobalKey] to the\n[Form] constructor and call [GlobalKey.currentState].\n\nThis example shows a [Form] with one [TextFormField] and a [RaisedButton]. A\n[GlobalKey] is used here to identify the [Form] and validate input.\n\n```dart\nfinal _formKey = GlobalKey<FormState>();\n\n@override\nWidget build(BuildContext context) {\n return Form(\n key: _formKey,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n TextFormField(\n validator: (value) {\n if (value.isEmpty) {\n return 'Please enter some text';\n }\n },\n ),\n Padding(\n padding: const EdgeInsets.symmetric(vertical: 16.0),\n child: RaisedButton(\n onPressed: () {\n // Validate will return true if the form is valid, or false if\n // the form is invalid.\n if (_formKey.currentState.validate()) {\n // Process data.\n }\n },\n child: Text('Submit'),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [GlobalKey], a key that is unique across the entire app.\n * [FormField], a single form field widget that maintains the current state.\n * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].", "detail": "", "kind": 7, "label": "Form" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4Tween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Matrix4]s.\n\nThis class specializes the interpolation of [Tween<Matrix4>] to be\nappropriate for transformation matrices.\n\nCurrently this class works only for translations.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "Matrix4Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Table", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses the table layout algorithm for its children.\n\n\nIf you only have one row, the [Row] widget is more appropriate. If you only\nhave one column, the [SliverList] or [Column] widgets will be more\nappropriate.\n\nRows size vertically based on their contents. To control the column widths,\nuse the [columnWidths] property.\n\nFor more details about the table layout algorithm, see [RenderTable].\nTo control the alignment of children, see [TableCell].", "detail": "", "kind": 7, "label": "Table" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that does not require mutable state.\n\nA stateless widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\n\nStateless widget are useful when the part of the user interface you are\ndescribing does not depend on anything other than the configuration\ninformation in the object itself and the [BuildContext] in which the widget\nis inflated. For compositions that can change dynamically, e.g. due to\nhaving an internal clock-driven state, or depending on some system state,\nconsider using [StatefulWidget].\n\n## Performance considerations\n\nThe [build] method of a stateless widget is typically only called in three\nsituations: the first time the widget is inserted in the tree, when the\nwidget's parent changes its configuration, and when an [InheritedWidget] it\ndepends on changes.\n\nIf a widget's parent will regularly change the widget's configuration, or if\nit depends on inherited widgets that frequently change, then it is important\nto optimize the performance of the [build] method to maintain a fluid\nrendering performance.\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateless widget:\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. For example, instead of an elaborate arrangement\n of [Row]s, [Column]s, [Padding]s, and [SizedBox]es to position a single\n child in a particularly fancy manner, consider using just an [Align] or a\n [CustomSingleChildLayout]. Instead of an intricate layering of multiple\n [Container]s and with [Decoration]s to draw just the right graphical\n effect, consider a single [CustomPaint] widget.\n\n * Use `const` widgets where possible, and provide a `const` constructor for\n the widget so that users of the widget can also do so.\n\n * Consider refactoring the stateless widget into a stateful widget so that\n it can use some of the techniques described at [StatefulWidget], such as\n caching common parts of subtrees and using [GlobalKey]s when changing the\n tree structure.\n\n * If the widget is likely to get rebuilt frequently due to the use of\n [InheritedWidget]s, consider refactoring the stateless widget into\n multiple widgets, with the parts of the tree that change being pushed to\n the leaves. For example instead of building a tree with four widgets, the\n inner-most widget depending on the [Theme], consider factoring out the\n part of the build function that builds the inner-most widget into its own\n widget, so that only the inner-most widget needs to be rebuilt when the\n theme changes.\n\n\nThe following is a skeleton of a stateless widget subclass called `GreenFrog`.\n\nNormally, widgets have more constructor arguments, each of which corresponds\nto a `final` property.\n\n```dart\nclass GreenFrog extends StatelessWidget {\n const GreenFrog({ Key key }) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFF2DBD3A));\n }\n}\n```\n\n\nThis next example shows the more generic widget `Frog` which can be given\na color and a child:\n\n```dart\nclass Frog extends StatelessWidget {\n const Frog({\n Key key,\n this.color = const Color(0xFF2DBD3A),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n @override\n Widget build(BuildContext context) {\n return Container(color: color, child: child);\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatelessWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossFadeState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Specifies which of two children to show. See [AnimatedCrossFade].\n\nThe child that is shown will fade in, while the other will fade out.", "detail": "", "kind": 13, "label": "CrossFadeState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalObjectKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nIf the object is not private, then it is possible that collisions will occur\nwhere independent widgets will reuse the same object as their\n[GlobalObjectKey] value in a different part of the tree, leading to a global\nkey conflict. To avoid this problem, create a private [GlobalObjectKey]\nsubclass, as in:\n\n```dart\nclass _MyKey extends GlobalObjectKey {\n const _MyKey(Object value) : super(value);\n}\n```\n\nSince the [runtimeType] of the key is part of its identity, this will\nprevent clashes with other [GlobalObjectKey]s even if they have the same\nvalue.\n\nAny [GlobalObjectKey] created for the same value will match.", "detail": "", "kind": 7, "label": "GlobalObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the default color, opacity, and size of icons in a widget subtree.\n\nThe icon theme is honored by [Icon] and [ImageIcon] widgets.", "detail": "", "kind": 7, "label": "IconTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyedSubtree", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that builds its child.\n\nUseful for attaching a key to an existing widget.", "detail": "", "kind": 7, "label": "KeyedSubtree" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls callbacks in response to pointer events.\n\nRather than listening for raw pointer events, consider listening for\nhigher-level gestures using [GestureDetector].\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nIf it has a child, this widget defers to the child for sizing behavior. If\nit does not have a child, it grows to fit the parent instead.\n\nThis example makes a [Container] react to being entered by a mouse\npointer, showing a count of the number of entries and exits.\n\n```dart\nimport 'package:flutter/gestures.dart';\n```\n\n```dart\nint _enterCounter = 0;\nint _exitCounter = 0;\ndouble x = 0.0;\ndouble y = 0.0;\n\nvoid _incrementCounter(PointerEnterEvent details) {\n setState(() {\n _enterCounter++;\n });\n}\n\nvoid _decrementCounter(PointerExitEvent details) {\n setState(() {\n _exitCounter++;\n });\n}\n\nvoid _updateLocation(PointerHoverEvent details) {\n setState(() {\n x = details.position.dx;\n y = details.position.dy;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Center(\n child: ConstrainedBox(\n constraints: new BoxConstraints.tight(Size(300.0, 200.0)),\n child: Listener(\n onPointerEnter: _incrementCounter,\n onPointerHover: _updateLocation,\n onPointerExit: _decrementCounter,\n child: Container(\n color: Colors.lightBlueAccent,\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pointed at this box this many times:'),\n Text(\n '$_enterCounter Entries\\n$_exitCounter Exits',\n style: Theme.of(context).textTheme.display1,\n ),\n Text(\n 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [MouseTracker] an object that tracks mouse locations in the [GestureBinding].", "detail": "", "kind": 7, "label": "Listener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView].\n\n[ListWheelScrollView] lazily constructs its children during layout to avoid\ncreating more children than are visible through the [Viewport]. This\ndelegate is responsible for providing children to [ListWheelScrollView]\nduring that stage.\n\nSee also:\n\n * [ListWheelChildListDelegate], a delegate that supplies children using an\n explicit list.\n * [ListWheelChildLoopingListDelegate], a delegate that supplies infinite\n children by looping an explicit list.\n * [ListWheelChildBuilderDelegate], a delegate that supplies children using\n a builder callback.", "detail": "", "kind": 7, "label": "ListWheelChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopScope", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Registers a callback to veto attempts by the user to dismiss the enclosing\n[ModalRoute].\n\nSee also:\n\n * [ModalRoute.addScopedWillPopCallback] and [ModalRoute.removeScopedWillPopCallback],\n which this widget uses to register and unregister [onWillPop].", "detail": "", "kind": 7, "label": "WillPopScope" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetWillAccept", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for determining whether the given data will be accepted by a [DragTarget].\n\nUsed by [DragTarget.onWillAccept].", "detail": "(T data) → bool", "kind": 7, "label": "DragTargetWillAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableTextState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [EditableText].", "detail": "", "kind": 7, "label": "EditableTextState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list of widgets arranged linearly.\n\n[ListView] is the most commonly used scrolling widget. It displays its\nchildren one after another in the scroll direction. In the cross axis, the\nchildren are required to fill the [ListView].\n\nIf non-null, the [itemExtent] forces the children to have the given extent\nin the scroll direction. Specifying an [itemExtent] is more efficient than\nletting the children determine their own extent because the scrolling\nmachinery can make use of the foreknowledge of the children's extent to save\nwork, for example when the scroll position changes drastically.\n\nThere are four options for constructing a [ListView]:\n\n 1. The default constructor takes an explicit [List<Widget>] of children. This\n constructor is appropriate for list views with a small number of\n children because constructing the [List] requires doing work for every\n child that could possibly be displayed in the list view instead of just\n those children that are actually visible.\n\n 2. The [ListView.builder] constructor takes an [IndexedWidgetBuilder], which\n builds the children on demand. This constructor is appropriate for list views\n with a large (or infinite) number of children because the builder is called\n only for those children that are actually visible.\n\n 3. The [ListView.separated] constructor takes two [IndexedWidgetBuilder]s:\n `itemBuilder` builds child items on demand, and `separatorBuilder`\n similarly builds separator children which appear in between the child items.\n This constructor is appropriate for list views with a fixed number of children.\n\n 4. The [ListView.custom] constructor takes a [SliverChildDelegate], which provides\n the ability to customize additional aspects of the child model. For example,\n a [SliverChildDelegate] can control the algorithm used to estimate the\n size of children that are not actually visible.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nThis example uses the default constructor for [ListView] which takes an\nexplicit [List<Widget>] of children. This [ListView]'s children are made up\nof [Container]s with [Text].\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view.png)\n\n```dart\nListView(\n padding: const EdgeInsets.all(8.0),\n children: <Widget>[\n Container(\n height: 50,\n color: Colors.amber[600],\n child: const Center(child: Text('Entry A')),\n ),\n Container(\n height: 50,\n color: Colors.amber[500],\n child: const Center(child: Text('Entry B')),\n ),\n Container(\n height: 50,\n color: Colors.amber[100],\n child: const Center(child: Text('Entry C')),\n ),\n ],\n)\n```\n\nThis example mirrors the previous one, creating the same list using the\n[ListView.builder] constructor. Using the [IndexedWidgetBuilder], children\nare built lazily and can be infinite in number.\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_builder.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.builder(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n }\n);\n```\n\nThis example continues to build from our the previous ones, creating a\nsimilar list using [ListView.separated]. Here, a [Divider] is used as a\nseparator.\n\n![A ListView of 3 amber colored containers with sample text and a Divider\nbetween each of them.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_separated.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.separated(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n },\n separatorBuilder: (BuildContext context, int index) => const Divider(),\n);\n```\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as when using\nthe default constructor) or lazily provided ones (such as when using the\n[ListView.builder] constructor).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree,\nstates and render objects are destroyed. A new child at the same position\nin the list will be lazily recreated along with new elements, states and\nrender objects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the list child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the list child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child\n widget subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the list child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the list keeps the child's render\n object (and by extension, its associated elements and states) in a cache\n list instead of destroying them. When scrolled back into view, the render\n object is repainted as-is (if it wasn't marked dirty in the interim).\n\n This only works if [addAutomaticKeepAlives] and [addRepaintBoundaries]\n are false since those parameters cause the [ListView] to wrap each child\n widget subtree with other widgets.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default when\n [addAutomaticKeepAlives] is true). Instead of unconditionally caching the\n child element subtree when scrolling off-screen like [KeepAlive],\n [AutomaticKeepAlive] can let whether to cache the subtree be determined\n by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its list child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the list child element subtree will be destroyed\n when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive\n by using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\n## Transitioning to [CustomScrollView]\n\nA [ListView] is basically a [CustomScrollView] with a single [SliverList] in\nits [CustomScrollView.slivers] property.\n\nIf [ListView] is no longer sufficient, for example because the scroll view\nis to have both a list and a grid, or because the list is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[ListView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [ListView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing either a\n[SliverList] or a [SliverFixedExtentList]; the former if [itemExtent] on the\n[ListView] was null, and the latter if [itemExtent] was not null.\n\nThe [childrenDelegate] property on [ListView] corresponds to the\n[SliverList.delegate] (or [SliverFixedExtentList.delegate]) property. The\n[new ListView] constructor's `children` argument corresponds to the\n[childrenDelegate] being a [SliverChildListDelegate] with that same\nargument. The [new ListView.builder] constructor's `itemBuilder` and\n`childCount` arguments correspond to the [childrenDelegate] being a\n[SliverChildBuilderDelegate] with the matching arguments.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the list itself, and having\nthe [SliverList] instead be a child of the [SliverPadding].\n\n[CustomScrollView]s don't automatically avoid obstructions from [MediaQuery]\nlike [ListView]s do. To reproduce the behavior, wrap the slivers in\n[SliverSafeArea]s.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [ListView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nListView(\n shrinkWrap: true,\n padding: const EdgeInsets.all(20.0),\n children: <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n shrinkWrap: true,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverList(\n delegate: SliverChildListDelegate(\n <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n ),\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is scrollable, 2D array of widgets.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [ListBody], which arranges its children in a similar manner, but without\n scrolling.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ListView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable, 2D array of widgets.\n\nThe main axis direction of a grid is the direction in which it scrolls (the\n[scrollDirection]).\n\nThe most commonly used grid layouts are [GridView.count], which creates a\nlayout with a fixed number of tiles in the cross axis, and\n[GridView.extent], which creates a layout with tiles that have a maximum\ncross-axis extent. A custom [SliverGridDelegate] can produce an arbitrary 2D\narrangement of children, including arrangements that are unaligned or\noverlapping.\n\nTo create a grid with a large (or infinite) number of children, use the\n[GridView.builder] constructor with either a\n[SliverGridDelegateWithFixedCrossAxisCount] or a\n[SliverGridDelegateWithMaxCrossAxisExtent] for the [gridDelegate].\n\nTo use a custom [SliverChildDelegate], use [GridView.custom].\n\nTo create a linear array of children, use a [ListView].\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n## Transitioning to [CustomScrollView]\n\nA [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in\nits [CustomScrollView.slivers] property.\n\nIf [GridView] is no longer sufficient, for example because the scroll view\nis to have both a grid and a list, or because the grid is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[GridView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [GridView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing just a\n[SliverGrid].\n\nThe [childrenDelegate] property on [GridView] corresponds to the\n[SliverGrid.delegate] property, and the [gridDelegate] property on the\n[GridView] corresponds to the [SliverGrid.gridDelegate] property.\n\nThe [new GridView], [new GridView.count], and [new GridView.extent]\nconstructors' `children` arguments correspond to the [childrenDelegate]\nbeing a [SliverChildListDelegate] with that same argument. The [new\nGridView.builder] constructor's `itemBuilder` and `childCount` arguments\ncorrespond to the [childrenDelegate] being a [SliverChildBuilderDelegate]\nwith the matching arguments.\n\nThe [new GridView.count] and [new GridView.extent] constructors create\ncustom grid delegates, and have equivalently named constructors on\n[SliverGrid] to ease the transition: [new SliverGrid.count] and [new\nSliverGrid.extent] respectively.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the grid itself, and having\nthe [SliverGrid] instead be a child of the [SliverPadding].\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [GridView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nGridView.count(\n primary: false,\n padding: const EdgeInsets.all(20.0),\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n primary: false,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverGrid.count(\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ListView], which is scrollable, linear list of widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "GridView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Opacity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.\n\n\n\nThis example shows some [Text] when the `_visible` member field is true, and\nhides it when it is false:\n\n```dart\nOpacity(\n opacity: _visible ? 1.0 : 0.0,\n child: const Text('Now you see me, now you don\\'t!'),\n)\n```\n\nThis is more efficient than adding and removing the child widget from the\ntree on demand.\n\n## Performance considerations for opacity animation\n\nAnimating an [Opacity] widget directly causes the widget (and possibly its\nsubtree) to rebuild each frame, which is not very efficient. Consider using\nan [AnimatedOpacity] instead.\n\n## Transparent image\n\nIf only a single [Image] or [Color] needs to be composited with an opacity\nbetween 0.0 and 1.0, it's much faster to directly use them without [Opacity]\nwidgets.\n\nFor example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much\nfaster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`.\n\n\nThe following example draws an [Image] with 0.5 opacity without using\n[Opacity]:\n\n```dart\nImage.network(\n 'https://raw.githubusercontent.com/flutter/assets-for-api-docs/master/packages/diagrams/assets/blend_mode_destination.jpeg',\n color: Color.fromRGBO(255, 255, 255, 0.5),\n colorBlendMode: BlendMode.modulate\n)\n```\n\n\nDirectly drawing an [Image] or [Color] with opacity is faster than using\n[Opacity] on top of them because [Opacity] could apply the opacity to a\ngroup of widgets and therefore a costly offscreen buffer will be used.\nDrawing content into the offscreen buffer may also trigger render target\nswitches and such switching is particularly slow in older GPUs.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly, because it is either visible or hidden, rather than allowing\n fractional opacity values).\n * [ShaderMask], which can apply more elaborate effects to its child.\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [AnimatedOpacity], which uses an animation internally to efficiently\n animate opacity.\n * [FadeTransition], which uses a provided animation to efficiently animate\n opacity.\n * [Image], which can directly provide a partially transparent image with\n much less performance hit.", "detail": "", "kind": 7, "label": "Opacity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollHoldController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for holding a [Scrollable] stationary.\n\nAn object that implements this interface is returned by\n[ScrollPosition.hold]. It holds the scrollable stationary until an activity\nis started or the [cancel] method is called.", "detail": "", "kind": 7, "label": "ScrollHoldController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleResolutionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeResolutionCallback].\n\nIt is recommended to provide a [LocaleListResolutionCallback] instead of a\n[LocaleResolutionCallback] when possible, as [LocaleResolutionCallback] only\nreceives a subset of the information provided in [LocaleListResolutionCallback].\n\nA [LocaleResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the default\nlocale for the device after [LocaleListResolutionCallback] fails or is not provided.\n\nThis callback is also used if the app is created with a specific locale using\nthe [new WidgetsApp] `locale` parameter.\n\nThe [locale] is either the value of [WidgetsApp.locale], or the device's default\nlocale when the app started, or the device locale the user selected after the app\nwas started. The default locale is the first locale in the list of preferred\nlocales. If [locale] is null, then Flutter has not yet received the locale\ninformation from the platform. The [supportedLocales] parameter is just the value of\n[WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleListResolutionCallback], which takes a list of preferred locales (instead of one locale).\n Resolutions by [LocaleListResolutionCallback] take precedence over [LocaleResolutionCallback].", "detail": "(Locale locale, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirectionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to indicate that it has been dismissed in\nthe given `direction`.\n\nUsed by [Dismissible.onDismissed].", "detail": "(DismissDirection direction) → void", "kind": 7, "label": "DismissDirectionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract widget for building widgets that gradually change their\nvalues over a period of time.\n\nSubclasses' States must provide a way to visit the subclass's relevant\nfields to animate. [ImplicitlyAnimatedWidget] will then automatically\ninterpolate and animate those fields using the provided duration and\ncurve when those fields change.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that blocks interaction with previous routes.\n\n[ModalRoute]s cover the entire [Navigator]. They are not necessarily\n[opaque], however; for example, a pop-up menu uses a [ModalRoute] but only\nshows the menu in a small box overlapping the previous route.\n\nThe `T` type argument is the return value of the route. If there is no\nreturn value, consider using `void` as the return value.", "detail": "", "kind": 7, "label": "ModalRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BorderRadius]s.\n\nThis class specializes the interpolation of [Tween<BorderRadius>] to use\n[BorderRadius.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderRadiusTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTextThemeData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Cupertino typography theme in a [CupertinoThemeData].", "detail": "", "kind": 7, "label": "CupertinoTextThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that efficiently propagate information down the tree.\n\nTo obtain the nearest instance of a particular type of inherited widget from\na build context, use [BuildContext.inheritFromWidgetOfExactType].\n\nInherited widgets, when referenced in this way, will cause the consumer to\nrebuild when the inherited widget itself changes state.\n\n\n\nThe following is a skeleton of an inherited widget called `FrogColor`:\n\n```dart\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor) as FrogColor;\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n```\n\nThe convention is to provide a static method `of` on the [InheritedWidget]\nwhich does the call to [BuildContext.inheritFromWidgetOfExactType]. This\nallows the class to define its own fallback logic in case there isn't\na widget in scope. In the example above, the value returned will be\nnull in that case, but it could also have defaulted to a value.\n\nSometimes, the `of` method returns the data rather than the inherited\nwidget; for example, in this case it could have returned a [Color] instead\nof the `FrogColor` widget.\n\nOccasionally, the inherited widget is an implementation detail of another\nclass, and is therefore private. The `of` method in that case is typically\nput on the public class instead. For example, [Theme] is implemented as a\n[StatelessWidget] that builds a private inherited widget; [Theme.of] looks\nfor that inherited widget using [BuildContext.inheritFromWidgetOfExactType]\nand then returns the [ThemeData].\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressDraggable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child draggable starting from long press.", "detail": "", "kind": 7, "label": "LongPressDraggable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A graphical icon widget drawn with a glyph from a font described in\nan [IconData] such as material's predefined [IconData]s in [Icons].\n\nIcons are not interactive. For an interactive icon, consider material's\n[IconButton].\n\nThere must be an ambient [Directionality] widget when using [Icon].\nTypically this is introduced automatically by the [WidgetsApp] or\n[MaterialApp].\n\nThis widget assumes that the rendered icon is squared. Non-squared icons may\nrender incorrectly.\n\n\nThis example shows how to use [Icon] to create an addition icon, in the\ncolor pink, and 30 x 30 pixels in size.\n\n```dart\nIcon(\n Icons.add,\n color: Colors.pink,\n size: 30.0,\n)\n```\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [Icons], for the list of available icons for use with this class.\n * [IconTheme], which provides ambient configuration for icons.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "Icon" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidgetBaseState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations that need to rebuild their\nwidget tree as the animation runs.\n\nThis class calls [build] each frame that the animation tickets. For a\nvariant that does not rebuild each frame, consider subclassing\n[ImplicitlyAnimatedWidgetState] directly.\n\nSubclasses must implement the [forEachTween] method to allow\n[AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields\nand animate them.", "detail": "", "kind": 7, "label": "AnimatedWidgetBaseState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePopDisposition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates whether the current route should be popped.\n\nUsed as the return value for [Route.willPop].\n\nSee also:\n\n * [WillPopScope], a widget that hooks into the route's [Route.willPop]\n mechanism.", "detail": "", "kind": 13, "label": "RoutePopDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling container that animates items when they are inserted or removed.\n\nThis widget's [AnimatedListState] can be used to dynamically insert or remove\nitems. To refer to the [AnimatedListState] either provide a [GlobalKey] or\nuse the static [of] method from an item's input callback.\n\nThis widget is similar to one created by [ListView.builder].", "detail": "", "kind": 7, "label": "AnimatedList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDatePicker", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A date picker widget in iOS style.\n\nThere are several modes of the date picker listed in [CupertinoDatePickerMode].\n\nThe class will display its children as consecutive columns. Its children\norder is based on internationalization.\n\nExample of the picker in date mode:\n\n * US-English: [July | 13 | 2012]\n * Vietnamese: [13 | Tháng 7 | 2012]\n\nSee also:\n\n * [CupertinoTimerPicker], the class that implements the iOS-style timer picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 7, "label": "CupertinoDatePicker" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraintsTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BoxConstraints].\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[BoxConstraints.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BoxConstraintsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsApp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience class that wraps a number of widgets that are commonly\nrequired for an application.\n\nOne of the primary roles that [WidgetsApp] provides is binding the system\nback button to popping the [Navigator] or quitting the application.\n\nSee also: [CheckedModeBanner], [DefaultTextStyle], [MediaQuery],\n[Localizations], [Title], [Navigator], [Overlay], [SemanticsDebugger] (the\nwidgets wrapped by this one).", "detail": "", "kind": 7, "label": "WidgetsApp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for scroll views whose items have the same size.\n\nSimilar to a standard [ScrollController] but with the added convenience\nmechanisms to read and go to item indices rather than a raw pixel scroll\noffset.\n\nSee also:\n\n * [ListWheelScrollView], a scrollable view widget with fixed size items\n that this widget controls.\n * [FixedExtentMetrics], the `metrics` property exposed by\n [ScrollNotification] from [ListWheelScrollView] which can be used\n to listen to the current item index on a push basis rather than polling\n the [FixedExtentScrollController].", "detail": "", "kind": 7, "label": "FixedExtentScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays an image.\n\nSeveral constructors are provided for the various ways that an image can be\nspecified:\n\n * [new Image], for obtaining an image from an [ImageProvider].\n * [new Image.asset], for obtaining an image from an [AssetBundle]\n using a key.\n * [new Image.network], for obtaining an image from a URL.\n * [new Image.file], for obtaining an image from a [File].\n * [new Image.memory], for obtaining an image from a [Uint8List].\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\nTo automatically perform pixel-density-aware asset resolution, specify the\nimage using an [AssetImage] and make sure that a [MaterialApp], [WidgetsApp],\nor [MediaQuery] widget exists above the [Image] widget in the widget tree.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nSee also:\n\n * [Icon], which shows an image from a font.\n * [new Ink.image], which is the preferred way to show an image in a\n material application (especially if the image is in a [Material] and will\n have an [InkWell] on top of it).\n * [Image](https://api.flutter.dev/flutter/dart-ui/Image-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorber", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[SliverOverlapInjector].\n\nSee also:\n\n * [NestedScrollView], whose documentation has sample code showing how to\n use this widget.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPadding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that applies padding on each side of another sliver.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverPadding]\nis a basic sliver that insets another sliver by applying padding on each\nside.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a [SliverPersistentHeader] with\n`pinned:true` will cause the app bar to overlap earlier slivers (contrary to\nthe normal behavior of pinned app bars), and while the app bar is pinned,\nthe padding will scroll away.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.", "detail": "", "kind": 7, "label": "SliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObstructingPreferredSizeWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that has a preferred size and reports whether it fully obstructs\nwidgets behind it.\n\nUsed by [CupertinoPageScaffold] to either shift away fully obstructed content\nor provide a padding guide to partially obstructed content.", "detail": "", "kind": 7, "label": "ObstructingPreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that builds a widget given a child.\n\nThe child should typically be part of the returned widget tree.\n\nUsed by [AnimatedBuilder.builder], as well as [WidgetsApp.builder] and\n[MaterialApp.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context, Widget child) → Widget", "kind": 7, "label": "TransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Viewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside.\n\n[Viewport] is the visual workhorse of the scrolling machinery. It displays a\nsubset of its children according to its own dimensions and the given\n[offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[Viewport] hosts a bidirectional list of slivers, anchored on a [center]\nsliver, which is placed at the zero scroll offset. The center widget is\ndisplayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[Viewport] cannot contain box children directly. Instead, use a\n[SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [Viewport] into widgets that are easier to use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [ShrinkWrappingViewport], a variant of [Viewport] that shrink-wraps its\n contents along the main axis.", "detail": "", "kind": 7, "label": "Viewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a shape.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\nFor shapes that cannot be expressed as a rectangle with rounded corners use\n[PhysicalShape].\n\nSee also:\n\n * [DecoratedBox], which can apply more arbitrary shadow effects.\n * [ClipRect], which applies a clip to its child.", "detail": "", "kind": 7, "label": "PhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Baseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its child according to the child's baseline.\n\nThis widget shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child. If [baseline] is less than the distance from\nthe top of the child to the baseline of the child, then the child\nis top-aligned instead.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [Center], a widget that centers its child within itself.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Baseline" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of an icon fulfilled by a font glyph.\n\nSee [Icons] for a number of predefined icons available for material\ndesign applications.", "detail": "", "kind": 7, "label": "IconData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollSimulation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches iOS.\n\nSee also:\n\n * [ClampingScrollSimulation], which implements Android scroll physics.", "detail": "", "kind": 7, "label": "BouncingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillRemaining", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[SliverFillRemaining] sizes its child to fill the viewport in the cross axis\nand to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableCanceledCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] is dropped without being accepted by a [DragTarget].\n\nUsed by [Draggable.onDraggableCanceled].", "detail": "(Velocity velocity, Offset offset) → void", "kind": 7, "label": "DraggableCanceledCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShrinkWrappingViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside and shrink wraps its children in the\nmain axis.\n\n[ShrinkWrappingViewport] displays a subset of its children according to its\nown dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[ShrinkWrappingViewport] differs from [Viewport] in that [Viewport] expands\nto fill the main axis whereas [ShrinkWrappingViewport] sizes itself to match\nits children in the main axis. This shrink wrapping behavior is expensive\nbecause the children, and hence the viewport, could potentially change size\nwhenever the [offset] changes (e.g., because of a collapsing header).\n\n[ShrinkWrappingViewport] cannot contain box children directly. Instead, use\na [SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [ShrinkWrappingViewport] into widgets that are easier to\n use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [Viewport], a viewport that does not shrink-wrap its contents.", "detail": "", "kind": 7, "label": "ShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrackingScrollController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollController] whose [initialScrollOffset] tracks its most recently\nupdated [ScrollPosition].\n\nThis class can be used to synchronize the scroll offset of two or more\nlazily created scroll views that share a single [TrackingScrollController].\nIt tracks the most recently updated scroll position and reports it as its\n`initialScrollOffset`.\n\n\nIn this example each [PageView] page contains a [ListView] and all three\n[ListView]'s share a [TrackingScrollController]. The scroll offsets of all\nthree list views will track each other, to the extent that's possible given\nthe different list lengths.\n\n```dart\nPageView(\n children: <Widget>[\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),\n ),\n ],\n)\n```\n\nIn this example the `_trackingController` would have been created by the\nstateful widget that built the widget tree.", "detail": "", "kind": 7, "label": "TrackingScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for stateful widgets that have exactly one inflated instance in\nthe tree.\n\nSuch widgets must be given a [GlobalKey]. This key can be generated by the\nsubclass from its [Type] object, e.g. by calling `super(key: new\nGlobalObjectKey(MyWidget))` where `MyWidget` is the name of the subclass.\n\nSince only one instance can be inflated at a time, there is only ever one\ncorresponding [State] object. That object is exposed, for convenience, via\nthe [currentState] property.\n\nWhen subclassing [UniqueWidget], provide the corresponding [State] subclass\nas the type argument.", "detail": "", "kind": 7, "label": "UniqueWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\nScrollable widgets consist of three pieces:\n\n 1. A [Scrollable] widget, which listens for various user gestures and\n implements the interaction design for scrolling.\n 2. A viewport widget, such as [Viewport] or [ShrinkWrappingViewport], which\n implements the visual design for scrolling by displaying only a portion\n of the widgets inside the scroll view.\n 3. One or more slivers, which are widgets that can be composed to created\n various scrolling effects, such as lists, grids, and expanding headers.\n\n[ScrollView] helps orchestrate these pieces by creating the [Scrollable] and\nthe viewport and deferring to its subclass to create the slivers.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedModalBarrier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself,\nand can be configured with an animated color value.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nThis widget is similar to [ModalBarrier] except that it takes an animated\n[color] instead of a single color.\n\nSee also:\n\n * [ModalRoute], which uses this widget.", "detail": "", "kind": 7, "label": "AnimatedModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPaint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [CustomPaint] first asks its [painter] to paint on the\ncurrent canvas, then it paints its child, and then, after painting its\nchild, it asks its [foregroundPainter] to paint. The coordinate system of the\ncanvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing [CustomPainter].\n\n\nBecause custom paint calls its painters during paint, you cannot call\n`setState` or `markNeedsLayout` during the callback (the layout for this\nframe has already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [size], which defaults to\n[Size.zero]. [size] must not be null.\n\n[isComplex] and [willChange] are hints to the compositor's raster cache\nand must not be null.\n\n\nThis example shows how the sample custom painter shown at [CustomPainter]\ncould be used in a [CustomPaint] widget to display a background to some\ntext.\n\n```dart\nCustomPaint(\n painter: Sky(),\n child: Center(\n child: Text(\n 'Once upon a time...',\n style: const TextStyle(\n fontSize: 40.0,\n fontWeight: FontWeight.w900,\n color: Color(0xFFFFFFFF),\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomPainter], the class to extend when creating custom painters.\n * [Canvas], the class that a custom painter uses to paint.", "detail": "", "kind": 7, "label": "CustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicHeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Element that supports building children lazily for [ListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotatedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rotates its child by a integral number of quarter turns.\n\nUnlike [Transform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.\n\n\nThis snippet rotates the child (some [Text]) so that it renders from bottom\nto top, like an axis label on a graph:\n\n```dart\nRotatedBox(\n quarterTurns: 3,\n child: const Text('Hello World!'),\n)\n```\n\nSee also:\n\n * [Transform], which is a paint effect that allows you to apply an\n arbitrary transform to a child.\n * [new Transform.rotate], which applies a rotation paint effect.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "RotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapInjector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [RenderSliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [RenderViewport] (probably a [RenderNestedScrollViewViewport]), so\nthat it will always be laid out before the [RenderSliverOverlapInjector]\nduring a particular frame.", "detail": "", "kind": 7, "label": "RenderSliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteFactory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a route for the given route settings.\n\nUsed by [Navigator.onGenerateRoute] and [Navigator.onUnknownRoute].", "detail": "(RouteSettings settings) → Route<dynamic>", "kind": 7, "label": "RouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPath", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a path.\n\nCalls a callback on a delegate whenever the widget is to be\npainted. The callback returns a path and the widget prevents the\nchild from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized widgets:\n\n * To clip to a rectangle, consider [ClipRect].\n * To clip to an oval or circle, consider [ClipOval].\n * To clip to a rounded rectangle, consider [ClipRRect].\n\nTo clip to a particular [ShapeBorder], consider using either the\n[ClipPath.shape] static method or the [ShapeBorderClipper] custom clipper\nclass.", "detail": "", "kind": 7, "label": "ClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayVisibilityMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Visibility of text field overlays based on the state of the current text entry.\n\nUsed to toggle the visibility behavior of the optional decorating widgets\nsurrounding the [EditableText] such as the clear text button.", "detail": "", "kind": 13, "label": "OverlayVisibilityMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormField", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single form field.\n\nThis widget maintains the current state of the form field, so that updates\nand validation errors are visually reflected in the UI.\n\nWhen used inside a [Form], you can use methods on [FormState] to query or\nmanipulate the form data as a whole. For example, calling [FormState.save]\nwill invoke each [FormField]'s [onSaved] callback in turn.\n\nUse a [GlobalKey] with [FormField] if you want to retrieve its current\nstate, for example if you want one form field to depend on another.\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nSee also:\n\n * [Form], which is the widget that aggregates the form fields.\n * [TextField], which is a commonly used form field for entering text.", "detail": "", "kind": 7, "label": "FormField" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the widgets layer and the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidgetState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations.\n\n[ImplicitlyAnimatedWidgetState] requires that subclasses respond to the\nanimation, themselves. If you would like `setState()` to be called\nautomatically as the animation changes, use [AnimatedWidgetBaseState].\n\nSubclasses must implement the [forEachTween] method to allow\n[ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's\nfields and animate them.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidgetState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteTransitionsBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's transitions.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildTransitions] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) → Widget", "kind": 7, "label": "RouteTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusManager", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the focus tree.\n\nThe focus tree keeps track of which [FocusNode] is the user's current\nkeyboard focus. The widget that owns the [FocusNode] often listens for\nkeyboard events.\n\nThe focus manager is responsible for holding the [FocusScopeNode] that is\nthe root of the focus tree and tracking which [FocusNode] has the overall\nfocus.\n\nThe [FocusManager] is held by the [WidgetsBinding] as\n[WidgetsBinding.focusManager]. The [FocusManager] is rarely accessed\ndirectly. Instead, to find the [FocusScopeNode] for a given [BuildContext],\nuse [FocusScope.of].\n\nThe [FocusManager] knows nothing about [FocusNode]s other than the one that\nis currently focused. If a [FocusScopeNode] is removed, then the\n[FocusManager] will attempt to focus the next [FocusScopeNode] in the focus\ntree that it maintains, but if the current focus in that [FocusScopeNode] is\nnull, it will stop there, and no [FocusNode] will have focus.\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusManager" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for [PageView].\n\nA page controller lets you manipulate which page is visible in a [PageView].\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nSee also:\n\n * [PageView], which is the widget this object controls.", "detail": "", "kind": 7, "label": "PageController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables or disables tickers (and thus animation controllers) in the widget\nsubtree.\n\nThis only works if [AnimationController] objects are created using\nwidget-aware ticker providers. For example, using a\n[TickerProviderStateMixin] or a [SingleTickerProviderStateMixin].", "detail": "", "kind": 7, "label": "TickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is unique across the entire app.\n\nGlobal keys uniquely identify elements. Global keys provide access to other\nobjects that are associated with elements, such as the a [BuildContext] and,\nfor [StatefulWidget]s, a [State].\n\nWidgets that have global keys reparent their subtrees when they are moved\nfrom one location in the tree to another location in the tree. In order to\nreparent its subtree, a widget must arrive at its new location in the tree\nin the same animation frame in which it was removed from its old location in\nthe tree.\n\nGlobal keys are relatively expensive. If you don't need any of the features\nlisted above, consider using a [Key], [ValueKey], [ObjectKey], or\n[UniqueKey] instead.\n\nYou cannot simultaneously include two widgets in the tree with the same\nglobal key. Attempting to do so will assert at runtime.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "GlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDatePickerMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different display modes of [CupertinoDatePicker].\n\nSee also:\n\n * [CupertinoDatePicker], the class that implements different display modes\n of the iOS-style date picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 13, "label": "CupertinoDatePickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Column", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a vertical array.\n\nTo cause a child to expand to fill the available vertical space, wrap the\nchild in an [Expanded] widget.\n\nThe [Column] widget does not scroll (and in general it is considered an error\nto have more children in a [Column] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a horizontal variant, see [Row].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example uses a [Column] to arrange three widgets vertically, the last\nbeing made to fill all the remaining space.\n\n```dart\nColumn(\n children: <Widget>[\n Text('Deliver features faster'),\n Text('Craft beautiful UIs'),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\nIn the sample above, the text and the logo are centered on each line. In the\nfollowing example, the [crossAxisAlignment] is set to\n[CrossAxisAlignment.start], so that the children are left-aligned. The\n[mainAxisSize] is set to [MainAxisSize.min], so that the column shrinks to\nfit the children.\n\n```dart\nColumn(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n Text('We move under cover and we move as one'),\n Text('Through the night, we have one shot to live another day'),\n Text('We cannot let a stray gunshot give us away'),\n Text('We will fight up close, seize the moment and stay in it'),\n Text('It’s either that or meet the business end of a bayonet'),\n Text('The code word is ‘Rochambeau,’ dig me?'),\n Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),\n ],\n)\n```\n\n## Troubleshooting\n\n### When the incoming vertical constraints are unbounded\n\nWhen a [Column] has one or more [Expanded] or [Flexible] children, and is\nplaced in another [Column], or in a [ListView], or in some other context\nthat does not provide a maximum height constraint for the [Column], you will\nget an exception at runtime saying that there are children with non-zero\nflex but the vertical constraints are unbounded.\n\nThe problem, as described in the details that accompany that exception, is\nthat using [Flexible] or [Expanded] means that the remaining space after\nlaying out all the other children must be shared equally, but if the\nincoming vertical constraints are unbounded, there is infinite remaining\nspace.\n\nThe key to solving this problem is usually to determine why the [Column] is\nreceiving unbounded vertical constraints.\n\nOne common reason for this to happen is that the [Column] has been placed in\nanother [Column] (without using [Expanded] or [Flexible] around the inner\nnested [Column]). When a [Column] lays out its non-flex children (those that\nhave neither [Expanded] or [Flexible] around them), it gives them unbounded\nconstraints so that they can determine their own dimensions (passing\nunbounded constraints usually signals to the child that it should\nshrink-wrap its contents). The solution in this case is typically to just\nwrap the inner column in an [Expanded] to indicate that it should take the\nremaining space of the outer column, rather than being allowed to take any\namount of room it desires.\n\nAnother reason for this message to be displayed is nesting a [Column] inside\na [ListView] or other vertical scrollable. In that scenario, there really is\ninfinite vertical space (the whole point of a vertical scrolling list is to\nallow infinite space vertically). In such scenarios, it is usually worth\nexamining why the inner [Column] should have an [Expanded] or [Flexible]\nchild: what size should the inner children really be? The solution in this\ncase is typically to remove the [Expanded] or [Flexible] widgets from around\nthe inner children.\n\nFor more discussion about constraints, see [BoxConstraints].\n\n### The yellow and black striped banner\n\nWhen the contents of a [Column] exceed the amount of space available, the\n[Column] overflows, and the contents are clipped. In debug mode, a yellow\nand black striped bar is rendered at the overflowing edge to indicate the\nproblem, and a message is printed below the [Column] saying how much\noverflow was detected.\n\nThe usual solution is to use a [ListView] rather than a [Column], to enable\nthe contents to scroll when vertical space is limited.\n\n## Layout algorithm\n\n_This section describes how a [Column] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Column] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded vertical constraints and the incoming\n horizontal constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight horizontal constraints\n that match the incoming max width.\n2. Divide the remaining vertical space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of vertical space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same horizontal\n constraints as in step 1, but instead of using unbounded vertical\n constraints, use vertical constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The width of the [Column] is the maximum width of the children (which\n will always satisfy the incoming horizontal constraints).\n5. The height of the [Column] is determined by the [mainAxisSize] property.\n If the [mainAxisSize] property is [MainAxisSize.max], then the height of\n the [Column] is the max height of the incoming constraints. If the\n [mainAxisSize] property is [MainAxisSize.min], then the height of the\n [Column] is the sum of heights of the children (subject to the incoming\n constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any vertical\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a horizontal equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may size smaller (leaving some remaining room unused).\n * [SingleChildScrollView], whose documentation discusses some ways to\n use a [Column] inside a scrolling container.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Column" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAlive", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mark a child as needing to stay alive even when it's in a lazy list that\nwould otherwise remove it.\n\nThis widget is for use in [SliverWithKeepAliveWidget]s, such as\n[SliverGrid] or [SliverList].\n\nThis widget is rarely used directly. The [SliverChildBuilderDelegate] and\n[SliverChildListDelegate] delegates, used with [SliverList] and\n[SliverGrid], as well as the scroll view counterparts [ListView] and\n[GridView], have an `addAutomaticKeepAlives` feature, which is enabled by\ndefault, and which causes [AutomaticKeepAlive] widgets to be inserted around\neach child, causing [KeepAlive] widgets to be automatically added and\nconfigured in response to [KeepAliveNotification]s.\n\nTherefore, to keep a widget alive, it is more common to use those\nnotifications than to directly deal with [KeepAlive] widgets.\n\nIn practice, the simplest way to deal with these notifications is to mix\n[AutomaticKeepAliveClientMixin] into one's [State]. See the documentation\nfor that mixin class for details.", "detail": "", "kind": 7, "label": "KeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollPhysics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that allow the scroll offset to go beyond\nthe bounds of the content, but then bounce the content back to the edge of\nthose bounds.\n\nThis is the behavior typically seen on iOS.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on iOS.\n * [ClampingScrollPhysics], which is the analogous physics for Android's\n clamping behavior.", "detail": "", "kind": 7, "label": "BouncingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageBucket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A storage bucket associated with a page in an app.\n\nUseful for storing per-page state that persists across navigations from one\npage to another.", "detail": "", "kind": 7, "label": "PageStorageBucket" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Semantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the widget tree with a description of the meaning of\nthe widgets.\n\nUsed by accessibility tools, search engines, and other semantic analysis\nsoftware to determine the meaning of the application.\n\nSee also:\n\n * [MergeSemantics], which marks a subtree as being a single node for\n accessibility purposes.\n * [ExcludeSemantics], which excludes a subtree from the semantics tree\n (which might be useful if it is, e.g., totally decorative and not\n important to the user).\n * [RenderObject.semanticsAnnotator], the rendering library API through which\n the [Semantics] widget is actually implemented.\n * [SemanticsNode], the object used by the rendering library to represent\n semantics in the semantics tree.\n * [SemanticsDebugger], an overlay to help visualize the semantics tree. Can\n be enabled using [WidgetsApp.showSemanticsDebugger] or\n [MaterialApp.showSemanticsDebugger].", "detail": "", "kind": 7, "label": "Semantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Draggable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dragged from to a [DragTarget].\n\nWhen a draggable widget recognizes the start of a drag gesture, it displays\na [feedback] widget that tracks the user's finger across the screen. If the\nuser lifts their finger while on top of a [DragTarget], that target is given\nthe opportunity to accept the [data] carried by the draggable.\n\nOn multitouch devices, multiple drags can occur simultaneously because there\ncan be multiple pointers in contact with the device at once. To limit the\nnumber of simultaneous drags, use the [maxSimultaneousDrags] property. The\ndefault is to allow an unlimited number of simultaneous drags.\n\nThis widget displays [child] when zero drags are under way. If\n[childWhenDragging] is non-null, this widget instead displays\n[childWhenDragging] when one or more drags are underway. Otherwise, this\nwidget always displays [child].\n\nSee also:\n\n * [DragTarget]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "Draggable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a [Dismissible] can be dismissed.", "detail": "", "kind": 13, "label": "DismissDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Positioned", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned.\n\nA [Positioned] widget must be a descendant of a [Stack], and the path from\nthe [Positioned] widget to its enclosing [Stack] must contain only\n[StatelessWidget]s or [StatefulWidget]s (not other kinds of widgets, like\n[RenderObjectWidget]s).\n\n\nIf a widget is wrapped in a [Positioned], then it is a _positioned_ widget\nin its [Stack]. If the [top] property is non-null, the top edge of this child\nwill be positioned [top] layout units from the top of the stack widget. The\n[right], [bottom], and [left] properties work analogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [right] and [left] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nIf all three values on a particular axis are null, then the\n[Stack.alignment] property is used to position the child.\n\nIf all six values are null, the child is a non-positioned child. The [Stack]\nuses only the non-positioned children to size itself.\n\nSee also:\n\n * [PositionedDirectional], which adapts to the ambient [Directionality].", "detail": "", "kind": 7, "label": "Positioned" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTimerPickerMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different modes of [CupertinoTimerPicker].\n\nSee also:\n\n * [CupertinoTimerPicker], the class that implements the iOS-style timer picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 13, "label": "CupertinoTimerPickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is only equal to itself.", "detail": "", "kind": 7, "label": "UniqueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionallySizedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to a fraction of the total available space.\nFor more details about the layout algorithm, see\n[RenderFractionallySizedOverflowBox].\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionallySizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScopeNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interior node in the focus tree.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nThe interior nodes in the focus tree cannot themselves be focused but\ninstead remember previous focus states. A scope is currently active in its\nparent whenever [isFirstFocus] is true. If that scope is detached from its\nparent, its previous sibling becomes the parent's first focus.\n\nA [FocusNode] has the overall focus when the node is focused in its\nparent [FocusScopeNode] and [FocusScopeNode.isFirstFocus] is true for\nthat scope and all its ancestor scopes.\n\nIf a [FocusScopeNode] is removed, then the next sibling node will be set as\nthe focused node by the [FocusManager].\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].\n * [FocusScope], which is a widget that associates a [FocusScopeNode] with\n its location in the tree.", "detail": "", "kind": 7, "label": "FocusScopeNode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAlive", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows subtrees to request to be kept alive in lazy lists.\n\nThis widget is like [KeepAlive] but instead of being explicitly configured,\nit listens to [KeepAliveNotification] messages from the [child] and other\ndescendants.\n\nThe subtree is kept alive whenever there is one or more descendant that has\nsent a [KeepAliveNotification] and not yet triggered its\n[KeepAliveNotification.handle].\n\nTo send these notifications, consider using [AutomaticKeepAliveClientMixin].", "detail": "", "kind": 7, "label": "AutomaticKeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapAbsorber", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[RenderSliverOverlapInjector].", "detail": "", "kind": 7, "label": "RenderSliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometryTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsetsGeometry]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsetsGeometry>] to\nuse [EdgeInsetsGeometry.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsTween], which interpolates between two [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryInitializer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.initializer].", "detail": "(T instance) → void", "kind": 7, "label": "GestureRecognizerFactoryInitializer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver whose size varies when the sliver is scrolled to the leading edge\nof the viewport.\n\nThis is the layout primitive that [SliverAppBar] uses for its\nshrinking/growing effect.", "detail": "", "kind": 7, "label": "SliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoAlertDialog", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style alert dialog.\n\nAn alert dialog informs the user about situations that require\nacknowledgement. An alert dialog has an optional title, optional content,\nand an optional list of actions. The title is displayed above the content\nand the actions are displayed below the content.\n\nThis dialog styles its title and content (typically a message) to match the\nstandard iOS title and message dialog text style. These default styles can\nbe overridden by explicitly defining [TextStyle]s for [Text] widgets that\nare part of the title or content.\n\nTo display action buttons that look like standard iOS dialog buttons,\nprovide [CupertinoDialogAction]s for the [actions] given to this dialog.\n\nTypically passed as the child widget to [showDialog], which displays the\ndialog.\n\nSee also:\n\n * [CupertinoPopupSurface], which is a generic iOS-style popup surface that\n holds arbitrary content to create custom popups.\n * [CupertinoDialogAction], which is an iOS-style dialog button.\n * [AlertDialog], a Material Design alert dialog.\n * <https://developer.apple.com/ios/human-interface-guidelines/views/alerts/>", "detail": "", "kind": 7, "label": "CupertinoAlertDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RootRenderObjectElement] that is hosted by a [RenderObject].\n\nThis element class is the instantiation of a [RenderObjectToWidgetAdapter]\nwidget. It can be used only as the root of an [Element] tree (it cannot be\nmounted into another [Element]; it's parent must be null).\n\nIn typical usage, it will be instantiated for a [RenderObjectToWidgetAdapter]\nwhose container is the [RenderView] that connects to the Flutter engine. In\nthis usage, it is normally instantiated by the bootstrapping logic in the\n[WidgetsFlutterBinding] singleton created by [runApp].", "detail": "", "kind": 7, "label": "RenderObjectToWidgetElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Wrap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in multiple horizontal or vertical runs.\n\nA [Wrap] lays out each child and attempts to place the child adjacent to the\nprevious child in the main axis, given by [direction], leaving [spacing]\nspace in between. If there is not enough space to fit the child, [Wrap]\ncreates a new _run_ adjacent to the existing children in the cross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].\n\n\n\nThis example renders some [Chip]s representing four contacts in a [Wrap] so\nthat they flow across lines as necessary.\n\n```dart\nWrap(\n spacing: 8.0, // gap between adjacent chips\n runSpacing: 4.0, // gap between lines\n children: <Widget>[\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('AH')),\n label: Text('Hamilton'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('ML')),\n label: Text('Lafayette'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('HM')),\n label: Text('Mulligan'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('JL')),\n label: Text('Laurens'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [Row], which places children in one line, and gives control over their\n alignment and spacing.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Wrap" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An inherited widget for a [Listenable] [notifier], which updates its\ndependencies when the [notifier] is triggered.\n\nThis is a variant of [InheritedWidget], specialized for subclasses of\n[Listenable], such as [ChangeNotifier] or [ValueNotifier].\n\nDependents are notified whenever the [notifier] sends notifications, or\nwhenever the identity of the [notifier] changes.\n\nMultiple notifications are coalesced, so that dependents only rebuild once\neven if the [notifier] fires multiple times between two frames.\n\nTypically this class is subclassed with a class that provides an `of` static\nmethod that calls [BuildContext.inheritFromWidgetOfExactType] with that\nclass.\n\nThe [updateShouldNotify] method may also be overridden, to change the logic\nin the cases where [notifier] itself is changed. The [updateShouldNotify]\nmethod is called with the old [notifier] in the case of the [notifier] being\nchanged. When it returns true, the dependents are marked as needing to be\nrebuilt this frame.\n\nSee also:\n\n * [Animation], an implementation of [Listenable] that ticks each frame to\n update a value.\n * [ViewportOffset] or its subclass [ScrollPosition], implementations of\n [Listenable] that trigger when a view is scrolled.\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedScrollMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable snapshot of values associated with a [Scrollable] viewport.\n\nFor details, see [ScrollMetrics], which defines this object's interfaces.", "detail": "", "kind": 7, "label": "FixedScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Padding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.\n\n\nThis snippet indents the child (a [Card] with some [Text]) by eight pixels\nin each direction:\n\n```dart\nPadding(\n padding: EdgeInsets.all(8.0),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\n## Design discussion\n\n### Why use a [Padding] widget rather than a [Container] with a [Container.padding] property?\n\nThere isn't really any difference between the two. If you supply a\n[Container.padding] argument, [Container] simply builds a [Padding] widget\nfor you.\n\n[Container] doesn't implement its properties directly. Instead, [Container]\ncombines a number of simpler widgets together into a convenient package. For\nexample, the [Container.padding] property causes the container to build a\n[Padding] widget and the [Container.decoration] property causes the\ncontainer to build a [DecoratedBox] widget. If you find [Container]\nconvenient, feel free to use it. If not, feel free to build these simpler\nwidgets in whatever combination meets your needs.\n\nIn fact, the majority of widgets in Flutter are simply combinations of other\nsimpler widgets. Composition, rather than inheritance, is the primary\nmechanism for building up widgets.\n\nSee also:\n\n * [EdgeInsets], the class that is used to describe the padding dimensions.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Padding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidgetBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [StatefulBuilder].\n\nCall [setState] to schedule the [StatefulBuilder] to rebuild.", "detail": "(BuildContext context, StateSetter setState) → Widget", "kind": 7, "label": "StatefulWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildBuilderDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using a builder callback.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot even have to be built until they are displayed.\n\nThe widgets returned from the builder callback are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\n\nThis sample code shows how to use `semanticIndexOffset` to handle multiple\ndelegates in a single scroll view.\n\n```dart\nCustomScrollView(\n semanticChildCount: 4,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n ),\n ),\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n semanticIndexOffset: 2,\n ),\n ),\n ],\n)\n```\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\n\nThis sample code shows how to use `semanticIndexCallback` to handle\nannotating a subset of child nodes with a semantic index. There is\na [Spacer] widget at odd indexes which should not have a semantic\nindex.\n\n```dart\nCustomScrollView(\n semanticChildCount: 5,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n if (index.isEven) {\n return Text('...');\n }\n return Spacer();\n },\n semanticIndexCallback: (Widget widget, int localIndex) {\n if (localIndex.isEven) {\n return localIndex ~/ 2;\n }\n return null;\n },\n childCount: 10,\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.\n * [IndexedSemantics], for an example of manually annotating child nodes\n with semantic indexes.", "detail": "", "kind": 7, "label": "SliverChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelScrollView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which children on a wheel can be scrolled.\n\nThis widget is similar to a [ListView] but with the restriction that all\nchildren must be the same size along the scrolling axis.\n\nWhen the list is at the zero scroll offset, the first child is aligned with\nthe middle of the viewport. When the list is at the final scroll offset,\nthe last child is aligned with the middle of the viewport\n\nThe children are rendered as if rotating on a wheel instead of scrolling on\na plane.", "detail": "", "kind": 7, "label": "ListWheelScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTabScaffold", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements a tabbed iOS application's root layout and behavior structure.\n\nThe scaffold lays out the tab bar at the bottom and the content between or\nbehind the tab bar.\n\nA [tabBar] and a [tabBuilder] are required. The [CupertinoTabScaffold]\nwill automatically listen to the provided [CupertinoTabBar]'s tap callbacks\nto change the active tab.\n\nTabs' contents are built with the provided [tabBuilder] at the active\ntab index. The [tabBuilder] must be able to build the same number of\npages as there are [tabBar.items]. Inactive tabs will be moved [Offstage]\nand their animations disabled.\n\nUse [CupertinoTabView] as the root widget of each tab to support tabs with\nparallel navigation state and history. Since each [CupertinoTabView] contains\na [Navigator], rebuilding the [CupertinoTabView] with a different\n[WidgetBuilder] instance in [CupertinoTabView.builder] will not recreate\nthe [CupertinoTabView]'s navigation stack or update its UI. To update the\ncontents of the [CupertinoTabView] after it's built, trigger a rebuild\n(via [State.setState], for instance) from its descendant rather than from\nits ancestor.\n\n\nA sample code implementing a typical iOS information architecture with tabs.\n\n```dart\nCupertinoTabScaffold(\n tabBar: CupertinoTabBar(\n items: <BottomNavigationBarItem> [\n // ...\n ],\n ),\n tabBuilder: (BuildContext context, int index) {\n return CupertinoTabView(\n builder: (BuildContext context) {\n return CupertinoPageScaffold(\n navigationBar: CupertinoNavigationBar(\n middle: Text('Page 1 of tab $index'),\n ),\n child: Center(\n child: CupertinoButton(\n child: const Text('Next page'),\n onPressed: () {\n Navigator.of(context).push(\n CupertinoPageRoute<void>(\n builder: (BuildContext context) {\n return CupertinoPageScaffold(\n navigationBar: CupertinoNavigationBar(\n middle: Text('Page 2 of tab $index'),\n ),\n child: Center(\n child: CupertinoButton(\n child: const Text('Back'),\n onPressed: () { Navigator.of(context).pop(); },\n ),\n ),\n );\n },\n ),\n );\n },\n ),\n ),\n );\n },\n );\n },\n)\n```\n\nTo push a route above all tabs instead of inside the currently selected one\n(such as when showing a dialog on top of this scaffold), use\n`Navigator.of(rootNavigator: true)` from inside the [BuildContext] of a\n[CupertinoTabView].\n\nSee also:\n\n * [CupertinoTabBar], the bottom tab bar inserted in the scaffold.\n * [CupertinoTabView], the typical root content of each tab that holds its own\n [Navigator] stack.\n * [CupertinoPageRoute], a route hosting modal pages with iOS style transitions.\n * [CupertinoPageScaffold], typical contents of an iOS modal page implementing\n layout with a navigation bar on top.", "detail": "", "kind": 7, "label": "CupertinoTabScaffold" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedContainer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container that gradually changes its values over a period of time.\n\nThe [AnimatedContainer] will automatically animate between the old and\nnew values of properties when they change using the provided curve and\nduration. Properties that are null are not animated. Its child and\ndescendants are not animated.\n\nThis class is useful for generating simple implicit transitions between\ndifferent parameters to [Container] with its internal [AnimationController].\nFor more complex animations, you'll likely want to use a subclass of\n[AnimatedWidget] such as the [DecoratedBoxTransition] or use your own\n[AnimationController].\n\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPadding], which is a subset of this widget that only\n supports animating the [padding].\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.\n * [AnimatedSwitcher], which switches out a child for a new one with a customizable transition.\n * [AnimatedCrossFade], which fades between two children and interpolates their sizes.", "detail": "", "kind": 7, "label": "AnimatedContainer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollNotification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has not changed its scroll position\nbecause the change would have caused its scroll position to go outside of\nits scroll bounds.\n\nSee also:\n\n * [ScrollUpdateNotification], which indicates that a [Scrollable] widget\n has changed its scroll position.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "OverscrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A utility class for defining one-off page routes in terms of callbacks.\n\nCallers must define the [pageBuilder] function which creates the route's\nprimary contents. To add transitions define the [transitionsBuilder] function.", "detail": "", "kind": 7, "label": "PageRouteBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTheme", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a visual styling theme to descendant Cupertino widgets.\n\nAffects the color and text styles of Cupertino widgets whose styling\nare not overridden when constructing the respective widgets instances.\n\nDescendant widgets can retrieve the current [CupertinoThemeData] by calling\n[CupertinoTheme.of]. An [InheritedWidget] dependency is created when\nan ancestor [CupertinoThemeData] is retrieved via [CupertinoTheme.of].\n\nThe [CupertinoTheme] widget implies an [IconTheme] widget, whose\n[IconTheme.data] has the same color as [CupertinoThemeData.primaryColor]\n\nSee also:\n\n * [CupertinoThemeData], specifies the theme's visual styling.\n * [CupertinoApp], which will automatically add a [CupertinoTheme].\n * [Theme], a Material theme which will automatically add a [CupertinoTheme]\n with a [CupertinoThemeData] derived from the Material [ThemeData].", "detail": "", "kind": 7, "label": "CupertinoTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteSettings", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data that might be useful in constructing a [Route].", "detail": "", "kind": 7, "label": "RouteSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box with a specified size.\n\nIf given a child, this widget forces its child to have a specific width\nand/or height (assuming values are permitted by this widget's parent). If\neither the width or height is null, this widget will size itself to match\nthe child's size in that dimension.\n\nIf not given a child, this widget will size itself to the given width and\nheight, treating nulls as zero.\n\nThe [new SizedBox.expand] constructor can be used to make a [SizedBox] that\nsizes itself to fit the parent. It is equivalent to setting [width] and\n[height] to [double.infinity].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) have the\nexact size 200x300, parental constraints permitting:\n\n```dart\nSizedBox(\n width: 200.0,\n height: 300.0,\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nSee also:\n\n * [ConstrainedBox], a more generic version of this class that takes\n arbitrary [BoxConstraints] instead of an explicit width and height.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [FractionallySizedBox], a widget that sizes its child to a fraction of\n the total available space.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherTransitionBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom transitions for\n[AnimatedSwitcher].\n\nThe `child` should be transitioning in when the `animation` is running in\nthe forward direction.\n\nThe function should return a widget which wraps the given `child`. It may\nalso use the `animation` to inform its transition. It must not return null.", "detail": "(Widget child, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedSwitcherTransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].\n\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositioned", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which automatically transitions the child's\nposition over a given duration whenever the given position changes.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositioned] will trigger a relayout\nas well.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositionedDirectional], which adapts to the ambient\n [Directionality] (the same as this widget, but for animating\n [PositionedDirectional]).", "detail": "", "kind": 7, "label": "AnimatedPositioned" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Container", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience widget that combines common painting, positioning, and sizing\nwidgets.\n\nA container first surrounds the child with [padding] (inflated by any\nborders present in the [decoration]) and then applies additional\n[constraints] to the padded extent (incorporating the `width` and `height`\nas constraints, if either is non-null). The container is then surrounded by\nadditional empty space described from the [margin].\n\nDuring painting, the container first applies the given [transform], then\npaints the [decoration] to fill the padded extent, then it paints the child,\nand finally paints the [foregroundDecoration], also filling the padded\nextent.\n\nContainers with no children try to be as big as possible unless the incoming\nconstraints are unbounded, in which case they try to be as small as\npossible. Containers with children size themselves to their children. The\n`width`, `height`, and [constraints] arguments to the constructor override\nthis.\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nSince [Container] combines a number of other widgets each with their own\nlayout behavior, [Container]'s layout behavior is somewhat complicated.\n\nSummary: [Container] tries, in order: to honor [alignment], to size itself\nto the [child], to honor the `width`, `height`, and [constraints], to expand\nto fit the parent, to be as small as possible.\n\nMore specifically:\n\nIf the widget has no child, no `height`, no `width`, no [constraints],\nand the parent provides unbounded constraints, then [Container] tries to\nsize as small as possible.\n\nIf the widget has no child and no [alignment], but a `height`, `width`, or\n[constraints] are provided, then the [Container] tries to be as small as\npossible given the combination of those constraints and the parent's\nconstraints.\n\nIf the widget has no child, no `height`, no `width`, no [constraints], and\nno [alignment], but the parent provides bounded constraints, then\n[Container] expands to fit the constraints provided by the parent.\n\nIf the widget has an [alignment], and the parent provides unbounded\nconstraints, then the [Container] tries to size itself around the child.\n\nIf the widget has an [alignment], and the parent provides bounded\nconstraints, then the [Container] tries to expand to fit the parent, and\nthen positions the child within itself as per the [alignment].\n\nOtherwise, the widget has a [child] but no `height`, no `width`, no\n[constraints], and no [alignment], and the [Container] passes the\nconstraints from the parent to the child and sizes itself to match the\nchild.\n\nThe [margin] and [padding] properties also affect the layout, as described\nin the documentation for those properties. (Their effects merely augment the\nrules described above.) The [decoration] can implicitly increase the\n[padding] (e.g. borders in a [BoxDecoration] contribute to the [padding]);\nsee [Decoration.padding].\n\nThis example shows a 48x48 amber square (placed inside a [Center] widget in\ncase the parent widget has its own opinions regarding the size that the\n[Container] should take), with a margin so that it stays away from\nneighboring widgets:\n\n![An amber colored container with the dimensions of 48 square pixels.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_a.png)\n\n```dart\nCenter(\n child: Container(\n margin: const EdgeInsets.all(10.0),\n color: Colors.amber[600],\n width: 48.0,\n height: 48.0,\n ),\n)\n```\n\n\nThis example shows how to use many of the features of [Container] at once.\nThe [constraints] are set to fit the font size plus ample headroom\nvertically, while expanding horizontally to fit the parent. The [padding] is\nused to make sure there is space between the contents and the text. The\n[color] makes the box blue. The [alignment] causes the [child] to be\ncentered in the box. Finally, the [transform] applies a slight rotation to the\nentire contraption to complete the effect.\n\n![A blue rectangular container with 'Hello World' in the center, rotated\nslightly in the z axis.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_b.png)\n\n```dart\nContainer(\n constraints: BoxConstraints.expand(\n height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,\n ),\n padding: const EdgeInsets.all(8.0),\n color: Colors.blue[600],\n alignment: Alignment.center,\n child: Text('Hello World',\n style: Theme.of(context)\n .textTheme\n .display1\n .copyWith(color: Colors.white)),\n transform: Matrix4.rotationZ(0.1),\n)\n```\n\nSee also:\n\n * [AnimatedContainer], a variant that smoothly animates the properties when\n they change.\n * [Border], which has a sample which uses [Container] heavily.\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Container" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\n[Scrollable] implements the interaction model for a scrollable widget,\nincluding gesture recognition, but does not have an opinion about how the\nviewport, which actually displays the children, is constructed.\n\nIt's rare to construct a [Scrollable] directly. Instead, consider [ListView]\nor [GridView], which combine scrolling, viewporting, and a layout model. To\ncombine layout models (or to use a custom layout mode), consider using\n[CustomScrollView].\n\nThe static [Scrollable.of] and [Scrollable.ensureVisible] functions are\noften used to interact with the [Scrollable] widget inside a [ListView] or\na [GridView].\n\nTo further customize scrolling behavior with a [Scrollable]:\n\n1. You can provide a [viewportBuilder] to customize the child model. For\n example, [SingleChildScrollView] uses a viewport that displays a single\n box child whereas [CustomScrollView] uses a [Viewport] or a\n [ShrinkWrappingViewport], both of which display a list of slivers.\n\n2. You can provide a custom [ScrollController] that creates a custom\n [ScrollPosition] subclass. For example, [PageView] uses a\n [PageController], which creates a page-oriented scroll position subclass\n that keeps the same page visible when the [Scrollable] resizes.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "Scrollable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Border]s.\n\nThis class specializes the interpolation of [Tween<Border>] to use\n[Border.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsets]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsets>] to use\n[EdgeInsets.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsGeometryTween], which interpolates between two\n [EdgeInsetsGeometry] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryWithHandlers", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers that delegates to callbacks.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactoryWithHandlers" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstrainedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes additional constraints on its child.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[constraints].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) fill the\nparent, by applying [BoxConstraints.expand] constraints:\n\n```dart\nConstrainedBox(\n constraints: const BoxConstraints.expand(),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nThe same behavior can be obtained using the [new SizedBox.expand] widget.\n\nSee also:\n\n * [BoxConstraints], the class that describes constraints.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "ConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListRemovedItemBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedListState.removeItem].", "detail": "(BuildContext context, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListRemovedItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBody", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that arranges its children sequentially along a given axis, forcing\nthem to the dimension of the parent in the other axis.\n\nThis widget is rarely used directly. Instead, consider using [ListView],\nwhich combines a similar layout algorithm with scrolling behavior, or\n[Column], which gives you more flexible control over the layout of a\nvertical set of boxes.\n\nSee also:\n\n * [RenderListBody], which implements this layout algorithm and the\n documentation for which describes some of its subtleties.\n * [SingleChildScrollView], which is sometimes used with [ListBody] to\n make the contents scrollable.\n * [Column] and [Row], which implement a more elaborate version of\n this layout algorithm (at the cost of being slightly less efficient).\n * [ListView], which implements an efficient scrolling version of this\n layout algorithm.", "detail": "", "kind": 7, "label": "ListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoApp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An application that uses Cupertino design.\n\nA convenience widget that wraps a number of widgets that are commonly\nrequired for an iOS-design targeting application. It builds upon a\n[WidgetsApp] by iOS specific defaulting such as fonts and scrolling\nphysics.\n\nThe [CupertinoApp] configures the top-level [Navigator] to search for routes\nin the following order:\n\n 1. For the `/` route, the [home] property, if non-null, is used.\n\n 2. Otherwise, the [routes] table is used, if it has an entry for the route.\n\n 3. Otherwise, [onGenerateRoute] is called, if provided. It should return a\n non-null value for any _valid_ route not handled by [home] and [routes].\n\n 4. Finally if all else fails [onUnknownRoute] is called.\n\nIf [home], [routes], [onGenerateRoute], and [onUnknownRoute] are all null,\nand [builder] is not null, then no [Navigator] is created.\n\nThis widget also configures the observer of the top-level [Navigator] (if\nany) to perform [Hero] animations.\n\nUse this widget with caution on Android since it may produce behaviors\nAndroid users are not expecting such as:\n\n * Pages will be dismissible via a back swipe.\n * Scrolling past extremities will trigger iOS-style spring overscrolls.\n * The San Francisco font family is unavailable on Android and can result\n in undefined font behavior.\n\nSee also:\n\n * [CupertinoPageScaffold], which provides a standard page layout default\n with nav bars.\n * [Navigator], which is used to manage the app's stack of pages.\n * [CupertinoPageRoute], which defines an app page that transitions in an\n iOS-specific way.\n * [WidgetsApp], which defines the basic app elements but does not depend\n on the Cupertino library.", "detail": "", "kind": 7, "label": "CupertinoApp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomMultiChildLayout", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses a delegate to size and position multiple children.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.\n\n[CustomMultiChildLayout] is appropriate when there are complex relationships\nbetween the size and positioning of a multiple widgets. To control the\nlayout of a single child, [CustomSingleChildLayout] is more appropriate. For\nsimple cases, such as aligning a widget to one or another edge, the [Stack]\nwidget is more appropriate.\n\nEach child must be wrapped in a [LayoutId] widget to identify the widget for\nthe delegate.\n\nSee also:\n\n * [MultiChildLayoutDelegate], for details about how to control the layout of\n the children.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Stack], which arranges children relative to the edges of the container.\n * [Flow], which provides paint-time control of its children using transform\n matrices.", "detail": "", "kind": 7, "label": "CustomMultiChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSliverNavigationBar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled navigation bar with iOS-11-style large titles using slivers.\n\nThe [CupertinoSliverNavigationBar] must be placed in a sliver group such\nas the [CustomScrollView].\n\nThis navigation bar consists of two sections, a pinned static section on top\nand a sliding section containing iOS-11-style large title below it.\n\nIt should be placed at top of the screen and automatically accounts for\nthe iOS status bar.\n\nMinimally, a [largeTitle] widget will appear in the middle of the app bar\nwhen the sliver is collapsed and transfer to the area below in larger font\nwhen the sliver is expanded.\n\nFor advanced uses, an optional [middle] widget can be supplied to show a\ndifferent widget in the middle of the navigation bar when the sliver is collapsed.\n\nLike [CupertinoNavigationBar], it also supports a [leading] and [trailing]\nwidget on the static section on top that remains while scrolling.\n\nThe [leading] widget will automatically be a back chevron icon button (or a\nclose button in case of a fullscreen dialog) to pop the current route if none\nis provided and [automaticallyImplyLeading] is true (true by default).\n\nThe [largeTitle] widget will automatically be a title text from the current\n[CupertinoPageRoute] if none is provided and [automaticallyImplyTitle] is\ntrue (true by default).\n\nWhen [transitionBetweenRoutes] is true, this navigation bar will transition\non top of the routes instead of inside them if the route being transitioned\nto also has a [CupertinoNavigationBar] or a [CupertinoSliverNavigationBar]\nwith [transitionBetweenRoutes] set to true. If [transitionBetweenRoutes] is\ntrue, none of the [Widget] parameters can contain any [GlobalKey]s in their\nsubtrees since those widgets will exist in multiple places in the tree\nsimultaneously.\n\nBy default, only one [CupertinoNavigationBar] or [CupertinoSliverNavigationBar]\nshould be present in each [PageRoute] to support the default transitions.\nUse [transitionBetweenRoutes] or [heroTag] to customize the transition\nbehavior for multiple navigation bars per route.\n\nSee also:\n\n * [CupertinoNavigationBar], an iOS navigation bar for use on non-scrolling\n pages.", "detail": "", "kind": 7, "label": "CupertinoSliverNavigationBar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An entry in the history of a [LocalHistoryRoute].", "detail": "", "kind": 7, "label": "LocalHistoryEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTabView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single tab view with its own [Navigator] state and history.\n\nA typical tab view used as the content of each tab in a [CupertinoTabScaffold]\nwhere multiple tabs with parallel navigation states and history can\nco-exist.\n\n[CupertinoTabView] configures the top-level [Navigator] to search for routes\nin the following order:\n\n 1. For the `/` route, the [builder] property, if non-null, is used.\n\n 2. Otherwise, the [routes] table is used, if it has an entry for the route,\n including `/` if [builder] is not specified.\n\n 3. Otherwise, [onGenerateRoute] is called, if provided. It should return a\n non-null value for any _valid_ route not handled by [builder] and [routes].\n\n 4. Finally if all else fails [onUnknownRoute] is called.\n\nThese navigation properties are not shared with any sibling [CupertinoTabView]\nnor any ancestor or descendant [Navigator] instances.\n\nTo push a route above this [CupertinoTabView] instead of inside it (such\nas when showing a dialog on top of all tabs), use\n`Navigator.of(rootNavigator: true)`.\n\nSee also:\n\n * [CupertinoTabScaffold], a typical host that supports switching between tabs.\n * [CupertinoPageRoute], a typical modal page route pushed onto the\n [CupertinoTabView]'s [Navigator].", "detail": "", "kind": 7, "label": "CupertinoTabView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRoute", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that replaces the entire screen.", "detail": "", "kind": 7, "label": "PageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of an [Overlay].\n\nUsed to insert [OverlayEntry]s into the overlay using the [insert] and\n[insertAll] functions.", "detail": "", "kind": 7, "label": "OverlayState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultWidgetsLocalizations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "US English localizations for the widgets library.\n\nSee also:\n\n * [GlobalWidgetsLocalizations], which provides widgets localizations for\n many languages.\n * [WidgetsApp.delegates], which automatically includes\n [DefaultWidgetsLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultWidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RepaintBoundary", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that creates a separate display list for its child.\n\nThis widget creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree.\n\nThis is useful since [RenderObject.paint] may be triggered even if its\nassociated [Widget] instances did not change or rebuild. A [RenderObject]\nwill repaint whenever any [RenderObject] that shares the same [Layer] is\nmarked as being dirty and needing paint (see [RenderObject.markNeedsPaint]),\nsuch as when an ancestor scrolls or when an ancestor or descendant animates.\n\nContaining [RenderObject.paint] to parts of the render subtree that are\nactually visually changing using [RepaintBoundary] explicitly or implicitly\nis therefore critical to minimizing redundant work and improving the app's\nperformance.\n\nWhen a [RenderObject] is flagged as needing to paint via\n[RenderObject.markNeedsPaint], the nearest ancestor [RenderObject] with\n[RenderObject.isRepaintBoundary], up to possibly the root of the application,\nis requested to repaint. That nearest ancestor's [RenderObject.paint] method\nwill cause _all_ of its descendant [RenderObject]s to repaint in the same\nlayer.\n\n[RepaintBoundary] is therefore used, both while propagating the\n`markNeedsPaint` flag up the render tree and while traversing down the\nrender tree via [RenderObject.paintChild], to strategically contain repaints\nto the render subtree that visually changed for performance. This is done\nbecause the [RepaintBoundary] widget creates a [RenderObject] that always\nhas a [Layer], decoupling ancestor render objects from the descendant\nrender objects.\n\n[RepaintBoundary] has the further side-effect of possibly hinting to the\nengine that it should further optimize animation performance if the render\nsubtree behind the [RepaintBoundary] is sufficiently complex and is static\nwhile the surrounding tree changes frequently. In those cases, the engine\nmay choose to pay a one time cost of rasterizing and caching the pixel\nvalues of the subtree for faster future GPU re-rendering speed.\n\nSeveral framework widgets insert [RepaintBoundary] widgets to mark natural\nseparation points in applications. For instance, contents in Material Design\ndrawers typically don't change while the drawer opens and closes, so\nrepaints are automatically contained to regions inside or outside the drawer\nwhen using the [Drawer] widget during transitions.\n\nSee also:\n\n * [debugRepaintRainbowEnabled], a debugging flag to help visually monitor\n render tree repaints in a running app.\n * [debugProfilePaintsEnabled], a debugging flag to show render tree\n repaints in the observatory's timeline view.", "detail": "", "kind": 7, "label": "RepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RootRenderObjectElement", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The element at the root of the tree.\n\nOnly root elements may have their owner set explicitly. All other\nelements inherit their owner from their parent.", "detail": "", "kind": 7, "label": "RootRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectWidget", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single child slot. (This superclass only provides the storage\nfor that child, it doesn't actually provide the updating logic.)", "detail": "", "kind": 7, "label": "SingleChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportNotificationMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mixin for [Notification]s that track how many [RenderAbstractViewport] they\nhave bubbled through.\n\nThis is used by [ScrollNotification] and [OverscrollIndicatorNotification].", "detail": "", "kind": 7, "label": "ViewportNotificationMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsProperties", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties used by assistive technologies to make the application\nmore accessible.\n\nThe properties of this class are used to generate a [SemanticsNode]s in the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsProperties" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsOwner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Owns [SemanticsNode] objects and notifies listeners of changes to the\nrender tree semantics.\n\nTo listen for semantic updates, call [PipelineOwner.ensureSemantics] to\nobtain a [SemanticsHandle]. This will create a [SemanticsOwner] if\nnecessary.", "detail": "", "kind": 7, "label": "SemanticsOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsService", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows access to the platform's accessibility services.\n\nEvents sent by this service are handled by the platform-specific\naccessibility bridge in Flutter's engine.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "SemanticsService" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the semantics layer and the Flutter engine.", "detail": "", "kind": 7, "label": "SemanticsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccessibilityFeatures", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Additional accessibility features that may be enabled by the platform.\n\nIt is not possible to enable these settings from Flutter, instead they are\nused by the platform to indicate that additional accessibility features are\nenabled.", "detail": "", "kind": 7, "label": "AccessibilityFeatures" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Summary information about a [SemanticsNode] object.\n\nA semantics node might [SemanticsNode.mergeAllDescendantsIntoThisNode],\nwhich means the individual fields on the semantics node don't fully describe\nthe semantics at that node. This data structure contains the full semantics\nfor the node.\n\nTypically obtained from [SemanticsNode.getSemanticsData].", "detail": "", "kind": 7, "label": "SemanticsData" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MoveCursorHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [SemanticsAction]s that move the cursor.\n\nIf `extendSelection` is set to true the cursor movement should extend the\ncurrent selection or (if nothing is currently selected) start a selection.", "detail": "(bool extendSelection) → void", "kind": 7, "label": "MoveCursorHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsSortKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for all sort keys for [Semantics] accessibility traversal order\nsorting.\n\nOnly keys of the same type and having matching [name]s are compared. If a\nlist of sibling [SemanticsNode]s contains keys that are not comparable with\neach other the list is first sorted using the default sorting algorithm.\nThen the nodes are broken down into groups by moving comparable nodes\ntowards the _earliest_ node in the group. Finally each group is sorted by\nsort key and the resulting list is made by concatenating the sorted groups\nback.\n\nFor example, let's take nodes (C, D, B, E, A, F). Let's assign node A key 1,\nnode B key 2, node C key 3. Let's also assume that the default sort order\nleaves the original list intact. Because nodes A, B, and C, have comparable\nsort key, they will form a group by pulling all nodes towards the earliest\nnode, which is C. The result is group (C, B, A). The remaining nodes D, E,\nF, form a second group with sort key being `null`. The first group is sorted\nusing their sort keys becoming (A, B, C). The second group is left as is\nbecause it does not specify sort keys. Then we concatenate the two groups -\n(A, B, C) and (D, E, F) - into the final (A, B, C, D, E, F).\n\nBecause of the complexity introduced by incomparable sort keys among sibling\nnodes, it is recommended to either use comparable keys for all nodes, or\nuse null for all of them, leaving the sort order to the default algorithm.\n\nSee Also:\n\n * [OrdinalSortKey] for a sort key that sorts using an ordinal.", "detail": "", "kind": 7, "label": "SemanticsSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugSemanticsDumpOrder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Used by [debugDumpSemanticsTree] to specify the order in which child nodes\nare printed.", "detail": "", "kind": 13, "label": "DebugSemanticsDumpOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetSelectionHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [SemanticsAction.setSelection] handlers to change the\ntext selection (or re-position the cursor) to `selection`.", "detail": "(TextSelection selection) → void", "kind": 7, "label": "SetSelectionHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressSemanticsEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers long press semantic feedback.\n\nCurrently only honored on Android. Triggers a long-press specific sound\nwhen TalkBack is enabled.", "detail": "", "kind": 7, "label": "LongPressSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the semantic information associated with the owning\n[RenderObject].\n\nThe information provided in the configuration is used to generate the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The possible actions that can be conveyed from the operating system\naccessibility APIs to a semantics node.", "detail": "", "kind": 7, "label": "SemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapSemanticEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers tap semantic feedback.\n\nCurrently only honored on Android. Triggers a tap specific sound when\nTalkBack is enabled.", "detail": "", "kind": 7, "label": "TapSemanticEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnounceSemanticsEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement.\n\nThis should be used for announcement that are not seamlessly announced by\nthe system as a result of a UI state change.\n\nFor example a camera application can use this method to make accessibility\nannouncements regarding objects in the viewfinder.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "AnnounceSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TooltipSemanticsEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement of a tooltip.\n\nThis is only used by Android to announce tooltip values.", "detail": "", "kind": 7, "label": "TooltipSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSemanticsAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier of a custom semantics action.\n\nCustom semantics actions can be provided to make complex user\ninteractions more accessible. For instance, if an application has a\ndrag-and-drop list that requires the user to press and hold an item\nto move it, users interacting with the application using a hardware\nswitch may have difficulty. This can be made accessible by creating custom\nactions and pairing them with handlers that move a list item up or down in\nthe list.\n\nIn Android, these actions are presented in the local context menu. In iOS,\nthese are presented in the radial context menu.\n\nLocalization and text direction do not automatically apply to the provided\nlabel or hint.\n\nInstances of this class should either be instantiated with const or\nnew instances cached in static fields.\n\nSee also:\n\n * [SemanticsProperties], where the handler for a custom action is provided.", "detail": "", "kind": 7, "label": "CustomSemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsTag", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tag for a [SemanticsNode].\n\nTags can be interpreted by the parent of a [SemanticsNode]\nand depending on the presence of a tag the parent can for example decide\nhow to add the tagged node as a child. Tags are not sent to the engine.\n\nAs an example, the [RenderSemanticsGestureHandler] uses tags to determine\nif a child node should be excluded from the scrollable area for semantic\npurposes.\n\nThe provided [name] is only used for debugging. Two tags created with the\nsame [name] and the `new` operator are not considered identical. However,\ntwo tags created with the same [name] and the `const` operator are always\nidentical.", "detail": "", "kind": 7, "label": "SemanticsTag" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event sent by the application to notify interested listeners that\nsomething happened to the user interface (e.g. a view scrolled).\n\nThese events are usually interpreted by assistive technologies to give the\nuser additional clues about the current state of the UI.", "detail": "", "kind": 7, "label": "SemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UpdateLiveRegionEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers a polite announcement of a live region.\n\nThis requires that the semantics node has already been marked as a live\nregion. On Android, TalkBack will make a verbal announcement, as long as\nthe label of the semantics node has changed since the last live region\nupdate. iOS does not currently support this event.\n\nSee also:\n\n * [SemanticsFlag.liveRegion], for a description of live regions.", "detail": "", "kind": 7, "label": "UpdateLiveRegionEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrdinalSortKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [SemanticsSortKey] that sorts simply based on the `double` value it is\ngiven.\n\nThe [OrdinalSortKey] compares itself with other [OrdinalSortKey]s\nto sort based on the order it is given.\n\nThe ordinal value `order` is typically a whole number, though it can be\nfractional, e.g. in order to fit between two other consecutive whole\nnumbers. The value must be finite (it cannot be [double.nan],\n[double.infinity], or [double.negativeInfinity]).", "detail": "", "kind": 7, "label": "OrdinalSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNodeVisitor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called for each [SemanticsNode].\n\nReturn false to stop visiting nodes.\n\nUsed by [SemanticsNode.visitChildren].", "detail": "(SemanticsNode node) → bool", "kind": 7, "label": "SemanticsNodeVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A node that represents some semantic data.\n\nThe semantics tree is maintained during the semantics phase of the pipeline\n(i.e., during [PipelineOwner.flushSemantics]), which happens after\ncompositing. The semantics tree is then uploaded into the engine for use\nby assistive technology.", "detail": "", "kind": 7, "label": "SemanticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsHintOverrides", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides hint values which override the default hints on supported\nplatforms.\n\nOn iOS, these values are always ignored.", "detail": "", "kind": 7, "label": "SemanticsHintOverrides" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderCustomSingleChildLayoutBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.", "detail": "", "kind": 7, "label": "RenderCustomSingleChildLayoutBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverHelpers", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mixin for [RenderSliver] subclasses that provides some utility functions.", "detail": "", "kind": 7, "label": "RenderSliverHelpers" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIndexedSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render objects that annotates semantics with an index.\n\nCertain widgets will automatically provide a child index for building\nsemantics. For example, the [ScrollView] uses the index of the first\nvisible child semantics node to determine the\n[SemanticsConfiguration.scrollIndex].\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.", "detail": "", "kind": 7, "label": "RenderIndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFollowerLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transform the child so that its origin is [offset] from the origin of the\n[RenderLeaderLayer] with the same [LayerLink].\n\nThe [RenderLeaderLayer] in question must be earlier in the paint order.\n\nHit testing on descendants of this render object will only work if the\ntarget position is within the box that this render object's parent considers\nto be hittable.\n\nSee also:\n\n * [CompositedTransformFollower], the corresponding widget.\n * [FollowerLayer], the layer that this render object creates.", "detail": "", "kind": 7, "label": "RenderFollowerLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPhysicalModel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a physical model layer that clips its child to a rounded\nrectangle.\n\nA physical model layer casts a shadow based on its [elevation].", "detail": "", "kind": 7, "label": "RenderPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPerformanceOverlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay shows two time series. The first shows how much time was\nrequired on this thread to produce each frame. The second shows how much\ntime was required on the GPU thread to produce each frame. Ideally, both\nthese values would be less than the total frame budget for the hardware on\nwhich the app is running. For example, if the hardware has a screen that\nupdates at 60 Hz, each thread should ideally spend less than 16ms producing\neach frame. This ideal condition is indicated by a green vertical line for\neach thread. Otherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "RenderPerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBaseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child.\n\nIf [baseline] is less than the distance from the top of the child\nto the baseline of the child, then the child will overflow the top\nof the box. This is typically not desirable, in particular, that\npart of the child will not be found when doing hit tests, so the\nuser cannot interact with that part of the child.\n\nThis box will be sized so that its bottom is coincident with the\nbottom of the child. This means if this box shifts the child down,\nthere will be space between the top of this box and the top of the\nchild, but there is never space between the bottom of the child\nand the bottom of the box.", "detail": "", "kind": 7, "label": "RenderBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The possible actions that can be conveyed from the operating system\naccessibility APIs to a semantics node.", "detail": "", "kind": 7, "label": "SemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverHitTestEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A hit test entry used by [RenderSliver].\n\nThe coordinate system used by this hit test entry is relative to the\n[AxisDirection] of the target sliver.", "detail": "", "kind": 7, "label": "SliverHitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsTag", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tag for a [SemanticsNode].\n\nTags can be interpreted by the parent of a [SemanticsNode]\nand depending on the presence of a tag the parent can for example decide\nhow to add the tagged node as a child. Tags are not sent to the engine.\n\nAs an example, the [RenderSemanticsGestureHandler] uses tags to determine\nif a child node should be excluded from the scrollable area for semantic\npurposes.\n\nThe provided [name] is only used for debugging. Two tags created with the\nsame [name] and the `new` operator are not considered identical. However,\ntwo tags created with the same [name] and the `const` operator are always\nidentical.", "detail": "", "kind": 7, "label": "SemanticsTag" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderProxyBoxMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implementation of [RenderProxyBox].\n\nUse this mixin in situations where the proxying behavior\nof [RenderProxyBox] is desired but inheriting from [RenderProxyBox] is\nimpractical (e.g. because you want to mix in other classes as well).", "detail": "", "kind": 7, "label": "RenderProxyBoxMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderListWheelViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Render, onto a wheel, a bigger sequential set of objects inside this viewport.\n\nTakes a scrollable set of fixed sized [RenderBox]es and renders them\nsequentially from top down on a vertical scrolling axis.\n\nIt starts with the first scrollable item in the center of the main axis\nand ends with the last scrollable item in the center of the main axis. This\nis in contrast to typical lists that start with the first scrollable item\nat the start of the main axis and ends with the last scrollable item at the\nend of the main axis.\n\nInstead of rendering its children on a flat plane, it renders them\nas if each child is broken into its own plane and that plane is\nperpendicularly fixed onto a cylinder which rotates along the scrolling\naxis.\n\nThis class works in 3 coordinate systems:\n\n1. The **scrollable layout coordinates**. This coordinate system is used to\n communicate with [ViewportOffset] and describes its children's abstract\n offset from the beginning of the scrollable list at (0.0, 0.0).\n\n The list is scrollable from the start of the first child item to the\n start of the last child item.\n\n Children's layout coordinates don't change as the viewport scrolls.\n\n2. The **untransformed plane's viewport painting coordinates**. Children are\n not painted in this coordinate system. It's an abstract intermediary used\n before transforming into the next cylindrical coordinate system.\n\n This system is the **scrollable layout coordinates** translated by the\n scroll offset such that (0.0, 0.0) is the top left corner of the\n viewport.\n\n Because the viewport is centered at the scrollable list's scroll offset\n instead of starting at the scroll offset, there are paintable children\n ~1/2 viewport length before and after the scroll offset instead of ~1\n viewport length after the scroll offset.\n\n Children's visibility inclusion in the viewport is determined in this\n system regardless of the cylinder's properties such as [diameterRatio]\n or [perspective]. In other words, a 100px long viewport will always\n paint 10-11 visible 10px children if there are enough children in the\n viewport.\n\n3. The **transformed cylindrical space viewport painting coordinates**.\n Children from system 2 get their positions transformed into a cylindrical\n projection matrix instead of its Cartesian offset with respect to the\n scroll offset.\n\n Children in this coordinate system are painted.\n\n The wheel's size and the maximum and minimum visible angles are both\n controlled by [diameterRatio]. Children visible in the **untransformed\n plane's viewport painting coordinates**'s viewport will be radially\n evenly laid out between the maximum and minimum angles determined by\n intersecting the viewport's main axis length with a cylinder whose\n diameter is [diameterRatio] times longer, as long as those angles are\n between -pi/2 and pi/2.\n\n For example, if [diameterRatio] is 2.0 and this [RenderListWheelViewport]\n is 100.0px in the main axis, then the diameter is 200.0. And children\n will be evenly laid out between that cylinder's -arcsin(1/2) and\n arcsin(1/2) angles.\n\n The cylinder's 0 degree side is always centered in the\n [RenderListWheelViewport]. The transformation from **untransformed\n plane's viewport painting coordinates** is also done such that the child\n in the center of that plane will be mostly untransformed with children\n above and below it being transformed more as the angle increases.", "detail": "", "kind": 7, "label": "RenderListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverToBoxAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RenderSliver] that contains a single [RenderBox].\n\nThe child will not be laid out if it is not visible. It is sized according\nto the child's preferences in the main axis, and with a tight constraint\nforcing it to the dimensions of the viewport in the cross axis.\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderViewport], which allows [RenderSliver] objects to be placed inside\n a [RenderBox] (the opposite of this class).", "detail": "", "kind": 7, "label": "RenderSliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderRotatedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Rotates its child by a integral number of quarter turns.\n\nUnlike [RenderTransform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.", "detail": "", "kind": 7, "label": "RenderRotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnnotatedRegion", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Render object which inserts an [AnnotatedRegionLayer] into the layer tree.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer this render object creates.", "detail": "", "kind": 7, "label": "RenderAnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderStack", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements the stack layout algorithm\n\nIn a stack layout, the children are positioned on top of each other in the\norder in which they appear in the child list. First, the non-positioned\nchildren (those with null values for top, right, bottom, and left) are\nlaid out and initially placed in the upper-left corner of the stack. The\nstack is then sized to enclose all of the non-positioned children. If there\nare no non-positioned children, the stack becomes as large as possible.\n\nThe final location of non-positioned children is determined by the alignment\nparameter. The left of each non-positioned child becomes the\ndifference between the child's width and the stack's width scaled by\nalignment.x. The top of each non-positioned child is computed\nsimilarly and scaled by alignment.y. So if the alignment x and y properties\nare 0.0 (the default) then the non-positioned children remain in the\nupper-left corner. If the alignment x and y properties are 0.5 then the\nnon-positioned children are centered within the stack.\n\nNext, the positioned children are laid out. If a child has top and bottom\nvalues that are both non-null, the child is given a fixed height determined\nby subtracting the sum of the top and bottom values from the height of the stack.\nSimilarly, if the child has right and left values that are both non-null,\nthe child is given a fixed width derived from the stack's width.\nOtherwise, the child is given unbounded constraints in the non-fixed dimensions.\n\nOnce the child is laid out, the stack positions the child\naccording to the top, right, bottom, and left properties of their\n[StackParentData]. For example, if the bottom value is 10.0, the\nbottom edge of the child will be inset 10.0 pixels from the bottom\nedge of the stack. If the child extends beyond the bounds of the\nstack, the stack will clip the child's painting to the bounds of\nthe stack.\n\nSee also:\n\n * [RenderFlow]", "detail": "", "kind": 7, "label": "RenderStack" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIntrinsicWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this render object can result in a layout that is O(N²) in the\ndepth of the tree.", "detail": "", "kind": 7, "label": "RenderIntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFloatingPersistentHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which shrinks and scrolls like a\n[RenderSliverScrollingPersistentHeader], but immediately comes back when the\nuser scrolls in the reverse direction.\n\nSee also:\n\n * [RenderSliverFloatingPinnedPersistentHeader], which is similar but sticks\n to the start of the viewport rather than scrolling off.", "detail": "", "kind": 7, "label": "RenderSliverFloatingPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipRRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using a rounded rectangle.\n\nBy default, [RenderClipRRect] uses its own bounds as the base rectangle for\nthe clip, but the size and location of the clip can be customized using a\ncustom [clipper].", "detail": "", "kind": 7, "label": "RenderClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Summary information about a [SemanticsNode] object.\n\nA semantics node might [SemanticsNode.mergeAllDescendantsIntoThisNode],\nwhich means the individual fields on the semantics node don't fully describe\nthe semantics at that node. This data structure contains the full semantics\nfor the node.\n\nTypically obtained from [SemanticsNode.getSemanticsData].", "detail": "", "kind": 7, "label": "SemanticsData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderOpacity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.", "detail": "", "kind": 7, "label": "RenderOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerBoxParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Abstract ParentData subclass for RenderBox subclasses that want the\nContainerRenderObjectMixin.\n\nThis is a convenience class that mixes in the relevant classes with\nthe relevant type arguments.", "detail": "", "kind": 7, "label": "ContainerBoxParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnimatedSizeState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RenderAnimatedSize] can be in exactly one of these states.", "detail": "", "kind": 13, "label": "RenderAnimatedSizeState" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWithChildMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Generic mixin for render objects with one child.\n\nProvides a child model for a render object subclass that has a unique child.", "detail": "", "kind": 7, "label": "RenderObjectWithChildMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliver", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for the render objects that implement scroll effects in viewports.\n\nA [RenderViewport] has a list of child slivers. Each sliver — literally a\nslice of the viewport's contents — is laid out in turn, covering the\nviewport in the process. (Every sliver is laid out each time, including\nthose that have zero extent because they are \"scrolled off\" or are beyond\nthe end of the viewport.)\n\nSlivers participate in the _sliver protocol_, wherein during [layout] each\nsliver receives a [SliverConstraints] object and computes a corresponding\n[SliverGeometry] that describes where it fits in the viewport. This is\nanalogous to the box protocol used by [RenderBox], which gets a\n[BoxConstraints] as input and computes a [Size].\n\nSlivers have a leading edge, which is where the position described by\n[SliverConstraints.scrollOffset] for this sliver begins. Slivers have\nseveral dimensions, the primary of which is [SliverGeometry.paintExtent],\nwhich describes the extent of the sliver along the main axis, starting from\nthe leading edge, reaching either the end of the viewport or the end of the\nsliver, whichever comes first.\n\nSlivers can change dimensions based on the changing constraints in a\nnon-linear fashion, to achieve various scroll effects. For example, the\nvarious [RenderSliverPersistentHeader] subclasses, on which [SliverAppBar]\nis based, achieve effects such as staying visible despite the scroll offset,\nor reappearing at different offsets based on the user's scroll direction\n([SliverConstraints.userScrollDirection]).\n\n## Writing a RenderSliver subclass\n\nSlivers can have sliver children, or children from another coordinate\nsystem, typically box children. (For details on the box protocol, see\n[RenderBox].) Slivers can also have different child models, typically having\neither one child, or a list of children.\n\n### Examples of slivers\n\nA good example of a sliver with a single child that is also itself a sliver\nis [RenderSliverPadding], which indents its child. A sliver-to-sliver render\nobject such as this must construct a [SliverConstraints] object for its\nchild, then must take its child's [SliverGeometry] and use it to form its\nown [geometry].\n\nThe other common kind of one-child sliver is a sliver that has a single\n[RenderBox] child. An example of that would be [RenderSliverToBoxAdapter],\nwhich lays out a single box and sizes itself around the box. Such a sliver\nmust use its [SliverConstraints] to create a [BoxConstraints] for the\nchild, lay the child out (using the child's [layout] method), and then use\nthe child's [RenderBox.size] to generate the sliver's [SliverGeometry].\n\nThe most common kind of sliver though is one with multiple children. The\nmost straight-forward example of this is [RenderSliverList], which arranges\nits children one after the other in the main axis direction. As with the\none-box-child sliver case, it uses its [constraints] to create a\n[BoxConstraints] for the children, and then it uses the aggregate\ninformation from all its children to generate its [geometry]. Unlike the\none-child cases, however, it is judicious in which children it actually lays\nout (and later paints). If the scroll offset is 1000 pixels, and it\npreviously determined that the first three children are each 400 pixels\ntall, then it will skip the first two and start the layout with its third\nchild.\n\n### Layout\n\nAs they are laid out, slivers decide their [geometry], which includes their\nsize ([SliverGeometry.paintExtent]) and the position of the next sliver\n([SliverGeometry.layoutExtent]), as well as the position of each of their\nchildren, based on the input [constraints] from the viewport such as the\nscroll offset ([SliverConstraints.scrollOffset]).\n\nFor example, a sliver that just paints a box 100 pixels high would say its\n[SliverGeometry.paintExtent] was 100 pixels when the scroll offset was zero,\nbut would say its [SliverGeometry.paintExtent] was 25 pixels when the scroll\noffset was 75 pixels, and would say it was zero when the scroll offset was\n100 pixels or more. (This is assuming that\n[SliverConstraints.remainingPaintExtent] was more than 100 pixels.)\n\nThe various dimensions that are provided as input to this system are in the\n[constraints]. They are described in detail in the documentation for the\n[SliverConstraints] class.\n\nThe [performLayout] function must take these [constraints] and create a\n[SliverGeometry] object that it must then assign to the [geometry] property.\nThe different dimensions of the geometry that can be configured are\ndescribed in detail in the documentation for the [SliverGeometry] class.\n\n### Painting\n\nIn addition to implementing layout, a sliver must also implement painting.\nThis is achieved by overriding the [paint] method.\n\nThe [paint] method is called with an [Offset] from the [Canvas] origin to\nthe top-left corner of the sliver, _regardless of the axis direction_.\n\nSubclasses should also override [applyPaintTransform] to provide the\n[Matrix4] describing the position of each child relative to the sliver.\n(This is used by, among other things, the accessibility layer, to determine\nthe bounds of the child.)\n\n### Hit testing\n\nTo implement hit testing, either override the [hitTestSelf] and\n[hitTestChildren] methods, or, for more complex cases, instead override the\n[hitTest] method directly.\n\nTo actually react to pointer events, the [handleEvent] method may be\nimplemented. By default it does nothing. (Typically gestures are handled by\nwidgets in the box protocol, not by slivers directly.)\n\n### Helper methods\n\nThere are a number of methods that a sliver should implement which will make\nthe other methods easier to implement. Each method listed below has detailed\ndocumentation. In addition, the [RenderSliverHelpers] class can be used to\nmix in some helpful methods.\n\n#### childScrollOffset\n\nIf the subclass positions children anywhere other than at scroll offset\nzero, it should override [childScrollOffset]. For example,\n[RenderSliverList] and [RenderSliverGrid] override this method, but\n[RenderSliverToBoxAdapter] does not.\n\nThis is used by, among other things, [Scrollable.ensureVisible].\n\n#### childMainAxisPosition\n\nSubclasses should implement [childMainAxisPosition] to describe where their\nchildren are positioned.\n\n#### childCrossAxisPosition\n\nIf the subclass positions children in the cross-axis at a position other\nthan zero, then it should override [childCrossAxisPosition]. For example\n[RenderSliverGrid] overrides this method.", "detail": "", "kind": 7, "label": "RenderSliver" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContextCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for painting into a [PaintingContext].\n\nThe `offset` argument is the offset from the origin of the coordinate system\nof the [PaintingContext.canvas] to the coordinate system of the callee.\n\nUsed by many of the methods of [PaintingContext].", "detail": "(PaintingContext context, Offset offset) → void", "kind": 7, "label": "PaintingContextCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderOffstage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Lays the child out as if it was in the tree, but without painting anything,\nwithout making the child available for hit testing, and without taking any\nroom in the parent.", "detail": "", "kind": 7, "label": "RenderOffstage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFloatingPinnedPersistentHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which shrinks and then remains pinned to\nthe start of the viewport like a [RenderSliverPinnedPersistentHeader], but\nimmediately grows when the user scrolls in the reverse direction.\n\nSee also:\n\n * [RenderSliverFloatingPersistentHeader], which is similar but scrolls off\n the top rather than sticking to it.", "detail": "", "kind": 7, "label": "RenderSliverFloatingPinnedPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the amount of space occupied by a [RenderSliver].\n\nA sliver can occupy space in several different ways, which is why this class\ncontains multiple values.", "detail": "", "kind": 7, "label": "SliverGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSizedOverflowBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is a specific size but passes its original constraints\nthrough to its child, which it allows to overflow.\n\nIf the child's resulting size differs from this render object's size, then\nthe child is aligned according to the [alignment] property.\n\nSee also:\n\n * [RenderUnconstrainedBox] for a render object that allows its children\n to render themselves unconstrained, expands to fit them, and considers\n overflow to be an error.\n * [RenderConstrainedOverflowBox] for a render object that imposes\n different constraints on its child than it gets from its parent,\n possibly allowing the child to overflow the parent.", "detail": "", "kind": 7, "label": "RenderSizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverWithKeepAliveMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This class exists to dissociate [KeepAlive] from [RenderSliverMultiBoxAdaptor].\n\n[RenderSliverWithKeepAliveMixin.setupParentData] must be implemented to use\na parentData class that uses the right mixin or whatever is appropriate.", "detail": "", "kind": 7, "label": "RenderSliverWithKeepAliveMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnimatedOpacity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child partially transparent, driven from an [Animation].\n\nThis is a variant of [RenderOpacity] that uses an [Animation<double>] rather\nthan a [double] to control the opacity.", "detail": "", "kind": 7, "label": "RenderAnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsOwner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Owns [SemanticsNode] objects and notifies listeners of changes to the\nrender tree semantics.\n\nTo listen for semantic updates, call [PipelineOwner.ensureSemantics] to\nobtain a [SemanticsHandle]. This will create a [SemanticsOwner] if\nnecessary.", "detail": "", "kind": 7, "label": "SemanticsOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data collected during a hit test about a specific [HitTestTarget].\n\nSubclass this object to pass additional information from the hit test phase\nto the event propagation phase.", "detail": "", "kind": 7, "label": "HitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderTable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A table where the columns and rows are sized to fit the contents of the cells.", "detail": "", "kind": 7, "label": "RenderTable" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIgnorePointer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is invisible during hit testing.\n\nWhen [ignoring] is true, this render object (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because its render\nobject returns false from [hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [RenderAbsorbPointer], which takes the pointer events but prevents any\n nodes in the subtree from seeing them.", "detail": "", "kind": 7, "label": "RenderIgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image in the render tree.\n\nThe render image attempts to find a size for itself that fits in the given\nconstraints and preserves the image's intrinsic aspect ratio.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "RenderImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[ParentData] for use with [RenderListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnounceSemanticsEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement.\n\nThis should be used for announcement that are not seamlessly announced by\nthe system as a result of a UI state change.\n\nFor example a camera application can use this method to make accessibility\nannouncements regarding objects in the viewfinder.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "AnnounceSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPhysicalShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a physical shape layer that clips its child to a [Path].\n\nA physical shape layer casts a shadow based on its [elevation].\n\nSee also:\n\n * [RenderPhysicalModel], which is optimized for rounded rectangles and\n circles.", "detail": "", "kind": 7, "label": "RenderPhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrdinalSortKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [SemanticsSortKey] that sorts simply based on the `double` value it is\ngiven.\n\nThe [OrdinalSortKey] compares itself with other [OrdinalSortKey]s\nto sort based on the order it is given.\n\nThe ordinal value `order` is typically a whole number, though it can be\nfractional, e.g. in order to fit between two other consecutive whole\nnumbers. The value must be finite (it cannot be [double.nan],\n[double.infinity], or [double.negativeInfinity]).", "detail": "", "kind": 7, "label": "OrdinalSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderUiKitView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object for an iOS UIKit UIView.\n\nEmbedding UIViews is still in release preview, to enable the preview for an iOS app add a boolean\nfield with the key 'io.flutter.embedded_views_preview' and the value set to 'YES' to the\napplication's Info.plist file. A list of open issued with embedding UIViews is available on\n[Github](https://github.com/flutter/flutter/issues?q=is%3Aopen+is%3Aissue+label%3A%22a%3A+platform-views%22+label%3A%22%E2%8C%BA%E2%80%AC+platform-ios%22)\n\n[RenderUiKitView] is responsible for sizing and displaying an iOS\n[UIView](https://developer.apple.com/documentation/uikit/uiview).\n\nUIViews are added as sub views of the FlutterView and are composited by Quartz.\n\n\n\nSee also:\n\n * [UiKitView] which is a widget that is used to show a UIView.\n * [PlatformViewsService] which is a service for controlling platform views.", "detail": "", "kind": 7, "label": "RenderUiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderingFlutterBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A concrete binding for applications that use the Rendering framework\ndirectly. This is the glue that binds the framework to the Flutter engine.\n\nYou would only use this binding if you are writing to the\nrendering layer directly. If you are writing to a higher-level\nlibrary, such as the Flutter Widgets library, then you would use\nthat layer's binding.\n\nSee also [BindingBase].", "detail": "", "kind": 7, "label": "RenderingFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderRepaintBoundary", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a separate display list for its child.\n\nThis render object creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree. Specifically, when the child does not\nrepaint but its parent does, we can re-use the display list we recorded\npreviously. Similarly, when the child repaints but the surround tree does\nnot, we can re-record its display list without re-recording the display list\nfor the surround tree.\n\nIn some cases, it is necessary to place _two_ (or more) repaint boundaries\nto get a useful effect. Consider, for example, an e-mail application that\nshows an unread count and a list of e-mails. Whenever a new e-mail comes in,\nthe list would update, but so would the unread count. If only one of these\ntwo parts of the application was behind a repaint boundary, the entire\napplication would repaint each time. On the other hand, if both were behind\na repaint boundary, a new e-mail would only change those two parts of the\napplication and the rest of the application would not repaint.\n\nTo tell if a particular RenderRepaintBoundary is useful, run your\napplication in checked mode, interacting with it in typical ways, and then\ncall [debugDumpRenderTree]. Each RenderRepaintBoundary will include the\nratio of cases where the repaint boundary was useful vs the cases where it\nwas not. These counts can also be inspected programmatically using\n[debugAsymmetricPaintCount] and [debugSymmetricPaintCount] respectively.", "detail": "", "kind": 7, "label": "RenderRepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EnumProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An property than displays enum values tersely.\n\nThe enum value is displayed with the class name stripped. For example:\n[HitTestBehavior.deferToChild] is shown as `deferToChild`.\n\nSee also:\n\n * [DiagnosticsProperty] which documents named parameters common to all\n [DiagnosticsProperty].", "detail": "", "kind": 7, "label": "EnumProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAbsorbPointer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this render object prevents its subtree from\nreceiving pointer events by terminating hit testing at itself. It still\nconsumes space during layout and paints its child as usual. It just prevents\nits children from being the target of located events, because its render\nobject returns true from [hitTest].\n\nSee also:\n\n * [RenderIgnorePointer], which has the opposite effect: removing the\n subtree from considering entirely for the purposes of hit testing.", "detail": "", "kind": 7, "label": "RenderAbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MoveCursorHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [SemanticsAction]s that move the cursor.\n\nIf `extendSelection` is set to true the cursor movement should extend the\ncurrent selection or (if nothing is currently selected) start a selection.", "detail": "(bool extendSelection) → void", "kind": 7, "label": "MoveCursorHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property with a [value] of type [T].\n\nIf the default `value.toString()` does not provide an adequate description\nof the value, specify `description` defining a custom description.\n\nThe [showSeparator] property indicates whether a separator should be placed\nbetween the property [name] and its [value].", "detail": "", "kind": 7, "label": "DiagnosticsProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverLogicalParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by parents of slivers that position their\nchildren using layout offsets.\n\nThis data structure is optimized for fast layout. It is best used by parents\nthat expect to have many children whose relative positions don't change even\nwhen the scroll offset does.", "detail": "", "kind": 7, "label": "SliverLogicalParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data used by [RenderTable] for its children.", "detail": "", "kind": 7, "label": "TableCellParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderConstrainedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Imposes additional constraints on its child.\n\nA render constrained box proxies most functions in the render box protocol\nto its child, except that when laying out its child, it tightens the\nconstraints provided by its parent by enforcing the [additionalConstraints]\nas well.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[additionalConstraints].", "detail": "", "kind": 7, "label": "RenderConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[ParentData] used by [RenderCustomMultiChildLayoutBox].", "detail": "", "kind": 7, "label": "MultiChildLayoutParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderLeaderLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides an anchor for a [RenderFollowerLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the corresponding widget.\n * [LeaderLayer], the layer that this render object creates.", "detail": "", "kind": 7, "label": "RenderLeaderLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TooltipSemanticsEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement of a tooltip.\n\nThis is only used by Android to announce tooltip values.", "detail": "", "kind": 7, "label": "TooltipSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A node that represents some semantic data.\n\nThe semantics tree is maintained during the semantics phase of the pipeline\n(i.e., during [PipelineOwner.flushSemantics]), which happens after\ncompositing. The semantics tree is then uploaded into the engine for use\nby assistive technology.", "detail": "", "kind": 7, "label": "SemanticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNodeVisitor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called for each [SemanticsNode].\n\nReturn false to stop visiting nodes.\n\nUsed by [SemanticsNode.visitChildren].", "detail": "(SemanticsNode node) → bool", "kind": 7, "label": "SemanticsNodeVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewHitTestBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How an embedded platform view behave during hit tests.", "detail": "", "kind": 13, "label": "PlatformViewHitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderWrap].", "detail": "", "kind": 7, "label": "WrapParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverPinnedPersistentHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which never scrolls off the viewport in\nthe positive scroll direction, and which first scrolls on at a full size but\nthen shrinks as the viewport continues to scroll.\n\nThis sliver avoids overlapping other earlier slivers where possible.", "detail": "", "kind": 7, "label": "RenderSliverPinnedPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderProxyBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for render objects that resemble their children.\n\nA proxy box has a single child and simply mimics all the properties of that\nchild by calling through to the child for each function in the render box\nprotocol. For example, a proxy box determines its size by asking its child\nto layout with the same constraints and then matching the size.\n\nA proxy box isn't useful on its own because you might as well just replace\nthe proxy box with its child. However, RenderProxyBox is a useful base class\nfor render objects that wish to mimic most, but not all, of the properties\nof their child.", "detail": "", "kind": 7, "label": "RenderProxyBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).\n\nUsed by [RenderEditable.onSelectionChanged].", "detail": "(TextSelection selection, RenderEditable renderObject, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RevealedOffset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Return value for [RenderAbstractViewport.getOffsetToReveal].\n\nIt indicates the [offset] required to reveal an element in a viewport and\nthe [rect] position said element would have in the viewport at that\n[offset].", "detail": "", "kind": 7, "label": "RevealedOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data used by [RenderBox] and its subclasses.", "detail": "", "kind": 7, "label": "BoxParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccessibilityFeatures", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Additional accessibility features that may be enabled by the platform.\n\nIt is not possible to enable these settings from Flutter, instead they are\nused by the platform to indicate that additional accessibility features are\nenabled.", "detail": "", "kind": 7, "label": "AccessibilityFeatures" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilterLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a filter to the existing contents of the scene.", "detail": "", "kind": 7, "label": "BackdropFilterLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxHitTestEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A hit test entry used by [RenderBox].", "detail": "", "kind": 7, "label": "BoxHitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextureBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture box refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture boxes are repainted autonomously as dictated by the backend (e.g. on\narrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by the parent, and the texture is\nautomatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "TextureBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a given transformation matrix to its\nchildren.\n\nThis class inherits from [OffsetLayer] to make it one of the layers that\ncan be used at the root of a [RenderObject] hierarchy.", "detail": "", "kind": 7, "label": "TransformLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderShrinkWrappingViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is bigger on the inside and shrink wraps its children\nin the main axis.\n\n[RenderShrinkWrappingViewport] displays a subset of its children according\nto its own dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[RenderShrinkWrappingViewport] differs from [RenderViewport] in that\n[RenderViewport] expands to fill the main axis whereas\n[RenderShrinkWrappingViewport] sizes itself to match its children in the\nmain axis. This shrink wrapping behavior is expensive because the children,\nand hence the viewport, could potentially change size whenever the [offset]\nchanges (e.g., because of a collapsing header).\n\n[RenderShrinkWrappingViewport] cannot contain [RenderBox] children directly.\nInstead, use a [RenderSliverList], [RenderSliverFixedExtentList],\n[RenderSliverGrid], or a [RenderSliverToBoxAdapter], for example.\n\nSee also:\n\n * [RenderViewport], a viewport that does not shrink-wrap its contents.\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which allows a [RenderBox] object to be\n placed inside a [RenderSliver] (the opposite of this class).", "detail": "", "kind": 7, "label": "RenderShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSemanticsAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier of a custom semantics action.\n\nCustom semantics actions can be provided to make complex user\ninteractions more accessible. For instance, if an application has a\ndrag-and-drop list that requires the user to press and hold an item\nto move it, users interacting with the application using a hardware\nswitch may have difficulty. This can be made accessible by creating custom\nactions and pairing them with handlers that move a list item up or down in\nthe list.\n\nIn Android, these actions are presented in the local context menu. In iOS,\nthese are presented in the radial context menu.\n\nLocalization and text direction do not automatically apply to the provided\nlabel or hint.\n\nInstances of this class should either be instantiated with const or\nnew instances cached in static fields.\n\nSee also:\n\n * [SemanticsProperties], where the handler for a custom action is provided.", "detail": "", "kind": 7, "label": "CustomSemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipPath", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using a path.\n\nTakes a delegate whose primary method returns a path that should\nbe used to prevent the child from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized render objects:\n\n * To clip to a rectangle, consider [RenderClipRect].\n * To clip to an oval or circle, consider [RenderClipOval].\n * To clip to a rounded rectangle, consider [RenderClipRRect].", "detail": "", "kind": 7, "label": "RenderClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestResult", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The result of performing a hit test.", "detail": "", "kind": 7, "label": "HitTestResult" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerRenderObjectMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Generic mixin for render objects with a list of children.\n\nProvides a child model for a render object subclass that has a doubly-linked\nlist of children.", "detail": "", "kind": 7, "label": "ContainerRenderObjectMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugOverflowIndicatorMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An mixin indicator that is drawn when a [RenderObject] overflows its\ncontainer.\n\nThis is used by some RenderObjects that are containers to show where, and by\nhow much, their children overflow their containers. These indicators are\ntypically only shown in a debug build (where the call to\n[paintOverflowIndicator] is surrounded by an assert).\n\nThis class will also print a debug message to the console when the container\noverflows. It will print on the first occurrence, and once after each time that\n[reassemble] is called.\n\n\n```dart\nclass MyRenderObject extends RenderAligningShiftedBox with DebugOverflowIndicatorMixin {\n MyRenderObject({\n AlignmentGeometry alignment,\n TextDirection textDirection,\n RenderBox child,\n }) : super.mixin(alignment, textDirection, child);\n\n Rect _containerRect;\n Rect _childRect;\n\n @override\n void performLayout() {\n // ...\n final BoxParentData childParentData = child.parentData;\n _containerRect = Offset.zero & size;\n _childRect = childParentData.offset & child.size;\n }\n\n @override\n void paint(PaintingContext context, Offset offset) {\n // Do normal painting here...\n // ...\n\n assert(() {\n paintOverflowIndicator(context, offset, _containerRect, _childRect);\n return true;\n }());\n }\n}\n```\n\nSee also:\n\n * [RenderUnconstrainedBox] and [RenderFlex] for examples of classes that use this indicator mixin.", "detail": "", "kind": 7, "label": "DebugOverflowIndicatorMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAndroidView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object for an Android view.\n\nRequires Android API level 20 or greater.\n\n[RenderAndroidView] is responsible for sizing, displaying and passing touch events to an\nAndroid [View](https://developer.android.com/reference/android/view/View).\n\nThe render object's layout behavior is to fill all available space, the parent of this object must\nprovide bounded layout constraints.\n\nThe render object participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified with factories in the `gestureRecognizers` constructor parameter or\nby calling `updateGestureRecognizers`. If the set of gesture recognizers is empty, the gesture\nwill be dispatched to the platform view iff it was not claimed by any other gesture recognizer.\n\nSee also:\n\n * [AndroidView] which is a widget that is used to show an Android view.\n * [PlatformViewsService] which is a service for controlling platform views.", "detail": "", "kind": 7, "label": "RenderAndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderErrorBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object used as a placeholder when an error occurs.\n\nThe box will be painted in the color given by the\n[RenderErrorBox.backgroundColor] static property.\n\nA message can be provided. To simplify the class and thus help reduce the\nlikelihood of this class itself being the source of errors, the message\ncannot be changed once the object has been created. If provided, the text\nwill be painted on top of the background, using the styles given by the\n[RenderErrorBox.textStyle] and [RenderErrorBox.paragraphStyle] static\nproperties.\n\nAgain to help simplify the class, this box tries to be 100000.0 pixels wide\nand high, to approximate being infinitely high but without using infinities.", "detail": "", "kind": 7, "label": "RenderErrorBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSemanticsGestureHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Listens for the specified gestures from the semantics server (e.g.\nan accessibility tool).", "detail": "", "kind": 7, "label": "RenderSemanticsGestureHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderListBody", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays its children sequentially along a given axis, forcing them to the\ndimensions of the parent in the other axis.\n\nThis layout algorithm arranges its children linearly along the main axis\n(either horizontally or vertically). In the cross axis, children are\nstretched to match the box's cross-axis extent. In the main axis, children\nare given unlimited space and the box expands its main axis to contain all\nits children. Because [RenderListBody] boxes expand in the main axis, they\nmust be given unlimited space in the main axis, typically by being contained\nin a viewport with a scrolling direction that matches the box's main axis.", "detail": "", "kind": 7, "label": "RenderListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderShaderMask", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a mask generated by a [Shader] to its child.\n\nFor example, [RenderShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.", "detail": "", "kind": 7, "label": "RenderShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFillViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains multiple box children that each fill the viewport.\n\n[RenderSliverFillViewport] places its children in a linear array along the\nmain axis. Each child is sized to fill the viewport, both in the main and\ncross axis. A [viewportFraction] factor can be provided to size the children\nto a multiple of the viewport's main axis dimension (typically a fraction\nless than 1.0).\n\nSee also:\n\n * [RenderSliverFillRemaining], which sizes the children based on the\n remaining space rather than the viewport itself.\n * [RenderSliverFixedExtentList], which has a configurable [itemExtent].\n * [RenderSliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "RenderSliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderConstrainedOverflowBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nA render overflow box proxies most functions in the render box protocol to\nits child, except that when laying out its child, it passes constraints\nbased on the minWidth, maxWidth, minHeight, and maxHeight fields instead of\njust passing the parent's constraints in. Specifically, it overrides any of\nthe equivalent fields on the constraints given by the parent with the\nconstraints given by these fields for each such field that is not null. It\nthen sizes itself based on the parent's constraints' maxWidth and maxHeight,\nignoring the child's dimensions.\n\nFor example, if you wanted a box to always render 50 pixels high, regardless\nof where it was rendered, you would wrap it in a\nRenderConstrainedOverflowBox with minHeight and maxHeight set to 50.0.\nGenerally speaking, to avoid confusing behavior around hit testing, a\nRenderConstrainedOverflowBox should usually be wrapped in a RenderClipRect.\n\nThe child is positioned according to [alignment]. To position a smaller\nchild inside a larger parent, use [RenderPositionedBox] and\n[RenderConstrainedBox] rather than RenderConstrainedOverflowBox.\n\nSee also:\n\n * [RenderUnconstrainedBox] for a render object that allows its children\n to render themselves unconstrained, expands to fit them, and considers\n overflow to be an error.\n * [RenderSizedOverflowBox], a render object that is a specific size but\n passes its original constraints through to its child, which it allows to\n overflow.", "detail": "", "kind": 7, "label": "RenderConstrainedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RendererBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the render tree and the Flutter engine.", "detail": "", "kind": 7, "label": "RendererBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPointerListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Calls callbacks in response to pointer events.\n\nIf it has a child, defers to the child for sizing behavior.\n\nIf it does not have a child, grows to fit the parent-provided constraints.\n\nThe [onPointerEnter], [onPointerHover], and [onPointerExit] events are only\nrelevant to and fired by pointers that can hover (e.g. mouse pointers, but\nnot most touch pointers).", "detail": "", "kind": 7, "label": "RenderPointerListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAspectRatio", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Attempts to size the child to a specific aspect ratio.\n\nThe render object first tries the largest width permitted by the layout\nconstraints. The height of the render object is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The render object will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the render object would\ncontinue iterating through the constraints. If the render object does not\nfind a feasible size after consulting each constraint, the render object\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.", "detail": "", "kind": 7, "label": "RenderAspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetailsForRendering", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [FlutterErrorDetails] with extra fields for the rendering\nlibrary.", "detail": "", "kind": 7, "label": "FlutterErrorDetailsForRendering" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverScrollingPersistentHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which scrolls normally, except that when\nit hits the leading edge (typically the top) of the viewport, it shrinks to\na minimum size before continuing to scroll.\n\nThis sliver makes no effort to avoid overlapping other content.", "detail": "", "kind": 7, "label": "RenderSliverScrollingPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectVisitor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called for each [RenderObject].\n\nUsed by [RenderObject.visitChildren] and [RenderObject.visitChildrenForSemantics].", "detail": "(RenderObject child) → void", "kind": 7, "label": "RenderObjectVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIndexedStack", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements the same layout algorithm as RenderStack but only paints the child\nspecified by index.\n\nAlthough only one child is displayed, the cost of the layout algorithm is\nstill O(N), like an ordinary stack.", "detail": "", "kind": 7, "label": "RenderIndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PipelineOwner", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pipeline owner manages the rendering pipeline.\n\nThe pipeline owner provides an interface for driving the rendering pipeline\nand stores the state about which render objects have requested to be visited\nin each stage of the pipeline. To flush the pipeline, call the following\nfunctions in order:\n\n1. [flushLayout] updates any render objects that need to compute their\n layout. During this phase, the size and position of each render\n object is calculated. Render objects might dirty their painting or\n compositing state during this phase.\n2. [flushCompositingBits] updates any render objects that have dirty\n compositing bits. During this phase, each render object learns whether\n any of its children require compositing. This information is used during\n the painting phase when selecting how to implement visual effects such as\n clipping. If a render object has a composited child, its needs to use a\n [Layer] to create the clip in order for the clip to apply to the\n composited child (which will be painted into its own [Layer]).\n3. [flushPaint] visits any render objects that need to paint. During this\n phase, render objects get a chance to record painting commands into\n [PictureLayer]s and construct other composited [Layer]s.\n4. Finally, if semantics are enabled, [flushSemantics] will compile the\n semantics for the render objects. This semantic information is used by\n assistive technology to improve the accessibility of the render tree.\n\nThe [RendererBinding] holds the pipeline owner for the render objects that\nare visible on screen. You can create other pipeline owners to manage\noff-screen objects, which can flush their pipelines independently of the\non-screen render objects.", "detail": "", "kind": 7, "label": "PipelineOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UpdateLiveRegionEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers a polite announcement of a live region.\n\nThis requires that the semantics node has already been marked as a live\nregion. On Android, TalkBack will make a verbal announcement, as long as\nthe label of the semantics node has changed since the last live region\nupdate. iOS does not currently support this event.\n\nSee also:\n\n * [SemanticsFlag.liveRegion], for a description of live regions.", "detail": "", "kind": 7, "label": "UpdateLiveRegionEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAligningShiftedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Abstract class for one-child-layout render boxes that use a\n[AlignmentGeometry] to align their children.", "detail": "", "kind": 7, "label": "RenderAligningShiftedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OpacityLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that makes its children partially transparent.\n\nWhen debugging, setting [debugDisableOpacityLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "OpacityLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderStack].", "detail": "", "kind": 7, "label": "StackParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFixedExtentList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[RenderSliverFixedExtentList] places its children in a linear array along\nthe main axis starting at offset zero and without gaps. Each child is forced\nto have the [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[RenderSliverFixedExtentList] is more efficient than [RenderSliverList]\nbecause [RenderSliverFixedExtentList] does not need to perform layout on its\nchildren to obtain their extent in the main axis.\n\nSee also:\n\n * [RenderSliverList], which does not require its children to have the same\n extent in the main axis.\n * [RenderSliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [RenderSliverFillRemaining], which determines the [itemExtent] based on\n [SliverConstraints.remainingPaintExtent].", "detail": "", "kind": 7, "label": "RenderSliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FollowerLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a transformation matrix to its children such\nthat they are positioned to match a [LeaderLayer].\n\nIf any of the ancestors of this layer have a degenerate matrix (e.g. scaling\nby zero), then the [FollowerLayer] will not be able to transform its child\nto the coordinate space of the [LeaderLayer].\n\nA [linkedOffset] property can be provided to further offset the child layer\nfrom the leader layer, for example if the child is to follow the linked\nlayer at a distance rather than directly overlapping it.", "detail": "", "kind": 7, "label": "FollowerLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsHandle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A reference to the semantics tree.\n\nThe framework maintains the semantics tree (used for accessibility and\nindexing) only when there is at least one client holding an open\n[SemanticsHandle].\n\nThe framework notifies the client that it has updated the semantics tree by\ncalling the [listener] callback. When the client no longer needs the\nsemantics tree, the client can call [dispose] on the [SemanticsHandle],\nwhich stops these callbacks and closes the [SemanticsHandle]. When all the\noutstanding [SemanticsHandle] objects are closed, the framework stops\nupdating the semantics tree.\n\nTo obtain a [SemanticsHandle], call [PipelineOwner.ensureSemantics] on the\n[PipelineOwner] for the render tree from which you wish to read semantics.\nYou can obtain the [PipelineOwner] using the [RenderObject.owner] property.", "detail": "", "kind": 7, "label": "SemanticsHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFractionallySizedOverflowBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes its child to a fraction of the total available space.\n\nFor both its width and height, this render object imposes a tight\nconstraint on its child that is a multiple (typically less than 1.0) of the\nmaximum constraint it received from its parent on that axis. If the factor\nfor a given axis is null, then the constraints from the parent are just\npassed through instead.\n\nIt then tries to size itself to the size of its child. Where this is not\npossible (e.g. if the constraints from the parent are themselves tight), the\nchild is aligned according to [alignment].", "detail": "", "kind": 7, "label": "RenderFractionallySizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIntrinsicHeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this render object can result in a layout that is O(N²) in the\ndepth of the tree.", "detail": "", "kind": 7, "label": "RenderIntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridRegularTileLayout", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [SliverGridLayout] that uses equally sized and spaced tiles.\n\nRather that providing a grid with a [SliverGridLayout] directly, you instead\nprovide the grid a [SliverGridDelegate], which can compute a\n[SliverGridLayout] given the current [SliverConstraints].\n\nThis layout is used by [SliverGridDelegateWithFixedCrossAxisCount] and\n[SliverGridDelegateWithMaxCrossAxisExtent].\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which uses this layout.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which uses this layout.\n * [SliverGridLayout], which represents an arbitrary tile layout.\n * [SliverGridGeometry], which represents the size and position of a single\n tile in a grid.\n * [SliverGridDelegate.getLayout], which returns this object to describe the\n delegate's layout.\n * [RenderSliverGrid], which uses this class during its\n [RenderSliverGrid.performLayout] method.", "detail": "", "kind": 7, "label": "SliverGridRegularTileLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsHintOverrides", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides hint values which override the default hints on supported\nplatforms.\n\nOn iOS, these values are always ignored.", "detail": "", "kind": 7, "label": "SemanticsHintOverrides" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerParentDataMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data to support a doubly-linked list of children.", "detail": "", "kind": 7, "label": "ContainerParentDataMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderLimitedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Constrains the child's [BoxConstraints.maxWidth] and\n[BoxConstraints.maxHeight] if they're otherwise unconstrained.\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).", "detail": "", "kind": 7, "label": "RenderLimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderCustomPaint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [RenderCustomPaint] first asks its [painter] to paint\non the current canvas, then it paints its child, and then, after painting\nits child, it asks its [foregroundPainter] to paint. The coordinate system of\nthe canvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing or implementing [CustomPainter].\n\nBecause custom paint calls its painters during paint, you cannot mark the\ntree as needing a new layout during the callback (the layout for this frame\nhas already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [preferredSize], which\ndefaults to [Size.zero].\n\nSee also:\n\n * [CustomPainter], the class that custom painter delegates should extend.\n * [Canvas], the API provided to custom painter delegates.", "detail": "", "kind": 7, "label": "RenderCustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFlow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements the flow layout algorithm.\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow.\n\nThe most efficient way to trigger a repaint of the flow is to supply a\nrepaint argument to the constructor of the [FlowDelegate]. The flow will\nlisten to this animation and repaint whenever the animation ticks, avoiding\nboth the build and layout phases of the pipeline.\n\nSee also:\n\n * [FlowDelegate]\n * [RenderStack]", "detail": "", "kind": 7, "label": "RenderFlow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Layer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer.\n\nDuring painting, the render tree generates a tree of composited layers that\nare uploaded into the engine and displayed by the compositor. This class is\nthe base class for all composited layers.\n\nMost layers can have their properties mutated, and layers can be moved to\ndifferent parents. The scene must be explicitly recomposited after such\nchanges are made; the layer tree does not maintain its own dirty state.\n\nTo composite the tree, create a [SceneBuilder] object, pass it to the\nroot [Layer] object's [addToScene] method, and then call\n[SceneBuilder.build] to obtain a [Scene]. A [Scene] can then be painted\nusing [Window.render].\n\nSee also:\n\n * [RenderView.compositeFrame], which implements this recomposition protocol\n for painting [RenderObject] trees on the display.", "detail": "", "kind": 7, "label": "Layer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFittedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].", "detail": "", "kind": 7, "label": "RenderFittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderFlow].\n\nThe [offset] property is ignored by [RenderFlow] and is always set to\n[Offset.zero]. Children of a [RenderFlow] are positioned using a\ntransformation matrix, which is private to the [RenderFlow]. To set the\nmatrix, use the [FlowPaintingContext.paintChild] function from an override\nof the [FlowDelegate.paintChildren] function.", "detail": "", "kind": 7, "label": "FlowParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapSemanticEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers tap semantic feedback.\n\nCurrently only honored on Android. Triggers a tap specific sound when\nTalkBack is enabled.", "detail": "", "kind": 7, "label": "TapSemanticEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegionLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer which annotates its children with a value.\n\nThese values can be retrieved using [Layer.find] with a given [Offset]. If\na [Size] is provided to this layer, then find will check if the provided\noffset is within the bounds of the layer.", "detail": "", "kind": 7, "label": "AnnotatedRegionLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextureLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that maps a backend texture to a rectangle.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture layer refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nOnce inserted into the layer tree, texture layers are repainted autonomously\nas dictated by the backend (e.g. on arrival of a video frame). Such\nrepainting generally does not involve executing Dart code.\n\nTexture layers are always leaves in the layer tree.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "TextureLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property describing a [double] [value] with an optional [unit] of measurement.\n\nNumeric formatting is optimized for debug message readability.", "detail": "", "kind": 7, "label": "DoubleProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CaretChangedHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the caret location changes.\n\nUsed by [RenderEditable.onCaretChanged].", "detail": "(Rect caretRect) → void", "kind": 7, "label": "CaretChangedHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderUnconstrainedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Renders a box, imposing no constraints on its child, allowing the child to\nrender at its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This box will then attempt to\nadopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the box, a warning will be printed on\nthe console, and black and yellow striped areas will appear where the\noverflow occurs.\n\nSee also:\n\n * [RenderConstrainedBox], which renders a box which imposes constraints\n on its child.\n * [RenderConstrainedOverflowBox], which renders a box that imposes different\n constraints on its child than it gets from its parent, possibly allowing\n the child to overflow the parent.\n * [RenderSizedOverflowBox], a render object that is a specific size but\n passes its original constraints through to its child, which it allows to\n overflow.", "detail": "", "kind": 7, "label": "RenderUnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBackdropFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a filter to the existing painted content and then paints [child].\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.", "detail": "", "kind": 7, "label": "RenderBackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSemanticsAnnotations", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Add annotations to the [SemanticsNode] for this subtree.", "detail": "", "kind": 7, "label": "RenderSemanticsAnnotations" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridLayout", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The size and position of all the tiles in a [RenderSliverGrid].\n\nRather that providing a grid with a [SliverGridLayout] directly, you instead\nprovide the grid a [SliverGridDelegate], which can compute a\n[SliverGridLayout] given the current [SliverConstraints].\n\nThe tiles can be placed arbitrarily, but it is more efficient to place tiles\nin roughly in order by scroll offset because grids reify a contiguous\nsequence of children.\n\nSee also:\n\n * [SliverGridRegularTileLayout], which represents a layout that uses\n equally sized and spaced tiles.\n * [SliverGridGeometry], which represents the size and position of a single\n tile in a grid.\n * [SliverGridDelegate.getLayout], which returns this object to describe the\n delegate's layout.\n * [RenderSliverGrid], which uses this class during its\n [RenderSliverGrid.performLayout] method.", "detail": "", "kind": 7, "label": "SliverGridLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFlex", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays its children in a one-dimensional array.\n\n## Layout algorithm\n\n_This section describes how the framework causes [RenderFlex] to position\nits children._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [RenderFlex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor with unbounded main axis\n constraints and the incoming cross axis constraints. If the\n [crossAxisAlignment] is [CrossAxisAlignment.stretch], instead use tight\n cross axis constraints that match the incoming max extent in the cross\n axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors according to their flex factor. For example, a child with a\n flex factor of 2.0 will receive twice the amount of main axis space as a\n child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [RenderFlex] is the maximum cross axis\n extent of the children (which will always satisfy the incoming\n constraints).\n5. The main axis extent of the [RenderFlex] is determined by the\n [mainAxisSize] property. If the [mainAxisSize] property is\n [MainAxisSize.max], then the main axis extent of the [RenderFlex] is the\n max extent of the incoming main axis constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the main axis extent of the [Flex]\n is the sum of the main axis extents of the children (subject to the\n incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Flex], the widget equivalent.\n * [Row] and [Column], direction-specific variants of [Flex].", "detail": "", "kind": 7, "label": "RenderFlex" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPhysicalContainerParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for slivers that have multiple children and that position their\nchildren using absolute coordinates.", "detail": "", "kind": 7, "label": "SliverPhysicalContainerParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerSignalEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerSignalEvent event) → void", "kind": 7, "label": "PointerSignalEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Constraints", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract set of layout constraints.\n\nConcrete layout models (such as box) will create concrete subclasses to\ncommunicate layout constraints between parents and children.\n\n## Writing a Constraints subclass\n\nWhen creating a new [RenderObject] subclass with a new layout protocol, one\nwill usually need to create a new [Constraints] subclass to express the\ninput to the layout algorithms.\n\nA [Constraints] subclass should be immutable (all fields final). There are\nseveral members to implement, in addition to whatever fields, constructors,\nand helper methods one may find useful for a particular layout protocol:\n\n* The [isTight] getter, which should return true if the object represents a\n case where the [RenderObject] class has no choice for how to lay itself\n out. For example, [BoxConstraints] returns true for [isTight] when both\n the minimum and maximum widths and the minimum and maximum heights are\n equal.\n\n* The [isNormalized] getter, which should return true if the object\n represents its data in its canonical form. Sometimes, it is possible for\n fields to be redundant with each other, such that several different\n representations have the same implications. For example, a\n [BoxConstraints] instance with its minimum width greater than its maximum\n width is equivalent to one where the maximum width is set to that minimum\n width (`2<w<1` is equivalent to `2<w<2`, since minimum constraints have\n priority). This getter is used by the default implementation of\n [debugAssertIsValid].\n\n* The [debugAssertIsValid] method, which should assert if there's anything\n wrong with the constraints object. (We use this approach rather than\n asserting in constructors so that our constructors can be `const` and so\n that it is possible to create invalid constraints temporarily while\n building valid ones.) See the implementation of\n [BoxConstraints.debugAssertIsValid] for an example of the detailed checks\n that can be made.\n\n* The [==] operator and the [hashCode] getter, so that constraints can be\n compared for equality. If a render object is given constraints that are\n equal, then the rendering library will avoid laying the object out again\n if it is not dirty.\n\n* The [toString] method, which should describe the constraints so that they\n appear in a usefully readable form in the output of [debugDumpRenderTree].", "detail": "", "kind": 7, "label": "Constraints" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPathLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composite layer that clips its children using a path.\n\nWhen debugging, setting [debugDisableClipLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "ClipPathLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderViewportBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for render objects that are bigger on the inside.\n\nThis render object provides the shared code for render objects that host\n[RenderSliver] render objects inside a [RenderBox]. The viewport establishes\nan [axisDirection], which orients the sliver's coordinate system, which is\nbased on scroll offsets rather than Cartesian coordinates.\n\nThe viewport also listens to an [offset], which determines the\n[SliverConstraints.scrollOffset] input to the sliver layout protocol.\n\nSubclasses typically override [performLayout] and call\n[layoutChildSequence], perhaps multiple times.\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which allows a [RenderBox] object to be\n placed inside a [RenderSliver] (the opposite of this class).", "detail": "", "kind": 7, "label": "RenderViewportBase" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProfilePaintCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugOnProfilePaint] implementations.", "detail": "(RenderObject renderObject) → void", "kind": 7, "label": "ProfilePaintCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An int valued property with an optional unit the value is measured in.\n\nExamples of units include 'px' and 'ms'.", "detail": "", "kind": 7, "label": "IntProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The layout constraints for the root render object.", "detail": "", "kind": 7, "label": "ViewConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlayOption", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The options that control whether the performance overlay displays certain\naspects of the compositor.", "detail": "", "kind": 13, "label": "PerformanceOverlayOption" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines diagnostics data for a [value].\n\n[DiagnosticsNode] provides a high quality multi-line string dump via\n[toStringDeep]. The core members are the [name], [toDescription],\n[getProperties], [value], and [getChildren]. All other members exist\ntypically to provide hints for how [toStringDeep] and debugging tools should\nformat output.", "detail": "", "kind": 7, "label": "DiagnosticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMaskLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a shader to its children.", "detail": "", "kind": 7, "label": "ShaderMaskLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPhysicalParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by parents of slivers that position their\nchildren using absolute coordinates.\n\nFor example, used by [RenderViewport].\n\nThis data structure is optimized for fast painting, at the cost of requiring\nadditional work during layout when the children change their offsets. It is\nbest used by parents that expect to have few children, especially if those\nchildren will themselves be very tall relative to the parent.", "detail": "", "kind": 7, "label": "SliverPhysicalParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for data associated with a [RenderObject] by its parent.\n\nSome render objects wish to store data on their children, such as their\ninput parameters to the parent's layout algorithm or their position relative\nto other children.", "detail": "", "kind": 7, "label": "ParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionPoint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents the coordinates of the point in a selection, and the text\ndirection at that point, relative to top left of the [RenderEditable] that\nholds the selection.", "detail": "", "kind": 7, "label": "TextSelectionPoint" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the placement of a child in a [RenderSliverGrid].\n\nSee also:\n\n * [SliverGridLayout], which represents the geometry of all the tiles in a\n grid.\n * [SliverGridLayout.getGeometryForChildIndex], which returns this object\n to describe the child's placement.\n * [RenderSliverGrid], which uses this class during its\n [RenderSliverGrid.performLayout] method.", "detail": "", "kind": 7, "label": "SliverGridGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the semantics layer and the Flutter engine.", "detail": "", "kind": 7, "label": "SemanticsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAbstractViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for render objects that are bigger on the inside.\n\nSome render objects, such as [RenderViewport], present a portion of their\ncontent, which can be controlled by a [ViewportOffset]. This interface lets\nthe framework recognize such render objects and interact with them without\nhaving specific knowledge of all the various types of viewports.", "detail": "", "kind": 7, "label": "RenderAbstractViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPositionedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Positions its child using an [AlignmentGeometry].\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\nBy default, sizes to be as big as possible in both axes. If either axis is\nunconstrained, then in that direction it will be sized to fit the child's\ndimensions. Using widthFactor and heightFactor you can force this latter\nbehavior in all cases.", "detail": "", "kind": 7, "label": "RenderPositionedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderCustomMultiChildLayoutBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defers the layout of multiple children to a delegate.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.", "detail": "", "kind": 7, "label": "RenderCustomMultiChildLayoutBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetSelectionHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [SemanticsAction.setSelection] handlers to change the\ntext selection (or re-position the cursor) to `selection`.", "detail": "(TextSelection selection) → void", "kind": 7, "label": "SetSelectionHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressSemanticsEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers long press semantic feedback.\n\nCurrently only honored on Android. Triggers a long-press specific sound\nwhen TalkBack is enabled.", "detail": "", "kind": 7, "label": "LongPressSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which encloses its string [value] in quotes.\n\nSee also:\n\n * [MessageProperty], which is a better fit for showing a message\n instead of describing a property with a string value.", "detail": "", "kind": 7, "label": "StringProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportOffset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Which part of the content inside the viewport should be visible.\n\nThe [pixels] value determines the scroll offset that the viewport uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\nSee also:\n\n * [ScrollPosition], which is a commonly used concrete subclass.\n * [RenderViewportBase], which is a render object that uses viewport\n offsets.", "detail": "", "kind": 7, "label": "ViewportOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFillRemaining", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[RenderSliverFillRemaining] sizes its child to fill the viewport in the\ncross axis and to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [RenderSliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [RenderSliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "RenderSliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverLogicalContainerParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for slivers that have multiple children and that position their\nchildren using layout offsets.", "detail": "", "kind": 7, "label": "SliverLogicalContainerParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFixedExtentBoxAdaptor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains multiple box children that have the same extent in\nthe main axis.\n\n[RenderSliverFixedExtentBoxAdaptor] places its children in a linear array\nalong the main axis. Each child is forced to have the [itemExtent] in the\nmain axis and the [SliverConstraints.crossAxisExtent] in the cross axis.\n\nSubclasses should override [itemExtent] to control the size of the children\nin the main axis. For a concrete subclass with a configurable [itemExtent],\nsee [RenderSliverFixedExtentList].\n\n[RenderSliverFixedExtentBoxAdaptor] is more efficient than\n[RenderSliverList] because [RenderSliverFixedExtentBoxAdaptor] does not need\nto perform layout on its children to obtain their extent in the main axis.\n\nSee also:\n\n * [RenderSliverFixedExtentList], which has a configurable [itemExtent].\n * [RenderSliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [RenderSliverFillRemaining], which determines the [itemExtent] based on\n [SliverConstraints.remainingPaintExtent].\n * [RenderSliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "RenderSliverFixedExtentBoxAdaptor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnimatedSize", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that animates its size to its child's size over a given\n[duration] and with a given [curve]. If the child's size itself animates\n(i.e. if it changes size two frames in a row, as opposed to abruptly\nchanging size in one frame then remaining that size in subsequent frames),\nthis render object sizes itself to fit the child instead of animating\nitself.\n\nWhen the child overflows the current animated size of this render object, it\nis clipped.", "detail": "", "kind": 7, "label": "RenderAnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverMultiBoxAdaptor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with multiple box children.\n\n[RenderSliverMultiBoxAdaptor] is a base class for slivers that have multiple\nbox children. The children are managed by a [RenderSliverBoxChildManager],\nwhich lets subclasses create children lazily during layout. Typically\nsubclasses will create only those children that are actually needed to fill\nthe [SliverConstraints.remainingPaintExtent].\n\nThe contract for adding and removing children from this render object is\nmore strict than for normal render objects:\n\n* Children can be removed except during a layout pass if they have already\n been laid out during that layout pass.\n* Children cannot be added except during a call to [childManager], and\n then only if there is no child corresponding to that index (or the child\n child corresponding to that index was first removed).\n\nSee also:\n\n * [RenderSliverToBoxAdapter], which has a single box child.\n * [RenderSliverList], which places its children in a linear\n array.\n * [RenderSliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [RenderSliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "RenderSliverMultiBoxAdaptor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverBoxChildManager", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate used by [RenderSliverMultiBoxAdaptor] to manage its children.\n\n[RenderSliverMultiBoxAdaptor] objects reify their children lazily to avoid\nspending resources on children that are not visible in the viewport. This\ndelegate lets these objects create and remove children as well as estimate\nthe total scroll offset extent occupied by the full child list.", "detail": "", "kind": 7, "label": "RenderSliverBoxChildManager" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderTransform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a transformation before painting its child.", "detail": "", "kind": 7, "label": "RenderTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OffsetLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A layer that is displayed at an offset from its parent layer.\n\nOffset layers are key to efficient repainting because they are created by\nrepaint boundaries in the [RenderObject] tree (see\n[RenderObject.isRepaintBoundary]). When a render object that is a repaint\nboundary is asked to paint at given offset in a [PaintingContext], the\nrender object first checks whether it needs to repaint itself. If not, it\nreuses its existing [OffsetLayer] (and its entire subtree) by mutating its\n[offset] property, cutting off the paint walk.", "detail": "", "kind": 7, "label": "OffsetLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the semantic information associated with the owning\n[RenderObject].\n\nThe information provided in the configuration is used to generate the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderShiftedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Abstract class for one-child-layout render boxes that provide control over\nthe child's position.", "detail": "", "kind": 7, "label": "RenderShiftedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The root of the render tree.\n\nThe view represents the total output surface of the render tree and handles\nbootstrapping the rendering pipeline. The view has a unique child\n[RenderBox], which is required to fill the entire output surface.", "detail": "", "kind": 7, "label": "RenderView" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingHeaderSnapConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Specifies how a floating header is to be \"snapped\" (animated) into or out\nof view.\n\nSee also:\n\n * [RenderSliverFloatingPersistentHeader.maybeStartSnapAnimation] and\n [RenderSliverFloatingPersistentHeader.maybeStopSnapAnimation], which\n start or stop the floating header's animation.\n * [SliverAppBar], which creates a header that can be pinned, floating,\n and snapped into view via the corresponding parameters.", "detail": "", "kind": 7, "label": "FloatingHeaderSnapConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeaderLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that can be followed by a [FollowerLayer].\n\nThis layer collapses the accumulated offset into a transform and passes\n[Offset.zero] to its child layers in the [addToScene]/[addChildrenToScene]\nmethods, so that [applyTransform] will work reliably.", "detail": "", "kind": 7, "label": "LeaderLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipOval", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].", "detail": "", "kind": 7, "label": "RenderClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderWrap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays its children in multiple horizontal or vertical runs.\n\nA [RenderWrap] lays out each child and attempts to place the child adjacent\nto the previous child in the main axis, given by [direction], leaving\n[spacing] space in between. If there is not enough space to fit the child,\n[RenderWrap] creates a new _run_ adjacent to the existing children in the\ncross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].", "detail": "", "kind": 7, "label": "RenderWrap" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverPadding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Inset a [RenderSliver], applying padding on each side.\n\nA [RenderSliverPadding] object wraps the [SliverGeometry.layoutExtent] of\nits child. Any incoming [SliverConstraints.overlap] is ignored and not\npassed on to the child.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a\n[RenderSliverPinnedPersistentHeader] will cause the app bar to overlap\nearlier slivers (contrary to the normal behavior of pinned app bars), and\nwhile the app bar is pinned, the padding will scroll away.", "detail": "", "kind": 7, "label": "RenderSliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using a rectangle.\n\nBy default, [RenderClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].", "detail": "", "kind": 7, "label": "RenderClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderFlex].", "detail": "", "kind": 7, "label": "FlexParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by [RenderSliverGrid].", "detail": "", "kind": 7, "label": "SliverGridParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModelLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that uses a physical model to producing lighting effects.\n\nFor example, the layer casts a shadow according to its geometry and the\nrelative position of lights and other physically modelled objects in the\nscene.\n\nWhen debugging, setting [debugDisablePhysicalShapeLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "PhysicalModelLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildManager", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate used by [RenderListWheelViewport] to manage its children.\n\n[RenderListWheelViewport] during layout will ask the delegate to create\nchildren that are visible in the viewport and remove those that are not.", "detail": "", "kind": 7, "label": "ListWheelChildManager" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderParagraph", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that displays a paragraph of text", "detail": "", "kind": 7, "label": "RenderParagraph" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A layer that shows an embedded [UIView](https://developer.apple.com/documentation/uikit/uiview)\non iOS.", "detail": "", "kind": 7, "label": "PlatformViewLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that has a list of children.\n\nA [ContainerLayer] instance merely takes a list of children and inserts them\ninto the composited rendering in order. There are subclasses of\n[ContainerLayer] which apply more elaborate effects in the process.", "detail": "", "kind": 7, "label": "ContainerLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFractionalTranslation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as an [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[RenderFractionalTranslation], even if the contents are offset such that\nthey overflow.", "detail": "", "kind": 7, "label": "RenderFractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRectLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composite layer that clips its children using a rounded rectangle.\n\nWhen debugging, setting [debugDisableClipLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "ClipRRectLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverPersistentHeader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for slivers that have a [RenderBox] child which scrolls\nnormally, except that when it hits the leading edge (typically the top) of\nthe viewport, it shrinks to a minimum size ([minExtent]).\n\nThis class primarily provides helpers for managing the child, in particular:\n\n * [layoutChild], which applies min and max extents and a scroll offset to\n lay out the child. This is normally called from [performLayout].\n\n * [childExtent], to convert the child's box layout dimensions to the sliver\n geometry model.\n\n * hit testing, painting, and other details of the sliver protocol.\n\nSubclasses must implement [performLayout], [minExtent], and [maxExtent], and\ntypically also will implement [updateChild].", "detail": "", "kind": 7, "label": "RenderSliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveParentDataMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by [RenderSliverWithKeepAliveMixin].", "detail": "", "kind": 7, "label": "KeepAliveParentDataMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticPropertiesBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builder to accumulate properties and configuration used to assemble a\n[DiagnosticsNode] from a [Diagnosticable] object.", "detail": "", "kind": 7, "label": "DiagnosticPropertiesBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverSingleBoxAdapter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract class for [RenderSliver]s that contains a single [RenderBox].\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which extends this class to size the child\n according to its preferred size.\n * [RenderSliverFillRemaining], which extends this class to size the child\n to fill the remaining space in the viewport.", "detail": "", "kind": 7, "label": "RenderSliverSingleBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlayLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A layer that indicates to the compositor that it should display\ncertain performance statistics within it.\n\nPerformance overlay layers are always leaves in the layer tree.", "detail": "", "kind": 7, "label": "PerformanceOverlayLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderViewport", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is bigger on the inside.\n\n[RenderViewport] is the visual workhorse of the scrolling machinery. It\ndisplays a subset of its children according to its own dimensions and the\ngiven [offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[RenderViewport] hosts a bidirectional list of slivers, anchored on a\n[center] sliver, which is placed at the zero scroll offset. The center\nwidget is displayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[RenderViewport] cannot contain [RenderBox] children directly. Instead, use\na [RenderSliverList], [RenderSliverFixedExtentList], [RenderSliverGrid], or\na [RenderSliverToBoxAdapter], for example.\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which allows a [RenderBox] object to be\n placed inside a [RenderSliver] (the opposite of this class).\n * [RenderShrinkWrappingViewport], a variant of [RenderViewport] that\n shrink-wraps its contents along the main axis.", "detail": "", "kind": 7, "label": "RenderViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderMergeSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Causes the semantics of all descendants to be merged into this\nnode such that the entire subtree becomes a single leaf in the\nsemantics tree.\n\nUseful for combining the semantics of multiple render objects that\nform part of a single conceptual widget, e.g. a checkbox, a label,\nand the gesture detector that goes with them.", "detail": "", "kind": 7, "label": "RenderMergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPadding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.", "detail": "", "kind": 7, "label": "RenderPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverConstraints", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderSliver] layout.\n\nThe [SliverConstraints] describe the current scroll state of the viewport\nfrom the point of view of the sliver receiving the constraints. For example,\na [scrollOffset] of zero means that the leading edge of the sliver is\nvisible in the viewport, not that the viewport itself has a zero scroll\noffset.", "detail": "", "kind": 7, "label": "SliverConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction of a scroll, relative to the positive scroll offset axis given\nby an [AxisDirection] and a [GrowthDirection].\n\nThis contrasts to [GrowthDirection] in that it has a third value, [idle],\nfor the case where no scroll is occurring.\n\nThis is used by [RenderSliverFloatingPersistentHeader] to only expand when\nthe user is scrolling in the same direction as the detected scroll offset\nchange.", "detail": "", "kind": 13, "label": "ScrollDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBlockSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Causes the semantics of all earlier render objects below the same semantic\nboundary to be dropped.\n\nThis is useful in a stack where an opaque mask should prevent interactions\nwith the render objects painted below the mask.", "detail": "", "kind": 7, "label": "RenderBlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBoxContainerDefaultsMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that provides useful default behaviors for boxes with children\nmanaged by the [ContainerRenderObjectMixin] mixin.\n\nBy convention, this class doesn't override any members of the superclass.\nInstead, it provides helpful functions that subclasses can call as\nappropriate.", "detail": "", "kind": 7, "label": "RenderBoxContainerDefaultsMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBodyParentData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderListBody].", "detail": "", "kind": 7, "label": "ListBodyParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugSemanticsDumpOrder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Used by [debugDumpSemanticsTree] to specify the order in which child nodes\nare printed.", "detail": "", "kind": 13, "label": "DebugSemanticsDumpOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlagProperty", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property where the description is either [ifTrue] or [ifFalse] depending on\nwhether [value] is true or false.\n\nUsing [FlagProperty] instead of [DiagnosticsProperty<bool>] can make\ndiagnostics display more polished. For example, given a property named\n`visible` that is typically true, the following code will return 'hidden'\nwhen `visible` is false and nothing when visible is true, in contrast to\n`visible: true` or `visible: false`.\n\n\n```dart\nFlagProperty(\n 'visible',\n value: true,\n ifFalse: 'hidden',\n)\n```\n\n[FlagProperty] should also be used instead of [DiagnosticsProperty<bool>]\nif showing the bool value would not clearly indicate the meaning of the\nproperty value.\n\n```dart\nFlagProperty(\n 'inherit',\n value: inherit,\n ifTrue: '<all styles inherited>',\n ifFalse: '<no style specified>',\n)\n```\n\nSee also:\n\n * [ObjectFlagProperty], which provides similar behavior describing whether\n a [value] is null.", "detail": "", "kind": 7, "label": "FlagProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event sent by the application to notify interested listeners that\nsomething happened to the user interface (e.g. a view scrolled).\n\nThese events are usually interpreted by assistive technologies to give the\nuser additional clues about the current state of the UI.", "detail": "", "kind": 7, "label": "SemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderDecoratedBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints a [Decoration] either before or after its child paints.", "detail": "", "kind": 7, "label": "RenderDecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsProperties", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties used by assistive technologies to make the application\nmore accessible.\n\nThe properties of this class are used to generate a [SemanticsNode]s in the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsProperties" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderExcludeSemantics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Excludes this subtree from the semantic tree.\n\nWhen [excluding] is true, this render object (and its subtree) is excluded\nfrom the semantic tree.\n\nUseful e.g. for hiding text that is redundant with other text next\nto it (e.g. text included only for the visual effect).", "detail": "", "kind": 7, "label": "RenderExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRectLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composite layer that clips its children using a rectangle.\n\nWhen debugging, setting [debugDisableClipLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "ClipRectLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsService", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows access to the platform's accessibility services.\n\nEvents sent by this service are handled by the platform-specific\naccessibility bridge in Flutter's engine.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "SemanticsService" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[RenderSliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [RenderSliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children. If this dead\nreckoning results in a logical inconsistency (e.g., attempting to place the\nzeroth child at a scroll offset other than zero), the [RenderSliverList]\ngenerates a [SliverGeometry.scrollOffsetCorrection] to restore consistency.\n\nIf the children have a fixed extent in the main axis, consider using\n[RenderSliverFixedExtentList] rather than [RenderSliverList] because\n[RenderSliverFixedExtentList] does not need to perform layout on its\nchildren to obtain their extent in the main axis and is therefore more\nefficient.\n\nSee also:\n\n * [RenderSliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [RenderSliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "RenderSliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InformationCollector", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [FlutterErrorDetails.informationCollector] callback\nand other callbacks that collect information into a string buffer.", "detail": "(StringBuffer information) → void", "kind": 7, "label": "InformationCollector" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsSortKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for all sort keys for [Semantics] accessibility traversal order\nsorting.\n\nOnly keys of the same type and having matching [name]s are compared. If a\nlist of sibling [SemanticsNode]s contains keys that are not comparable with\neach other the list is first sorted using the default sorting algorithm.\nThen the nodes are broken down into groups by moving comparable nodes\ntowards the _earliest_ node in the group. Finally each group is sorted by\nsort key and the resulting list is made by concatenating the sorted groups\nback.\n\nFor example, let's take nodes (C, D, B, E, A, F). Let's assign node A key 1,\nnode B key 2, node C key 3. Let's also assume that the default sort order\nleaves the original list intact. Because nodes A, B, and C, have comparable\nsort key, they will form a group by pulling all nodes towards the earliest\nnode, which is C. The result is group (C, B, A). The remaining nodes D, E,\nF, form a second group with sort key being `null`. The first group is sorted\nusing their sort keys becoming (A, B, C). The second group is left as is\nbecause it does not specify sort keys. Then we concatenate the two groups -\n(A, B, C) and (D, E, F) - into the final (A, B, C, D, E, F).\n\nBecause of the complexity introduced by incomparable sort keys among sibling\nnodes, it is recommended to either use comparable keys for all nodes, or\nuse null for all of them, leaving the sort order to the default algorithm.\n\nSee Also:\n\n * [OrdinalSortKey] for a sort key that sorts using an ordinal.", "detail": "", "kind": 7, "label": "SemanticsSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderEditable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays some text in a scrollable container with a potentially blinking\ncursor and with gesture recognizers.\n\nThis is the renderer for an editable text field. It does not directly\nprovide affordances for editing the text, but it does handle text selection\nand manipulation of the text cursor.\n\nThe [text] is displayed, scrolled by the given [offset], aligned according\nto [textAlign]. The [maxLines] property controls whether the text displays\non one line or many. The [selection], if it is not collapsed, is painted in\nthe [selectionColor]. If it _is_ collapsed, then it represents the cursor\nposition. The cursor is shown while [showCursor] is true. It is painted in\nthe [cursorColor].\n\nIf, when the render object paints, the caret is found to have changed\nlocation, [onCaretChanged] is called.\n\nThe user may interact with the render object by tapping or long-pressing.\nWhen the user does so, the selection is updated, and [onSelectionChanged] is\ncalled.\n\nKeyboard handling, IME handling, scrolling, toggling the [showCursor] value\nto actually blink the cursor, and other features not mentioned above are the\nresponsibility of higher layers and not handled by this object.", "detail": "", "kind": 7, "label": "RenderEditable" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderProxyBoxWithHitTestBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A RenderProxyBox subclass that allows you to customize the\nhit-testing behavior.", "detail": "", "kind": 7, "label": "RenderProxyBoxWithHitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderMetaData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "RenderMetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PictureLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer containing a [Picture].\n\nPicture layers are always leaves in the layer tree.", "detail": "", "kind": 7, "label": "PictureLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverGrid", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[RenderSliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nSee also:\n\n * [RenderSliverList], which places its children in a linear\n array.\n * [RenderSliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.", "detail": "", "kind": 7, "label": "RenderSliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called during layout.\n\nUsed by [RenderObject.invokeLayoutCallback].", "detail": "(T constraints) → void", "kind": 7, "label": "LayoutCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback passed to the [Ticker] class's constructor.\n\nThe argument is the time that the object had spent enabled so far\nat the time of the callback being called.", "detail": "(Duration elapsed) → void", "kind": 7, "label": "TickerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SchedulingStrategy", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [SchedulerBinding.schedulingStrategy] callback. Called\nwhenever the system needs to decide whether a task at a given\npriority needs to be run.\n\nReturn true if a task with the given priority should be executed\nat this time, false otherwise.\n\nSee also [defaultSchedulingStrategy].", "detail": "({int priority, SchedulerBinding scheduler}) → bool", "kind": 7, "label": "SchedulingStrategy" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrameCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for frame-related callbacks from the scheduler.\n\nThe `timeStamp` is the number of milliseconds since the beginning of the\nscheduler's epoch. Use timeStamp to determine how far to advance animation\ntimelines so that all the animations in the system are synchronized to a\ncommon time base.", "detail": "(Duration timeStamp) → void", "kind": 7, "label": "FrameCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SchedulerBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scheduler for running the following:\n\n* _Transient callbacks_, triggered by the system's [Window.onBeginFrame]\n callback, for synchronizing the application's behavior to the system's\n display. For example, [Ticker]s and [AnimationController]s trigger from\n these.\n\n* _Persistent callbacks_, triggered by the system's [Window.onDrawFrame]\n callback, for updating the system's display after transient callbacks have\n executed. For example, the rendering layer uses this to drive its\n rendering pipeline.\n\n* _Post-frame callbacks_, which are run after persistent callbacks, just\n before returning from the [Window.onDrawFrame] callback.\n\n* Non-rendering tasks, to be run between frames. These are given a\n priority and are executed in priority order according to a\n [schedulingStrategy].", "detail": "", "kind": 7, "label": "SchedulerBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TaskCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [Scheduler.scheduleTask] callbacks.\n\nThe type argument `T` is the task's return value. Consider [void] if the\ntask does not return a value.", "detail": "() → T", "kind": 7, "label": "TaskCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Ticker", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Calls its callback once per animation frame.\n\nWhen created, a ticker is initially disabled. Call [start] to\nenable the ticker.\n\nA [Ticker] can be silenced by setting [muted] to true. While silenced, time\nstill elapses, and [start] and [stop] can still be called, but no callbacks\nare called.\n\nBy convention, the [start] and [stop] methods are used by the ticker's\nconsumer, and the [muted] property is controlled by the [TickerProvider]\nthat created the ticker.\n\nTickers are driven by the [SchedulerBinding]. See\n[SchedulerBinding.scheduleFrameCallback].", "detail": "", "kind": 7, "label": "Ticker" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SchedulerPhase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various phases that a [SchedulerBinding] goes through during\n[SchedulerBinding.handleBeginFrame].\n\nThis is exposed by [SchedulerBinding.schedulerPhase].\n\nThe values of this enum are ordered in the same order as the phases occur,\nso their relative index values can be compared to each other.\n\nSee also the discussion at [WidgetsBinding.drawFrame].", "detail": "", "kind": 13, "label": "SchedulerPhase" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Priority", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A task priority, as passed to [SchedulerBinding.scheduleTask].", "detail": "", "kind": 7, "label": "Priority" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HapticFeedback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Allows access to the haptic feedback interface on the device.\n\nThis API is intentionally terse since it calls default platform behavior. It\nis not suitable for precise control of the system's haptic feedback module.", "detail": "", "kind": 7, "label": "HapticFeedback" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitViewController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls an iOS UIView.\n\nTypically created with [PlatformViewsService.initUiKitView].", "detail": "", "kind": 7, "label": "UiKitViewController" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] with UTF-8 encoded String messages.\n\nOn Android, messages will be represented using `java.util.String`.\nOn iOS, messages will be represented using `NSString`.", "detail": "", "kind": 7, "label": "StringCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewsRegistry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A registry responsible for generating unique identifier for platform views.\n\nA Flutter application has a single [PlatformViewsRegistry] which can be accesses\nthrough the [platformViewsRegistry] getter.\n\nSee also:\n\n * [PlatformView], a widget that shows a platform view.", "detail": "", "kind": 7, "label": "PlatformViewsRegistry" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An action the user has requested the text input control to perform.\n\nEach action represents a logical meaning, and also configures the soft\nkeyboard to display a certain kind of action button. The visual appearance\nof the action button might differ between versions of the same OS.\n\nDespite the logical meaning of each action, choosing a particular\n[TextInputAction] does not necessarily cause any specific behavior to\nhappen. It is up to the developer to ensure that the behavior that occurs\nwhen an action button is pressed is appropriate for the action button chosen.\n\nFor example: If the user presses the keyboard action button on iOS when it\nreads \"Emergency Call\", the result should not be a focus change to the next\nTextField. This behavior is not logically appropriate for a button that says\n\"Emergency Call\".\n\nSee [EditableText] for more information about customizing action button\nbehavior.\n\nMost [TextInputAction]s are supported equally by both Android and iOS.\nHowever, there is not a complete, direct mapping between Android's IME input\ntypes and iOS's keyboard return types. Therefore, some [TextInputAction]s\nare inappropriate for one of the platforms. If a developer chooses an\ninappropriate [TextInputAction] when running in debug mode, an error will be\nthrown. If the same thing is done in release mode, then instead of sending\nthe inappropriate value, Android will use \"unspecified\" on the platform\nside and iOS will use \"default\" on the platform side.\n\nSee also:\n\n * [TextInput], which configures the platform's keyboard setup.\n * [EditableText], which invokes callbacks when the action button is pressed.", "detail": "", "kind": 13, "label": "TextInputAction" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MethodCall", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An command object representing the invocation of a named method.", "detail": "", "kind": 7, "label": "MethodCall" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInput", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface to the system's text input control.", "detail": "", "kind": 7, "label": "TextInput" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LogicalKeyboardKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class with static values that describe the keys that are returned from\n[RawKeyEvent.logicalKey].\n\nThese represent *logical* keys, which are keys which are interpreted in the\ncontext of any modifiers, modes, or keyboard layouts which may be in effect.\n\nThis is contrast to [PhysicalKeyboardKey], which represents a physical key\nin a particular location on the keyboard, without regard for the modifier\nstate, mode, or keyboard layout.\n\nAs an example, if you wanted to implement an app where the \"Q\" key \"quit\"\nsomething, you'd want to look at the logical key to detect this, since you\nwould like to have it match the key with \"Q\" on it, instead of always\nlooking for \"the key next next to the TAB key\", since on a French keyboard,\nthe key next to the TAB key has an \"A\" on it.\n\nConversely, if you wanted a game where the key next to the CAPS LOCK (the\n\"A\" key on a QWERTY keyboard) moved the player to the left, you'd want to\nlook at the physical key to make sure that regardless of the character the\nkey produces, you got the key that is in that location on the keyboard.\n\nThis example shows how to detect if the user has selected the logical \"Q\"\nkey.\n\n```dart\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/services.dart';\n```\n\n```dart\n// The node used to request the keyboard focus.\nfinal FocusNode _focusNode = FocusNode();\n// The message to display.\nString _message;\n\n// Focus nodes need to be disposed.\n@override\nvoid dispose() {\n _focusNode.dispose();\n super.dispose();\n}\n\n// Handles the key events from the RawKeyboardListener and update the\n// _message.\nvoid _handleKeyEvent(RawKeyEvent event) {\n setState(() {\n if (event.logicalKey == LogicalKeyboardKey.keyQ) {\n _message = 'Pressed the \"Q\" key!';\n } else {\n if (kReleaseMode) {\n _message = 'Not a Q: Key label is \"${event.logicalKey.keyLabel ?? '<none>'}\"';\n } else {\n // This will only print useful information in debug mode.\n _message = 'Not a Q: Pressed ${event.logicalKey.debugName}';\n }\n }\n });\n}\n\n@override\nWidget build(BuildContext context) {\n final TextTheme textTheme = Theme.of(context).textTheme;\n return Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: DefaultTextStyle(\n style: textTheme.display1,\n child: RawKeyboardListener(\n focusNode: _focusNode,\n onKey: _handleKeyEvent,\n child: AnimatedBuilder(\n animation: _focusNode,\n builder: (BuildContext context, Widget child) {\n if (!_focusNode.hasFocus) {\n return GestureDetector(\n onTap: () {\n FocusScope.of(context).requestFocus(_focusNode);\n },\n child: Text('Tap to focus'),\n );\n }\n return Text(_message ?? 'Press a key');\n },\n ),\n ),\n ),\n );\n}\n```\nSee also:\n\n * [RawKeyEvent], the keyboard event object received by widgets that listen\n to keyboard events.\n * [RawKeyboardListener], a widget used to listen to and supply handlers for\n keyboard events.", "detail": "", "kind": 7, "label": "LogicalKeyboardKey" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemSoundType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sound provided by the system.", "detail": "", "kind": 13, "label": "SystemSoundType" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataLinux", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for Linux.\n\nDifferent window toolkit implementations can map to different key codes. This class\nwill use the correct mapping depending on the [toolkit] provided.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataLinux" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BinaryCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] with unencoded binary messages represented using [ByteData].\n\nOn Android, messages will be represented using `java.nio.ByteBuffer`.\nOn iOS, messages will be represented using `NSData`.\n\nWhen sending outgoing messages from Android, be sure to use direct `ByteBuffer`\nas opposed to indirect. The `wrap()` API provides indirect buffers by default\nand you will get empty `ByteData` objects in Dart.", "detail": "", "kind": 7, "label": "BinaryCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidPointerProperties", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Properties of an Android pointer.\n\nA Dart version of Android's [MotionEvent.PointerProperties](https://developer.android.com/reference/android/view/MotionEvent.PointerProperties).", "detail": "", "kind": 7, "label": "AndroidPointerProperties" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ApplicationSwitcherDescription", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a description of the application that is pertinent to the\nembedder's application switcher (also known as \"recent tasks\") user\ninterface.\n\nUsed by [SystemChrome.setApplicationSwitcherDescription].", "detail": "", "kind": 7, "label": "ApplicationSwitcherDescription" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LengthLimitingTextInputFormatter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] that prevents the insertion of more characters\n(currently defined as Unicode scalar values) than allowed.\n\nSince this formatter only prevents new characters from being added to the\ntext, it preserves the existing [TextEditingValue.selection].\n\n * [maxLength], which discusses the precise meaning of \"number of\n characters\" and how it may differ from the intuitive meaning.", "detail": "", "kind": 7, "label": "LengthLimitingTextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for platform-specific key event data.\n\nThis base class exists to have a common type to use for each of the\ntarget platform's key event data structures.\n\nSee also:\n\n * [RawKeyEventDataAndroid], a specialization for Android.\n * [RawKeyEventDataFuchsia], a specialization for Fuchsia.\n * [RawKeyDownEvent] and [RawKeyUpEvent], the classes that hold the\n reference to [RawKeyEventData] subclasses.\n * [RawKeyboard], which uses these interfaces to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventData" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidViewController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls an Android view.\n\nTypically created with [PlatformViewsService.initAndroidView].", "detail": "", "kind": 7, "label": "AndroidViewController" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MissingPluginException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Thrown to indicate that a platform interaction failed to find a handling\nplugin.\n\nSee also:\n\n * [MethodChannel.invokeMethod], which completes the returned future\n with a [MissingPluginException], if no plugin handler for the method call\n was found.\n * [OptionalMethodChannel.invokeMethod], which completes the returned future\n with null, if no plugin handler for the method call was found.", "detail": "", "kind": 7, "label": "MissingPluginException" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkAssetBundle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [AssetBundle] that loads resources over the network.\n\nThis asset bundle does not cache any resources, though the underlying\nnetwork stack may implement some level of caching itself.", "detail": "", "kind": 7, "label": "NetworkAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputConfiguration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls the visual appearance of the text input control.\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\ntext input is attached. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\nSee also:\n\n * [TextInput.attach]\n * [TextInputAction]", "detail": "", "kind": 7, "label": "TextInputConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipboardData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Data stored on the system clipboard.\n\nThe system clipboard can contain data of various media types. This data\nstructure currently supports only plain text data, in the [text] property.", "detail": "", "kind": 7, "label": "ClipboardData" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyHelper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Abstract class for window-specific key mappings.\n\nGiven that there might be multiple window toolkit implementations (GLFW,\nGTK, QT, etc), this creates a common interface for each of the\ndifferent toolkits.", "detail": "", "kind": 7, "label": "KeyHelper" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewCreatedCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for when a platform view was created.\n\n`id` is the platform view's unique identifier.", "detail": "(int id) → void", "kind": 7, "label": "PlatformViewCreatedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WhitelistingTextInputFormatter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] that allows only the insertion of whitelisted\ncharacters patterns.\n\nSince this formatter only removes characters from the text, it attempts to\npreserve the existing [TextEditingValue.selection] to values it would now\nfall at with the removed characters.\n\nSee also:\n\n * [BlacklistingTextInputFormatter], which uses a blacklist instead of a\n whitelist.", "detail": "", "kind": 7, "label": "WhitelistingTextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CachingAssetBundle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [AssetBundle] that permanently caches string and structured resources\nthat have been fetched.\n\nStrings (for [loadString] and [loadStructuredData]) are decoded as UTF-8.\nData that is cached is cached for the lifetime of the asset bundle\n(typically the lifetime of the application).\n\nBinary resources (from [load]) are not cached.", "detail": "", "kind": 7, "label": "CachingAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GLFWKeyHelper", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Helper class that uses GLFW-specific key mappings.", "detail": "", "kind": 7, "label": "GLFWKeyHelper" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemUiOverlayStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a preference for the style of the system overlays.\n\nUsed by [SystemChrome.setSystemUIOverlayStyle].", "detail": "", "kind": 7, "label": "SystemUiOverlayStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingCursorDragState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A floating cursor state the user has induced by force pressing an iOS\nkeyboard.", "detail": "", "kind": 13, "label": "FloatingCursorDragState" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewsService", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides access to the platform views service.\n\nThis service allows creating and controlling Android views.\n\nSee also: [PlatformView].", "detail": "", "kind": 7, "label": "PlatformViewsService" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemSound", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides access to the library of short system specific sounds for common\ntasks.", "detail": "", "kind": 7, "label": "SystemSound" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputConnection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for interacting with a text input control.\n\nSee also:\n\n * [TextInput.attach]", "detail": "", "kind": 7, "label": "TextInputConnection" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StandardMessageCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] using the Flutter standard binary encoding.\n\nSupported messages are acyclic values of these forms:\n\n * null\n * [bool]s\n * [num]s\n * [String]s\n * [Uint8List]s, [Int32List]s, [Int64List]s, [Float64List]s\n * [List]s of supported values\n * [Map]s from supported values to supported values\n\nDecoded values will use `List<dynamic>` and `Map<dynamic, dynamic>`\nirrespective of content.\n\nOn Android, messages are represented as follows:\n\n * null: null\n * [bool]\\: `java.lang.Boolean`\n * [int]\\: `java.lang.Integer` for values that are representable using 32-bit\n two's complement; `java.lang.Long` otherwise\n * [double]\\: `java.lang.Double`\n * [String]\\: `java.lang.String`\n * [Uint8List]\\: `byte[]`\n * [Int32List]\\: `int[]`\n * [Int64List]\\: `long[]`\n * [Float64List]\\: `double[]`\n * [List]\\: `java.util.ArrayList`\n * [Map]\\: `java.util.HashMap`\n\nOn iOS, messages are represented as follows:\n\n * null: nil\n * [bool]\\: `NSNumber numberWithBool:`\n * [int]\\: `NSNumber numberWithInt:` for values that are representable using\n 32-bit two's complement; `NSNumber numberWithLong:` otherwise\n * [double]\\: `NSNumber numberWithDouble:`\n * [String]\\: `NSString`\n * [Uint8List], [Int32List], [Int64List], [Float64List]\\:\n `FlutterStandardTypedData`\n * [List]\\: `NSArray`\n * [Map]\\: `NSDictionary`\n\nWhen sending a `java.math.BigInteger` from Java, it is converted into a\n[String] with the hexadecimal representation of the integer. (The value is\ntagged as being a big integer; subclasses of this class could be made to\nsupport it natively; see the discussion at [writeValue].) This codec does\nnot support sending big integers from Dart.\n\nThe codec is extensible by subclasses overriding [writeValue] and\n[readValueOfType].", "detail": "", "kind": 7, "label": "StandardMessageCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EventChannel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A named channel for communicating with platform plugins using event streams.\n\nStream setup requests are encoded into binary before being sent,\nand binary events and errors received are decoded into Dart values.\nThe [MethodCodec] used must be compatible with the one used by the platform\nplugin. This can be achieved by creating an `EventChannel` counterpart of\nthis channel on the platform side. The Dart type of events sent and received\nis `dynamic`, but only values supported by the specified [MethodCodec] can\nbe used.\n\nThe logical identity of the channel is given by its name. Identically named\nchannels will interfere with each other's communication.\n\nSee: <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "EventChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemUiOverlay", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a system overlay at a particular location.\n\nUsed by [SystemChrome.setEnabledSystemUIOverlays].", "detail": "", "kind": 13, "label": "SystemUiOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformAssetBundle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [AssetBundle] that loads resources using platform messages.", "detail": "", "kind": 7, "label": "PlatformAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModifierKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An enum describing the type of modifier key that is being pressed.\n\nSee also:\n\n * [RawKeyEventData.isModifierPressed], which accepts this enum as an\n argument.", "detail": "", "kind": 13, "label": "ModifierKey" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StandardMethodCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MethodCodec] using the Flutter standard binary encoding.\n\nThe standard codec is guaranteed to be compatible with the corresponding\nstandard codec for FlutterMethodChannels on the host platform. These parts\nof the Flutter SDK are evolved synchronously.\n\nValues supported as method arguments and result payloads are those supported\nby [StandardMessageCodec].", "detail": "", "kind": 7, "label": "StandardMethodCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MethodChannel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A named channel for communicating with platform plugins using asynchronous\nmethod calls.\n\nMethod calls are encoded into binary before being sent, and binary results\nreceived are decoded into Dart values. The [MethodCodec] used must be\ncompatible with the one used by the platform plugin. This can be achieved\nby creating a method channel counterpart of this channel on the\nplatform side. The Dart type of arguments and results is `dynamic`,\nbut only values supported by the specified [MethodCodec] can be used.\nThe use of unsupported values should be considered programming errors, and\nwill result in exceptions being thrown. The null value is supported\nfor all codecs.\n\nThe logical identity of the channel is given by its name. Identically named\nchannels will interfere with each other's communication.\n\nSee: <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "MethodChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataFuchsia", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for Fuchsia.\n\nThis object contains information about key events obtained from Fuchsia's\n`KeyData` interface.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataFuchsia" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MethodCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A codec for method calls and enveloped results.\n\nAll operations throw an exception, if conversion fails.\n\nSee also:\n\n * [MethodChannel], which use [MethodCodec]s for communication\n between Flutter and platform plugins.\n * [EventChannel], which use [MethodCodec]s for communication\n between Flutter and platform plugins.", "detail": "", "kind": 7, "label": "MethodCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontLoader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that enables the dynamic loading of fonts at runtime.\n\nThe [FontLoader] class provides a builder pattern, where the caller builds\nup the assets that make up a font family, then calls [load] to load the\nentire font family into a running Flutter application.", "detail": "", "kind": 7, "label": "FontLoader" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BasicMessageChannel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A named channel for communicating with platform plugins using asynchronous\nmessage passing.\n\nMessages are encoded into binary before being sent, and binary messages\nreceived are decoded into Dart values. The [MessageCodec] used must be\ncompatible with the one used by the platform plugin. This can be achieved\nby creating a basic message channel counterpart of this channel on the\nplatform side. The Dart type of messages sent and received is [T],\nbut only the values supported by the specified [MessageCodec] can be used.\nThe use of unsupported values should be considered programming errors, and\nwill result in exceptions being thrown. The null message is supported\nfor all codecs.\n\nThe logical identity of the channel is given by its name. Identically named\nchannels will interfere with each other's communication.\n\nSee: <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "BasicMessageChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputFormatFunction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Function signature expected for creating custom [TextInputFormatter]\nshorthands via [TextInputFormatter.withFunction];", "detail": "(TextEditingValue oldValue, TextEditingValue newValue) → TextEditingValue", "kind": 7, "label": "TextInputFormatFunction" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputClient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface to receive information from [TextInput].\n\nSee also:\n\n * [TextInput.attach]", "detail": "", "kind": 7, "label": "TextInputClient" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MessageCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A message encoding/decoding mechanism.\n\nBoth operations throw an exception, if conversion fails. Such situations\nshould be treated as programming errors.\n\nSee also:\n\n * [BasicMessageChannel], which use [MessageCodec]s for communication\n between Flutter and platform plugins.", "detail": "", "kind": 7, "label": "MessageCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyboardSide", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An enum describing the side of the keyboard that a key is on, to allow\ndiscrimination between which key is pressed (e.g. the left or right SHIFT\nkey).\n\nSee also:\n\n * [RawKeyEventData.isModifierPressed], which accepts this enum as an\n argument.", "detail": "", "kind": 13, "label": "KeyboardSide" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServicesBinding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Listens for platform messages and directs them to [BinaryMessages].\n\nThe [ServicesBinding] also registers a [LicenseEntryCollector] that exposes\nthe licenses found in the `LICENSE` file stored at the root of the asset\nbundle, and implements the `ext.flutter.evict` service extension (see\n[evict]).", "detail": "", "kind": 7, "label": "ServicesBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JSONMethodCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MethodCodec] with UTF-8 encoded JSON method calls and result envelopes.\n\nValues supported as method arguments and result payloads are those supported\nby [JSONMessageCodec].", "detail": "", "kind": 7, "label": "JSONMethodCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlacklistingTextInputFormatter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] that prevents the insertion of blacklisted\ncharacters patterns.\n\nInstances of blacklisted characters found in the new [TextEditingValue]s\nwill be replaced with the [replacementString] which defaults to the empty\nstring.\n\nSince this formatter only removes characters from the text, it attempts to\npreserve the existing [TextEditingValue.selection] to values it would now\nfall at with the removed characters.\n\nSee also:\n\n * [WhitelistingTextInputFormatter], which uses a whitelist instead of a\n blacklist.", "detail": "", "kind": 7, "label": "BlacklistingTextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Thrown to indicate that a platform interaction failed in the platform\nplugin.\n\nSee also:\n\n * [MethodCodec], which throws a [PlatformException], if a received result\n envelope represents an error.\n * [MethodChannel.invokeMethod], which completes the returned future\n with a [PlatformException], if invoking the platform plugin method\n results in an error envelope.\n * [EventChannel.receiveBroadcastStream], which emits\n [PlatformException]s as error events, whenever an event received from the\n platform plugin is wrapped in an error envelope.", "detail": "", "kind": 7, "label": "PlatformException" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemChannels", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform channels used by the Flutter system.", "detail": "", "kind": 7, "label": "SystemChannels" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeviceOrientation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a particular device orientation.\n\nTo determine which values correspond to which orientations, first position\nthe device in its default orientation (this is the orientation that the\nsystem first uses for its boot logo, or the orientation in which the\nhardware logos or markings are upright, or the orientation in which the\ncameras are at the top). If this is a portrait orientation, then this is\n[portraitUp]. Otherwise, it's [landscapeLeft]. As you rotate the device by\n90 degrees in a counter-clockwise direction around the axis that pierces the\nscreen, you step through each value in this enum in the order given.\n\nFor a device with a landscape default orientation, the orientation obtained\nby rotating the device 90 degrees clockwise from its default orientation is\n[portraitUp].\n\nUsed by [SystemChrome.setPreferredOrientations].", "detail": "", "kind": 13, "label": "DeviceOrientation" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A collection of resources used by the application.\n\nAsset bundles contain resources, such as images and strings, that can be\nused by an application. Access to these resources is asynchronous so that\nthey can be transparently loaded over a network (e.g., from a\n[NetworkAssetBundle]) or from the local file system without blocking the\napplication's user interface.\n\nApplications have a [rootBundle], which contains the resources that were\npackaged with the application when it was built. To add resources to the\n[rootBundle] for your application, add them to the `assets` subsection of\nthe `flutter` section of your application's `pubspec.yaml` manifest.\n\nFor example:\n\n```yaml\nname: my_awesome_application\nflutter:\n assets:\n - images/hamilton.jpeg\n - images/lafayette.jpeg\n```\n\nRather than accessing the [rootBundle] global static directly, consider\nobtaining the [AssetBundle] for the current [BuildContext] using\n[DefaultAssetBundle.of]. This layer of indirection lets ancestor widgets\nsubstitute a different [AssetBundle] (e.g., for testing or localization) at\nruntime rather than directly replying upon the [rootBundle] created at build\ntime. For convenience, the [WidgetsApp] or [MaterialApp] widget at the top\nof the widget hierarchy configures the [DefaultAssetBundle] to be the\n[rootBundle].\n\nSee also:\n\n * [DefaultAssetBundle]\n * [NetworkAssetBundle]\n * [rootBundle]", "detail": "", "kind": 7, "label": "AssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataAndroid", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for Android.\n\nThis object contains information about key events obtained from Android's\n`KeyEvent` interface.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataAndroid" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemChrome", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls specific aspects of the operating system's graphical interface and\nhow it interacts with the application.", "detail": "", "kind": 7, "label": "SystemChrome" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JSONMessageCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] with UTF-8 encoded JSON messages.\n\nSupported messages are acyclic values of these forms:\n\n * null\n * [bool]s\n * [num]s\n * [String]s\n * [List]s of supported values\n * [Map]s from strings to supported values\n\nOn Android, messages are decoded using the `org.json` library.\nOn iOS, messages are decoded using the `NSJSONSerialization` library.\nIn both cases, the use of top-level simple messages (null, [bool], [num],\nand [String]) is supported (by the Flutter SDK). The decoded value will be\nnull/nil for null, and identical to what would result from decoding a\nsingleton JSON array with a Boolean, number, or string value, and then\nextracting its single element.", "detail": "", "kind": 7, "label": "JSONMessageCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A fixed-length, random-access sequence of bytes that also provides random\nand unaligned access to the fixed-width integers and floating point\nnumbers represented by those bytes.\n\n`ByteData` may be used to pack and unpack data from external sources\n(such as networks or files systems), and to process large quantities\nof numerical data more efficiently than would be possible\nwith ordinary [List] implementations.\n`ByteData` can save space, by eliminating the need for object headers,\nand time, by eliminating the need for data copies.\nFinally, `ByteData` may be used to intentionally reinterpret the bytes\nrepresenting one arithmetic type as another.\nFor example this code fragment determine what 32-bit signed integer\nis represented by the bytes of a 32-bit floating point number:\n\n var buffer = new Uint8List(8).buffer;\n var bdata = new ByteData.view(buffer);\n bdata.setFloat32(0, 3.04);\n int huh = bdata.getInt32(0);", "detail": "", "kind": 7, "label": "ByteData" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clipboard", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Utility methods for interacting with the system's clipboard.", "detail": "", "kind": 7, "label": "Clipboard" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidMotionEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A Dart version of Android's [MotionEvent](https://developer.android.com/reference/android/view/MotionEvent).", "detail": "", "kind": 7, "label": "AndroidMotionEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataMacOs", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for macOS.\n\nThis object contains information about key events obtained from macOS's\n`NSEvent` interface.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataMacOs" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboard", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for listening to raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which makes them provide a high level of\nfidelity but a low level of portability.\n\nA [RawKeyboard] is useful for listening to raw key events and hardware\nbuttons that are represented as keys. Typically used by games and other apps\nthat use keyboards for purposes other than text entry.\n\nSee also:\n\n * [RawKeyDownEvent] and [RawKeyUpEvent], the classes used to describe\n specific raw key events.\n * [RawKeyboardListener], a widget that listens for raw key events.\n * [SystemChannels.keyEvent], the low-level channel used for receiving\n events from the system.", "detail": "", "kind": 7, "label": "RawKeyboard" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyDownEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The user has pressed a key on the keyboard.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OptionalMethodChannel", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [MethodChannel] that ignores missing platform plugins.\n\nWhen [invokeMethod] fails to find the platform plugin, it returns null\ninstead of throwing an exception.", "detail": "", "kind": 7, "label": "OptionalMethodChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawFloatingCursorPoint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current state and position of the floating cursor.", "detail": "", "kind": 7, "label": "RawFloatingCursorPoint" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextCapitalization", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures how the platform keyboard will select an uppercase or\nlowercase keyboard.\n\nOnly supports text keyboards, other keyboard types will ignore this\nconfiguration. Capitalization is locale-aware.", "detail": "", "kind": 13, "label": "TextCapitalization" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalKeyboardKey", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class with static values that describe the keys that are returned from\n[RawKeyEvent.physicalKey].\n\nThese represent *physical* keys, which are keys which represent a particular\nkey location on a QWERTY keyboard. It ignores any modifiers, modes, or\nkeyboard layouts which may be in effect. This is contrast to\n[LogicalKeyboardKey], which represents a logical key interpreted in the\ncontext of modifiers, modes, and/or keyboard layouts.\n\nAs an example, if you wanted a game where the key next to the CAPS LOCK (the\n\"A\" key on a QWERTY keyboard) moved the player to the left, you'd want to\nlook at the physical key to make sure that regardless of the character the\nkey produces, you got the key that is in that location on the keyboard.\n\nConversely, if you wanted to implement an app where the \"Q\" key \"quit\"\nsomething, you'd want to look at the logical key to detect this, since you\nwould like to have it match the key with \"Q\" on it, instead of always\nlooking for \"the key next next to the TAB key\", since on a French keyboard,\nthe key next to the TAB key has an \"A\" on it.\n\nThis example shows how to detect if the user has selected the physical key\nto the right of the CAPS LOCK key.\n\n```dart\nimport 'package:flutter/services.dart';\n```\n\n```dart\n// The node used to request the keyboard focus.\nfinal FocusNode _focusNode = FocusNode();\n// The message to display.\nString _message;\n\n// Focus nodes need to be disposed.\n@override\nvoid dispose() {\n _focusNode.dispose();\n super.dispose();\n}\n\n// Handles the key events from the RawKeyboardListener and update the\n// _message.\nvoid _handleKeyEvent(RawKeyEvent event) {\n setState(() {\n if (event.physicalKey == PhysicalKeyboardKey.keyA) {\n _message = 'Pressed the key next to CAPS LOCK!';\n } else {\n _message = 'Wrong key.';\n }\n });\n}\n\n@override\nWidget build(BuildContext context) {\n final TextTheme textTheme = Theme.of(context).textTheme;\n return Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: DefaultTextStyle(\n style: textTheme.display1,\n child: RawKeyboardListener(\n focusNode: _focusNode,\n onKey: _handleKeyEvent,\n child: AnimatedBuilder(\n animation: _focusNode,\n builder: (BuildContext context, Widget child) {\n if (!_focusNode.hasFocus) {\n return GestureDetector(\n onTap: () {\n FocusScope.of(context).requestFocus(_focusNode);\n },\n child: Text('Tap to focus'),\n );\n }\n return Text(_message ?? 'Press a key');\n },\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [RawKeyEvent], the keyboard event object received by widgets that listen\n to keyboard events.\n * [RawKeyboardListener], a widget used to listen to and supply handlers for\n keyboard events.", "detail": "", "kind": 7, "label": "PhysicalKeyboardKey" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BinaryMessages", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sends binary messages to and receives binary messages from platform plugins.\n\nSee also:\n\n * [BasicMessageChannel], which provides basic messaging services similar to\n `BinaryMessages`, but with pluggable message codecs in support of sending\n strings or semi-structured messages.\n * [MethodChannel], which provides platform communication using asynchronous\n method calls.\n * [EventChannel], which provides platform communication using event streams.\n * <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "BinaryMessages" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidPointerCoords", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Position information for an Android pointer.\n\nA Dart version of Android's [MotionEvent.PointerCoords](https://developer.android.com/reference/android/view/MotionEvent.PointerCoords).", "detail": "", "kind": 7, "label": "AndroidPointerCoords" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputFormatter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] can be optionally injected into an [EditableText]\nto provide as-you-type validation and formatting of the text being edited.\n\nText modification should only be applied when text is being committed by the\nIME and not on text under composition (i.e., only when\n[TextEditingValue.composing] is collapsed).\n\nConcrete implementations [BlacklistingTextInputFormatter], which removes\nblacklisted characters upon edit commit, and\n[WhitelistingTextInputFormatter], which only allows entries of whitelisted\ncharacters, are provided.\n\nTo create custom formatters, extend the [TextInputFormatter] class and\nimplement the [formatEditUpdate] method.\n\nSee also:\n\n * [EditableText] on which the formatting apply.\n * [BlacklistingTextInputFormatter], a provided formatter for blacklisting\n characters.\n * [WhitelistingTextInputFormatter], a provided formatter for whitelisting\n characters.", "detail": "", "kind": 7, "label": "TextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemNavigator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls specific aspects of the system navigation stack.", "detail": "", "kind": 7, "label": "SystemNavigator" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyUpEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The user has released a key on the keyboard.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyUpEvent" }, { "data": { "autoImportDisplayUri": "package:http/browser_client.dart", "libraryId": 290, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BrowserClient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A `dart:html`-based HTTP client that runs in the browser and is backed by\nXMLHttpRequests.\n\nThis client inherits some of the limitations of XMLHttpRequest. It ignores\nthe [BaseRequest.contentLength], [BaseRequest.persistentConnection],\n[BaseRequest.followRedirects], and [BaseRequest.maxRedirects] fields. It is\nalso unable to stream requests or responses; a request will only be sent and\na response will only be returned once all the data is available.", "detail": "", "kind": 7, "label": "BrowserClient" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Request", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP request where the entire request body is known in advance.", "detail": "", "kind": 7, "label": "Request" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BaseClient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The abstract base class for an HTTP client. This is a mixin-style class;\nsubclasses only need to implement [send] and maybe [close], and then they\nget various convenience methods for free.", "detail": "", "kind": 7, "label": "BaseClient" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Client", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The interface for HTTP clients that take care of maintaining persistent\nconnections across multiple requests to the same server. If you only need to\nsend a single request, it's usually easier to use [head], [get], [post],\n[put], [patch], or [delete] instead.\n\nWhen creating an HTTP client class with additional functionality, you must\nextend [BaseClient] rather than [Client]. In most cases, you can wrap\nanother instance of [Client] and add functionality on top of that. This\nallows all classes implementing [Client] to be mutually composable.", "detail": "", "kind": 7, "label": "Client" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultipartFile", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A file to be uploaded as part of a [MultipartRequest]. This doesn't need to\ncorrespond to a physical file.", "detail": "", "kind": 7, "label": "MultipartFile" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BaseResponse", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base class for HTTP responses.\n\nSubclasses of [BaseResponse] are usually not constructed manually; instead,\nthey're returned by [BaseClient.send] or other HTTP client methods.", "detail": "", "kind": 7, "label": "BaseResponse" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Response", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP response where the entire response body is known in advance.", "detail": "", "kind": 7, "label": "Response" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamedRequest", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP request where the request body is sent asynchronously after the\nconnection has been established and the headers have been sent.\n\nWhen the request is sent via [BaseClient.send], only the headers and\nwhatever data has already been written to [StreamedRequest.stream] will be\nsent immediately. More data will be sent as soon as it's written to\n[StreamedRequest.sink], and when the sink is closed the request will end.", "detail": "", "kind": 7, "label": "StreamedRequest" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamedResponse", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP response where the response body is received asynchronously after\nthe headers have been received.", "detail": "", "kind": 7, "label": "StreamedResponse" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClientException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An exception caused by an error in a pkg/http client.", "detail": "", "kind": 7, "label": "ClientException" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BaseRequest", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base class for HTTP requests.\n\nSubclasses of [BaseRequest] can be constructed manually and passed to\n[BaseClient.send], which allows the user to provide fine-grained control\nover the request properties. However, usually it's easier to use convenience\nmethods like [get] or [BaseClient.get].", "detail": "", "kind": 7, "label": "BaseRequest" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteStream", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A stream of chunks of bytes representing a single piece of data.", "detail": "", "kind": 7, "label": "ByteStream" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultipartRequest", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A `multipart/form-data` request. Such a request has both string [fields],\nwhich function as normal form fields, and (potentially streamed) binary\n[files].\n\nThis request automatically sets the Content-Type header to\n`multipart/form-data`. This value will override any value set by the user.\n\n var uri = Uri.parse(\"http://pub.dartlang.org/packages/create\");\n var request = new http.MultipartRequest(\"POST\", uri);\n request.fields['user'] = 'nweiz@google.com';\n request.files.add(new http.MultipartFile.fromFile(\n 'package',\n new File('build/package.tar.gz'),\n contentType: new MediaType('application', 'x-tar'));\n request.send().then((response) {\n if (response.statusCode == 200) print(\"Uploaded!\");\n });", "detail": "", "kind": 7, "label": "MultipartRequest" }, { "data": { "autoImportDisplayUri": "package:http/io_client.dart", "libraryId": 275, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOClient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A `dart:io`-based HTTP client.\n\nThis is the default client when running on the command line.", "detail": "", "kind": 7, "label": "IOClient" }, { "data": { "autoImportDisplayUri": "package:http/testing.dart", "libraryId": 273, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MockClient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mock HTTP client designed for use when testing code that uses\n[BaseClient]. This client allows you to define a handler callback for all\nrequests that are made through it so that you can mock a server without\nhaving to send real HTTP requests.", "detail": "", "kind": 7, "label": "MockClient" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterStroke", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorArtboard", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorArtboard" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorImage", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorImage" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterGradientFill", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterGradientFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterFill", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorShape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorShape" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActorNode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ActorNode" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorEllipse", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorEllipse" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterPath", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterPath" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterColorStroke", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterColorStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActor" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterPathPointsPath", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterPathPointsPath" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PropertyAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "PropertyAnimation" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterGradientStroke", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterGradientStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorTriangle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorTriangle" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterRadialStroke", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterRadialStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterRadialFill", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterRadialFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEventArgs", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "AnimationEventArgs" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorRectangle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorRectangle" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActorClip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ActorClip" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActorAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ActorAnimation" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentAnimation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ComponentAnimation" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorDrawable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorDrawable" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterColorFill", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterColorFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorPolygon", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorPolygon" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorStar", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorStar" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorPath", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorPath" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_controller.dart", "libraryId": 268, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[FlareController] is a general-purpose interface for customizing\nthe behavior of a Flare animation at runtime.\n\nIt provides three methods\n- [initialize()] is called at initialization time.\n- [setViewTransform()] and [advance()] are called every frame.\n\n[FlareController]s can be attached to [FlareActor] widgets\nas an optional parameter.\ne.g.:\n```\nFlareActor(\n \"flare_file.flr\",\n controller: _myCustomController\n)\n```\n\nA basic implementation can be found in [FlareControls].", "detail": "", "kind": 7, "label": "FlareController" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_actor.dart", "libraryId": 267, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareActor", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlareActor" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_actor.dart", "libraryId": 267, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareAnimationLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlareAnimationLayer" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_actor.dart", "libraryId": 267, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareActorRenderObject", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlareActorRenderObject" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_controls.dart", "libraryId": 266, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareControls", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[FlareControls] is a concrete implementation of the [FlareController].\n\nThis controller will provide some basic functionality, such as\nplaying an animation, and advancing every frame. If multiple animations are\nplaying at the same time, this controller will mix them.", "detail": "", "kind": 7, "label": "FlareControls" }, { "data": { "autoImportDisplayUri": "package:sensors/sensors.dart", "libraryId": 265, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserAccelerometerEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "UserAccelerometerEvent" }, { "data": { "autoImportDisplayUri": "package:sensors/sensors.dart", "libraryId": 265, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GyroscopeEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "GyroscopeEvent" }, { "data": { "autoImportDisplayUri": "package:sensors/sensors.dart", "libraryId": 265, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccelerometerEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "AccelerometerEvent" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Wrapper around a class that implements [Map] that only exposes `Map`\nmembers.\n\nA simple wrapper that delegates all `Map` members to the map provided in the\nconstructor.\n\nBase for delegating map implementations like [UnmodifiableMapView].", "detail": "", "kind": 7, "label": "MapView" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedListEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An object that can be an element in a [LinkedList].\n\nAll elements of a `LinkedList` must extend this class.\nThe class provides the internal links that link elements together\nin the `LinkedList`, and a reference to the linked list itself\nthat an element is currently part of.\n\nAn entry can be in at most one linked list at a time.\nWhile an entry is in a linked list, the [list] property points to that\nlinked list, and otherwise the `list` property is `null`.\n\nWhen created, an entry is not in any linked list.", "detail": "", "kind": 7, "label": "LinkedListEntry" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableMapView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Map] that disallow modifying the map.\n\nA wrapper around a `Map` that forwards all members to the map provided in\nthe constructor, except for operations that modify the map.\nModifying operations throw instead.", "detail": "", "kind": 7, "label": "UnmodifiableMapView" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base implementation of [Set].\n\nThis class provides a base implementation of a `Set` that depends only\non the abstract members: [add], [contains], [lookup], [remove],\n[iterator], [length] and [toSet].\n\nSome of the methods assume that `toSet` creates a modifiable set.\nIf using this base class for an unmodifiable set,\nwhere `toSet` should return an unmodifiable set,\nit's necessary to reimplement\n[retainAll], [union], [intersection] and [difference].\n\nImplementations of `Set` using this base should consider also implementing\n`clear` in constant time. The default implementation works by removing every\nelement.", "detail": "", "kind": 7, "label": "SetBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableMapBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Basic implementation of an unmodifiable [Map].\n\nThis class has a basic implementation of all but two of the members of\nan umodifiable [Map].\nA simple unmodifiable `Map` class can be implemented by extending this\nclass and implementing `keys` and `operator[]`.\n\nModifying operations throw when used.\nThe remaining non-modifying operations are implemented in terms of `keys`\nand `operator[]`.\n\nThe `keys` iterable should have efficient [Iterable.length] and\n[Iterable.contains] operations, and it should catch concurrent modifications\nof the keys while iterating.\n\nA more efficient implementation is usually possible by overriding\nsome of the other members as well.", "detail": "", "kind": 7, "label": "UnmodifiableMapBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleLinkedQueueEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An entry in a doubly linked list. It contains a pointer to the next\nentry, the previous entry, and the boxed element.", "detail": "", "kind": 7, "label": "DoubleLinkedQueueEntry" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for implementing a [Map].\n\nThis class has a basic implementation of all but five of the members of\n[Map].\nA basic `Map` class can be implemented by extending this class and\nimplementing `keys`, `operator[]`, `operator[]=`, `remove` and `clear`.\nThe remaining operations are implemented in terms of these five.\n\nThe `keys` iterable should have efficient [Iterable.length] and\n[Iterable.contains] operations, and it should catch concurrent modifications\nof the keys while iterating.\n\nA more efficient implementation is usually possible by overriding\nsome of the other members as well.", "detail": "", "kind": 7, "label": "MapBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HashSet", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An unordered hash-table based [Set] implementation.\n\nThe elements of a `HashSet` must have consistent equality\nand hashCode implementations. This means that the equals operation\nmust define a stable equivalence relation on the elements (reflexive,\nsymmetric, transitive, and consistent over time), and that the hashCode\nmust consistent with equality, so that the same for objects that are\nconsidered equal.\n\nThe set allows `null` as an element.\n\nMost simple operations on `HashSet` are done in (potentially amortized)\nconstant time: [add], [contains], [remove], and [length], provided the hash\ncodes of objects are well distributed.\n\nThe iteration order of the set is not specified and depends on\nthe hashcodes of the provided elements. However, the order is stable:\nmultiple iterations over the same set produce the same order, as long as\nthe set is not modified.", "detail": "", "kind": 7, "label": "HashSet" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListQueue", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "List based [Queue].\n\nKeeps a cyclic buffer of elements, and grows to a larger buffer when\nit fills up. This guarantees constant time peek and remove operations, and\namortized constant time add operations.\n\nThe structure is efficient for any queue or stack usage.", "detail": "", "kind": 7, "label": "ListQueue" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Abstract implementation of a list.\n\n`ListBase` can be used as a base class for implementing the `List`\ninterface.\n\nAll operations are defined in terms of `length`, `operator[]`,\n`operator[]=` and `length=`, which need to be implemented.\n\n*NOTICE*: Forwarding just these four operations to a normal growable [List]\n(as created by `new List()`) will give very bad performance for `add` and\n`addAll` operations of `ListBase`. These operations are implemented by\nincreasing the length of the list by one for each `add` operation, and\nrepeatedly increasing the length of a growable list is not efficient.\nTo avoid this, either override 'add' and 'addAll' to also forward directly\nto the growable list, or, preferably, use `DelegatingList` from\n\"package:collection/wrappers.dart\" instead.", "detail": "", "kind": 7, "label": "ListBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HashMap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A hash-table based implementation of [Map].\n\nThe keys of a `HashMap` must have consistent [Object.==]\nand [Object.hashCode] implementations. This means that the `==` operator\nmust define a stable equivalence relation on the keys (reflexive,\nsymmetric, transitive, and consistent over time), and that `hashCode`\nmust be the same for objects that are considered equal by `==`.\n\nThe map allows `null` as a key.\n\nIterating the map's keys, values or entries (through [forEach])\nmay happen in any order.\nThe iteration order only changes when the map is modified.\nValues are iterated in the same order as their associated keys,\nso iterating the [keys] and [values] in parallel\nwill give matching key and value pairs.", "detail": "", "kind": 7, "label": "HashMap" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "This [Iterable] mixin implements all [Iterable] members except `iterator`.\n\nAll other methods are implemented in terms of `iterator`.", "detail": "", "kind": 7, "label": "IterableMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base implementation of a [List] class.\n\n`ListMixin` can be used as a mixin to make a class implement\nthe `List` interface.\n\nThis implements all read operations using only the `length` and\n`operator[]` members. It implements write operations using those and\n`length=` and `operator[]=`\n\n*NOTICE*: Forwarding just these four operations to a normal growable [List]\n(as created by `new List()`) will give very bad performance for `add` and\n`addAll` operations of `ListBase`. These operations are implemented by\nincreasing the length of the list by one for each `add` operation, and\nrepeatedly increasing the length of a growable list is not efficient.\nTo avoid this, either override 'add' and 'addAll' to also forward directly\nto the growable list, or, if possible, use `DelegatingList` from\n\"package:collection/wrappers.dart\" instead.", "detail": "", "kind": 7, "label": "ListMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedHashSet", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [LinkedHashSet] is a hash-table based [Set] implementation.\n\nThe `LinkedHashSet` also keep track of the order that elements were inserted\nin, and iteration happens in first-to-last insertion order.\n\nThe elements of a `LinkedHashSet` must have consistent [Object.==]\nand [Object.hashCode] implementations. This means that the `==` operator\nmust define a stable equivalence relation on the elements (reflexive,\nsymmetric, transitive, and consistent over time), and that `hashCode`\nmust be the same for objects that are considered equal by `==`.\n\nThe set allows `null` as an element.\n\nIteration of elements is done in element insertion order.\nAn element that was added after another will occur later in the iteration.\nAdding an element that is already in the set\ndoes not change its position in the iteration order,\nbut removing an element and adding it again,\nwill make it the last element of an iteration.\n\nMost simple operations on `HashSet` are done in (potentially amortized)\nconstant time: [add], [contains], [remove], and [length], provided the hash\ncodes of objects are well distributed..", "detail": "", "kind": 7, "label": "LinkedHashSet" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An unmodifiable [List] view of another List.\n\nThe source of the elements may be a [List] or any [Iterable] with\nefficient [Iterable.length] and [Iterable.elementAt].", "detail": "", "kind": 7, "label": "UnmodifiableListView" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleLinkedQueue", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Queue] implementation based on a double-linked list.\n\nAllows constant time add, remove-at-ends and peek operations.", "detail": "", "kind": 7, "label": "DoubleLinkedQueue" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedHashMap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A hash-table based implementation of [Map].\n\nThe insertion order of keys is remembered,\nand keys are iterated in the order they were inserted into the map.\nValues are iterated in their corresponding key's order.\nChanging a key's value, when the key is already in the map,\ndoes not change the iteration order,\nbut removing the key and adding it again\nwill make it be last in the iteration order.\n\nThe keys of a `LinkedHashMap` must have consistent [Object.==]\nand [Object.hashCode] implementations. This means that the `==` operator\nmust define a stable equivalence relation on the keys (reflexive,\nsymmetric, transitive, and consistent over time), and that `hashCode`\nmust be the same for objects that are considered equal by `==`.\n\nThe map allows `null` as a key.", "detail": "", "kind": 7, "label": "LinkedHashMap" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Queue", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Queue] is a collection that can be manipulated at both ends. One\ncan iterate over the elements of a queue through [forEach] or with\nan [Iterator].\n\nIt is generally not allowed to modify the queue (add or remove entries)\nwhile an operation on the queue is being performed, for example during a\ncall to [forEach].\nModifying the queue while it is being iterated will most likely break the\niteration.\nThis goes both for using the [iterator] directly, or for iterating an\n`Iterable` returned by a method like [map] or [where].", "detail": "", "kind": 7, "label": "Queue" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Mixin implementing a [Map].\n\nThis mixin has a basic implementation of all but five of the members of\n[Map].\nA basic `Map` class can be implemented by mixin in this class and\nimplementing `keys`, `operator[]`, `operator[]=`, `remove` and `clear`.\nThe remaining operations are implemented in terms of these five.\n\nThe `keys` iterable should have efficient [Iterable.length] and\n[Iterable.contains] operations, and it should catch concurrent modifications\nof the keys while iterating.\n\nA more efficient implementation is usually possible by overriding\nsome of the other members as well.", "detail": "", "kind": 7, "label": "MapMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SplayTreeSet", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Set] of objects that can be ordered relative to each other.\n\nThe set is based on a self-balancing binary tree. It allows most operations\nin amortized logarithmic time.\n\nElements of the set are compared using the `compare` function passed in\nthe constructor, both for ordering and for equality.\nIf the set contains only an object `a`, then `set.contains(b)`\nwill return `true` if and only if `compare(a, b) == 0`,\nand the value of `a == b` is not even checked.\nIf the compare function is omitted, the objects are assumed to be\n[Comparable], and are compared using their [Comparable.compareTo] method.\nNon-comparable objects (including `null`) will not work as an element\nin that case.", "detail": "", "kind": 7, "label": "SplayTreeSet" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Mixin implementation of [Set].\n\nThis class provides a base implementation of a `Set` that depends only\non the abstract members: [add], [contains], [lookup], [remove],\n[iterator], [length] and [toSet].\n\nSome of the methods assume that `toSet` creates a modifiable set.\nIf using this mixin for an unmodifiable set,\nwhere `toSet` should return an unmodifiable set,\nit's necessary to reimplement\n[retainAll], [union], [intersection] and [difference].\n\nImplementations of `Set` using this mixin should consider also implementing\n`clear` in constant time. The default implementation works by removing every\nelement.", "detail": "", "kind": 7, "label": "SetMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A specialized double-linked list of elements that extends [LinkedListEntry].\n\nThis is not a generic data structure. It only accepts elements that extend\nthe [LinkedListEntry] class. See the [Queue] implementations for generic\ncollections that allow constant time adding and removing at the ends.\n\nThis is not a [List] implementation. Despite its name, this class does not\nimplement the [List] interface. It does not allow constant time lookup by\nindex.\n\nBecause the elements themselves contain the links of this linked list,\neach element can be in only one list at a time. To add an element to another\nlist, it must first be removed from its current list (if any).\n\nIn return, each element knows its own place in the linked list, as well as\nwhich list it is in. This allows constant time\n[LinkedListEntry.insertAfter], [LinkedListEntry.insertBefore] and\n[LinkedListEntry.unlink] operations when all you have is the element.\n\nA `LinkedList` also allows constant time adding and removing at either end,\nand a constant time length getter.", "detail": "", "kind": 7, "label": "LinkedList" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HasNextIterator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [HasNextIterator] class wraps an [Iterator] and provides methods to\niterate over an object using `hasNext` and `next`.\n\nAn [HasNextIterator] does not implement the [Iterator] interface.", "detail": "", "kind": 7, "label": "HasNextIterator" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for implementing [Iterable].\n\nThis class implements all methods of [Iterable], except [Iterable.iterator],\nin terms of `iterator`.", "detail": "", "kind": 7, "label": "IterableBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SplayTreeMap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Map] of objects that can be ordered relative to each other.\n\nThe map is based on a self-balancing binary tree. It allows most operations\nin amortized logarithmic time.\n\nKeys of the map are compared using the `compare` function passed in\nthe constructor, both for ordering and for equality.\nIf the map contains only the key `a`, then `map.containsKey(b)`\nwill return `true` if and only if `compare(a, b) == 0`,\nand the value of `a == b` is not even checked.\nIf the compare function is omitted, the objects are assumed to be\n[Comparable], and are compared using their [Comparable.compareTo] method.\nNon-comparable objects (including `null`) will not work as keys\nin that case.\n\nTo allow calling [operator []], [remove] or [containsKey] with objects\nthat are not supported by the `compare` function, an extra `isValidKey`\npredicate function can be supplied. This function is tested before\nusing the `compare` function on an argument value that may not be a [K]\nvalue. If omitted, the `isValidKey` function defaults to testing if the\nvalue is a [K].", "detail": "", "kind": 7, "label": "SplayTreeMap" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimelineSyncFunction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A typedef for the function argument to [Timeline.timeSync].", "detail": "() → T", "kind": 7, "label": "TimelineSyncFunction" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Metrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "Metrics" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Service", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Access information about the service protocol and control the web server\nthat provides access to the services provided by the Dart VM for\ndebugging and inspecting Dart programs.", "detail": "", "kind": 7, "label": "Service" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A class to represent Flow events.\n\n[Flow] objects are used to thread flow events between timeline slices,\nfor example, those created with the [Timeline] class below. Adding\n[Flow] objects cause arrows to be drawn between slices in Chrome's trace\nviewer. The arrows start at e.g [Timeline] events that are passed a\n[Flow.begin] object, go through [Timeline] events that are passed a\n[Flow.step] object, and end at [Timeline] events that are passed a\n[Flow.end] object, all having the same [Flow.id]. For example:\n\n```dart\nvar flow = Flow.begin();\nTimeline.timeSync('flow_test', () {\n doSomething();\n}, flow: flow);\n\nTimeline.timeSync('flow_test', () {\n doSomething();\n}, flow: Flow.step(flow.id));\n\nTimeline.timeSync('flow_test', () {\n doSomething();\n}, flow: Flow.end(flow.id));\n```", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Counter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A changing value. Initial value is 0.0.", "detail": "", "kind": 7, "label": "Counter" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserTag", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A UserTag can be used to group samples in the Observatory profiler.", "detail": "", "kind": 7, "label": "UserTag" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServiceProtocolInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Service protocol is the protocol that a client like the Observatory\ncould use to access the services provided by the Dart VM for\ndebugging and inspecting Dart programs. This class encapsulates the\nversion number and Uri for accessing this service.", "detail": "", "kind": 7, "label": "ServiceProtocolInfo" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimelineTask", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An asynchronous task on the timeline. An asynchronous task can have many\n(nested) synchronous operations. Synchronous operations can live longer than\nthe current isolate event. To pass a [TimelineTask] to another isolate,\nyou must first call [pass] to get the task id and then construct a new\n[TimelineTask] in the other isolate.", "detail": "", "kind": 7, "label": "TimelineTask" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gauge", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A measured value with a min and max. Initial value is min. Value will\nbe clamped to the interval [min, max].", "detail": "", "kind": 7, "label": "Gauge" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Metric", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Abstract [Metric] class. Metric names must be unique, are hierarchical,\nand use periods as separators. For example, 'a.b.c'. Uniqueness is only\nenforced when a Metric is registered. The name of a metric cannot contain\nthe slash ('/') character.", "detail": "", "kind": 7, "label": "Metric" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServiceExtensionResponse", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A response to a service protocol extension RPC.\n\nIf the RPC was successful, use [ServiceExtensionResponse.result], otherwise\nuse [ServiceExtensionResponse.error].", "detail": "", "kind": 7, "label": "ServiceExtensionResponse" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Timeline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Add to the timeline.\n\n[Timeline]'s methods add synchronous events to the timeline. When\ngenerating a timeline in Chrome's tracing format, using [Timeline] generates\n\"Complete\" events. [Timeline]'s [startSync] and [finishSync] can be used\nexplicitly, or implicitly by wrapping a closure in [timeSync]. For example:\n\n```dart\nTimeline.startSync(\"Doing Something\");\ndoSomething();\nTimeline.finishSync();\n```\n\nOr:\n\n```dart\nTimeline.timeSync(\"Doing Something\", () {\n doSomething();\n});\n```", "detail": "", "kind": 7, "label": "Timeline" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stdout", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[Stdout] represents the [IOSink] for either `stdout` or `stderr`.\n\nIt provides a *blocking* `IOSink`, so using this to write will block until\nthe output is written.\n\nIn some situations this blocking behavior is undesirable as it does not\nprovide the same non-blocking behavior as dart:io in general exposes.\nUse the property [nonBlocking] to get an `IOSink` which has the non-blocking\nbehavior.\n\nThis class can also be used to check whether `stdout` or `stderr` is\nconnected to a terminal and query some terminal properties.\n\nThe [addError] API is inherited from [StreamSink] and calling it will result\nin an unhandled asynchronous error unless there is an error handler on\n[done].", "detail": "", "kind": 7, "label": "Stdout" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpOverrides", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "This class facilitates overriding [HttpClient] with a mock implementation.\nIt should be extended by another class in client code with overrides\nthat construct a mock implementation. The implementation in this base class\ndefaults to the actual [HttpClient] implementation. For example:\n\n```\nclass MyHttpClient implements HttpClient {\n ...\n // An implementation of the HttpClient interface\n ...\n}\n\nmain() {\n HttpOverrides.runZoned(() {\n ...\n // Operations will use MyHttpClient instead of the real HttpClient\n // implementation whenever HttpClient is used.\n ...\n }, createHttpClient: (SecurityContext c) => new MyHttpClient(c));\n}\n```", "detail": "", "kind": 7, "label": "HttpOverrides" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContentType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Representation of a content type. An instance of [ContentType] is\nimmutable.", "detail": "", "kind": 7, "label": "ContentType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSecureSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "RawSecureSocket provides a secure (SSL or TLS) network connection.\nClient connections to a server are provided by calling\nRawSecureSocket.connect. A secure server, created with\n[RawSecureServerSocket], also returns RawSecureSocket objects representing\nthe server end of a secure connection.\nThe certificate provided by the server is checked\nusing the trusted certificates set in the SecurityContext object.\nThe default [SecurityContext] object contains a built-in set of trusted\nroot certificates for well-known certificate authorities.", "detail": "", "kind": 7, "label": "RawSecureSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpSession", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "HttpSession" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpStatus", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "HTTP status codes. Exported in dart:io and dart:html.", "detail": "", "kind": 7, "label": "HttpStatus" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpRequest", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A server-side object\nthat contains the content of and information about an HTTP request.\n\n__Note__: Check out the\n[http_server](https://pub.dartlang.org/packages/http_server)\npackage, which makes working with the low-level\ndart:io HTTP server subsystem easier.\n\n`HttpRequest` objects are generated by an [HttpServer],\nwhich listens for HTTP requests on a specific host and port.\nFor each request received, the HttpServer, which is a [Stream],\ngenerates an `HttpRequest` object and adds it to the stream.\n\nAn `HttpRequest` object delivers the body content of the request\nas a stream of byte lists.\nThe object also contains information about the request,\nsuch as the method, URI, and headers.\n\nIn the following code, an HttpServer listens\nfor HTTP requests. When the server receives a request,\nit uses the HttpRequest object's `method` property to dispatch requests.\n\n final HOST = InternetAddress.loopbackIPv4;\n final PORT = 80;\n\n HttpServer.bind(HOST, PORT).then((_server) {\n _server.listen((HttpRequest request) {\n switch (request.method) {\n case 'GET':\n handleGetRequest(request);\n break;\n case 'POST':\n ...\n }\n },\n onError: handleError); // listen() failed.\n }).catchError(handleError);\n\nAn HttpRequest object provides access to the associated [HttpResponse]\nobject through the response property.\nThe server writes its response to the body of the HttpResponse object.\nFor example, here's a function that responds to a request:\n\n void handleGetRequest(HttpRequest req) {\n HttpResponse res = req.response;\n res.write('Received request ${req.method}: ${req.uri.path}');\n res.close();\n }", "detail": "", "kind": 7, "label": "HttpRequest" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SocketDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [SocketDirection] is used as a parameter to [Socket.close] and\n[RawSocket.close] to close a socket in the specified direction(s).", "detail": "", "kind": 7, "label": "SocketDirection" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibEncoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [ZLibEncoder] encoder is used by [ZLibCodec] and [GZipCodec] to compress\ndata.", "detail": "", "kind": 7, "label": "ZLibEncoder" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RedirectException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "RedirectException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientDigestCredentials", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Represents credentials for digest authentication. Digest\nauthentication is only supported for servers using the MD5\nalgorithm and quality of protection (qop) of either \"none\" or\n\"auth\".", "detail": "", "kind": 7, "label": "HttpClientDigestCredentials" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InternetAddress", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An internet address.\n\nThis object holds an internet address. If this internet address\nis the result of a DNS lookup, the address also holds the hostname\nused to make the lookup.\nAn Internet address combined with a port number represents an\nendpoint to which a socket can connect or a listening socket can\nbind.", "detail": "", "kind": 7, "label": "InternetAddress" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SecurityContext", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The object containing the certificates to trust when making\na secure client connection, and the certificate chain and\nprivate key to serve from a secure server.\n\nThe [SecureSocket] and [SecureServerSocket] classes take a SecurityContext\nas an argument to their connect and bind methods.\n\nCertificates and keys can be added to a SecurityContext from either PEM\nor PKCS12 containers.\n\niOS note: Some methods to add, remove, and inspect certificates are not yet\nimplemented. However, the platform's built-in trusted certificates can\nbe used, by way of [SecurityContext.defaultContext].", "detail": "", "kind": 7, "label": "SecurityContext" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionTask", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Returned by the `startConnect` methods on client-side socket types `S`,\n`ConnectionTask<S>` allows cancelling an attempt to connect to a host.", "detail": "", "kind": 7, "label": "ConnectionTask" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for all IO related exceptions.", "detail": "", "kind": 7, "label": "IOException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A two-way HTTP communication object for client or server applications.\n\nThe stream exposes the messages received. A text message will be of type\n`String` and a binary message will be of type `List<int>`.", "detail": "", "kind": 7, "label": "WebSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[ProcessInfo] provides methods for retrieving information about the\ncurrent process.", "detail": "", "kind": 7, "label": "ProcessInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Socket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A high-level class for communicating over a TCP socket.\n\nThe [Socket] exposes both a [Stream] and a [IOSink] interface, making it\nideal for using together with other [Stream]s.", "detail": "", "kind": 7, "label": "Socket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServerSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [ServerSocket] represents a listening socket, and provides a\nstream of [Socket] objects, one for each connection made to the\nlistening socket.\n\nSee [Socket] for more info.", "detail": "", "kind": 7, "label": "ServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawDatagramSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawDatagramSocket] is a low-level interface to an UDP socket,\nexposing the raw events signaled by the system. It's a [Stream] of\n[RawSocketEvent]s.\n\nNote that the event [RawSocketEvent.readClosed] will never be\nreceived as an UDP socket cannot be closed by a remote peer.", "detail": "", "kind": 7, "label": "RawDatagramSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemCreateEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for newly created file system objects.", "detail": "", "kind": 7, "label": "FileSystemCreateEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A client that receives content, such as web pages, from\na server using the HTTP protocol.\n\nHttpClient contains a number of methods to send an [HttpClientRequest]\nto an Http server and receive an [HttpClientResponse] back.\nFor example, you can use the [get], [getUrl], [post], and [postUrl] methods\nfor GET and POST requests, respectively.\n\n## Making a simple GET request: an example\n\nA `getUrl` request is a two-step process, triggered by two [Future]s.\nWhen the first future completes with a [HttpClientRequest], the underlying\nnetwork connection has been established, but no data has been sent.\nIn the callback function for the first future, the HTTP headers and body\ncan be set on the request. Either the first write to the request object\nor a call to [close] sends the request to the server.\n\nWhen the HTTP response is received from the server,\nthe second future, which is returned by close,\ncompletes with an [HttpClientResponse] object.\nThis object provides access to the headers and body of the response.\nThe body is available as a stream implemented by HttpClientResponse.\nIf a body is present, it must be read. Otherwise, it leads to resource\nleaks. Consider using [HttpClientResponse.drain] if the body is unused.\n\n HttpClient client = new HttpClient();\n client.getUrl(Uri.parse(\"http://www.example.com/\"))\n .then((HttpClientRequest request) {\n // Optionally set up headers...\n // Optionally write to the request object...\n // Then call close.\n ...\n return request.close();\n })\n .then((HttpClientResponse response) {\n // Process the response.\n ...\n });\n\nThe future for [HttpClientRequest] is created by methods such as\n[getUrl] and [open].\n\n## HTTPS connections\n\nAn HttpClient can make HTTPS requests, connecting to a server using\nthe TLS (SSL) secure networking protocol. Calling [getUrl] with an\nhttps: scheme will work automatically, if the server's certificate is\nsigned by a root CA (certificate authority) on the default list of\nwell-known trusted CAs, compiled by Mozilla.\n\nTo add a custom trusted certificate authority, or to send a client\ncertificate to servers that request one, pass a [SecurityContext] object\nas the optional `context` argument to the `HttpClient` constructor.\nThe desired security options can be set on the [SecurityContext] object.\n\n## Headers\n\nAll HttpClient requests set the following header by default:\n\n Accept-Encoding: gzip\n\nThis allows the HTTP server to use gzip compression for the body if\npossible. If this behavior is not desired set the\n`Accept-Encoding` header to something else.\nTo turn off gzip compression of the response, clear this header:\n\n request.headers.removeAll(HttpHeaders.acceptEncodingHeader)\n\n## Closing the HttpClient\n\nThe HttpClient supports persistent connections and caches network\nconnections to reuse them for multiple requests whenever\npossible. This means that network connections can be kept open for\nsome time after a request has completed. Use HttpClient.close\nto force the HttpClient object to shut down and to close the idle\nnetwork connections.\n\n## Turning proxies on and off\n\nBy default the HttpClient uses the proxy configuration available\nfrom the environment, see [findProxyFromEnvironment]. To turn off\nthe use of proxies set the [findProxy] property to\n[:null:].\n\n HttpClient client = new HttpClient();\n client.findProxy = null;", "detail": "", "kind": 7, "label": "HttpClient" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base event class emitted by [FileSystemEntity.watch].", "detail": "", "kind": 7, "label": "FileSystemEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocketStatus", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "WebSocket status codes used when closing a WebSocket connection.", "detail": "", "kind": 7, "label": "WebSocketStatus" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OSError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An [OSError] object holds information about an error from the\noperating system.", "detail": "", "kind": 7, "label": "OSError" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileStat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A FileStat object represents the result of calling the POSIX stat() function\non a file system object. It is an immutable object, representing the\nsnapshotted values returned by the stat() call.", "detail": "", "kind": 7, "label": "FileStat" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RandomAccessFile", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "`RandomAccessFile` provides random access to the data in a\nfile.\n\n`RandomAccessFile` objects are obtained by calling the\n`open` method on a [File] object.\n\nA `RandomAccessFile` have both asynchronous and synchronous\nmethods. The asynchronous methods all return a `Future`\nwhereas the synchronous methods will return the result directly,\nand block the current isolate until the result is ready.\n\nAt most one asynchronous method can be pending on a given `RandomAccessFile`\ninstance at the time. If an asynchronous method is called when one is\nalready in progress a [FileSystemException] is thrown.\n\nIf an asynchronous method is pending it is also not possible to call any\nsynchronous methods. This will also throw a [FileSystemException].", "detail": "", "kind": 7, "label": "RandomAccessFile" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSocketEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Events for the [RawSocket].", "detail": "", "kind": 7, "label": "RawSocketEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "File", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A reference to a file on the file system.\n\nA File instance is an object that holds a [path] on which operations can\nbe performed.\nYou can get the parent directory of the file using the getter [parent],\na property inherited from [FileSystemEntity].\n\nCreate a new File object with a pathname to access the specified file on the\nfile system from your program.\n\n var myFile = new File('file.txt');\n\nThe File class contains methods for manipulating files and their contents.\nUsing methods in this class, you can open and close files, read to and write\nfrom them, create and delete them, and check for their existence.\n\nWhen reading or writing a file, you can use streams (with [openRead]),\nrandom access operations (with [open]),\nor convenience methods such as [readAsString],\n\nMost methods in this class occur in synchronous and asynchronous pairs,\nfor example, [readAsString] and [readAsStringSync].\nUnless you have a specific reason for using the synchronous version\nof a method, prefer the asynchronous version to avoid blocking your program.\n\n## If path is a link\n\nIf [path] is a symbolic link, rather than a file,\nthen the methods of File operate on the ultimate target of the\nlink, except for [delete] and [deleteSync], which operate on\nthe link.\n\n## Read from a file\n\nThe following code sample reads the entire contents from a file as a string\nusing the asynchronous [readAsString] method:\n\n import 'dart:async';\n import 'dart:io';\n\n void main() {\n new File('file.txt').readAsString().then((String contents) {\n print(contents);\n });\n }\n\nA more flexible and useful way to read a file is with a [Stream].\nOpen the file with [openRead], which returns a stream that\nprovides the data in the file as chunks of bytes.\nListen to the stream for data and process as needed.\nYou can use various transformers in succession to manipulate the\ndata into the required format or to prepare it for output.\n\nYou might want to use a stream to read large files,\nto manipulate the data with transformers,\nor for compatibility with another API, such as [WebSocket]s.\n\n import 'dart:io';\n import 'dart:convert';\n import 'dart:async';\n\n main() {\n final file = new File('file.txt');\n Stream<List<int>> inputStream = file.openRead();\n\n inputStream\n .transform(utf8.decoder) // Decode bytes to UTF-8.\n .transform(new LineSplitter()) // Convert stream to individual lines.\n .listen((String line) { // Process results.\n print('$line: ${line.length} bytes');\n },\n onDone: () { print('File is now closed.'); },\n onError: (e) { print(e.toString()); });\n }\n\n## Write to a file\n\nTo write a string to a file, use the [writeAsString] method:\n\n import 'dart:io';\n\n void main() {\n final filename = 'file.txt';\n new File(filename).writeAsString('some content')\n .then((File file) {\n // Do something with the file.\n });\n }\n\nYou can also write to a file using a [Stream]. Open the file with\n[openWrite], which returns an [IOSink] to which you can write data.\nBe sure to close the sink with the [IOSink.close] method.\n\n import 'dart:io';\n\n void main() {\n var file = new File('file.txt');\n var sink = file.openWrite();\n sink.write('FILE ACCESSED ${new DateTime.now()}\\n');\n\n // Close the IOSink to free system resources.\n sink.close();\n }\n\n## The use of Futures\n\nTo avoid unintentional blocking of the program,\nseveral methods use a [Future] to return a value. For example,\nthe [length] method, which gets the length of a file, returns a Future.\nUse `then` to register a callback function, which is called when\nthe value is ready.\n\n import 'dart:io';\n\n main() {\n final file = new File('file.txt');\n\n file.length().then((len) {\n print(len);\n });\n }\n\nIn addition to length, the [exists], [lastModified], [stat], and\nother methods, return Futures.\n\n## Other resources\n\n* [Dart by Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)\n provides additional task-oriented code samples that show how to use\n various API from the Directory class and the related [File] class.\n\n* [I/O for Command-Line\n Apps](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartio---io-for-command-line-apps)\n a section from _A Tour of the Dart Libraries_ covers files and directories.\n\n* [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),\n a tutorial about writing command-line apps, includes information about\n files and directories.", "detail": "", "kind": 7, "label": "File" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stdin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[Stdin] allows both synchronous and asynchronous reads from the standard\ninput stream.\n\nMixing synchronous and asynchronous reads is undefined.", "detail": "", "kind": 7, "label": "Stdin" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientCredentials", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "HttpClientCredentials" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompressionOptions", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [CompressionOptions] class allows you to control\nthe options of WebSocket compression.", "detail": "", "kind": 7, "label": "CompressionOptions" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Datagram", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Datagram package. Data send to and received from datagram sockets\ncontains the internet address and port of the destination or source\ntogeter with the data.", "detail": "", "kind": 7, "label": "Datagram" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemDeleteEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for deletion of file system objects.", "detail": "", "kind": 7, "label": "FileSystemDeleteEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeaderValue", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Representation of a header value in the form:\n\n [:value; parameter1=value1; parameter2=value2:]\n\n[HeaderValue] can be used to conveniently build and parse header\nvalues on this form.\n\nTo build an [:accepts:] header with the value\n\n text/plain; q=0.3, text/html\n\nuse code like this:\n\n HttpClientRequest request = ...;\n var v = new HeaderValue(\"text/plain\", {\"q\": \"0.3\"});\n request.headers.add(HttpHeaders.acceptHeader, v);\n request.headers.add(HttpHeaders.acceptHeader, \"text/html\");\n\nTo parse the header values use the [:parse:] static method.\n\n HttpRequest request = ...;\n List<String> values = request.headers[HttpHeaders.acceptHeader];\n values.forEach((value) {\n HeaderValue v = HeaderValue.parse(value);\n // Use v.value and v.parameters\n });\n\nAn instance of [HeaderValue] is immutable.", "detail": "", "kind": 7, "label": "HeaderValue" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkInterface", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [NetworkInterface] represents an active network interface on the current\nsystem. It contains a list of [InternetAddress]es that are bound to the\ninterface.", "detail": "", "kind": 7, "label": "NetworkInterface" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibDecoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [ZLibDecoder] is used by [ZLibCodec] and [GZipCodec] to decompress data.", "detail": "", "kind": 7, "label": "ZLibDecoder" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpServer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A server that delivers content, such as web pages, using the HTTP protocol.\n\nThe HttpServer is a [Stream] that provides [HttpRequest] objects. Each\nHttpRequest has an associated [HttpResponse] object.\nThe server responds to a request by writing to that HttpResponse object.\nThe following example shows how to bind an HttpServer to an IPv6\n[InternetAddress] on port 80 (the standard port for HTTP servers)\nand how to listen for requests.\nPort 80 is the default HTTP port. However, on most systems accessing\nthis requires super-user privileges. For local testing consider\nusing a non-reserved port (1024 and above).\n\n import 'dart:io';\n\n main() {\n HttpServer\n .bind(InternetAddress.anyIPv6, 80)\n .then((server) {\n server.listen((HttpRequest request) {\n request.response.write('Hello, world!');\n request.response.close();\n });\n });\n }\n\nIncomplete requests, in which all or part of the header is missing, are\nignored, and no exceptions or HttpRequest objects are generated for them.\nLikewise, when writing to an HttpResponse, any [Socket] exceptions are\nignored and any future writes are ignored.\n\nThe HttpRequest exposes the request headers and provides the request body,\nif it exists, as a Stream of data. If the body is unread, it is drained\nwhen the server writes to the HttpResponse or closes it.\n\n## Bind with a secure HTTPS connection\n\nUse [bindSecure] to create an HTTPS server.\n\nThe server presents a certificate to the client. The certificate\nchain and the private key are set in the [SecurityContext]\nobject that is passed to [bindSecure].\n\n import 'dart:io';\n import \"dart:isolate\";\n\n main() {\n SecurityContext context = new SecurityContext();\n var chain =\n Platform.script.resolve('certificates/server_chain.pem')\n .toFilePath();\n var key =\n Platform.script.resolve('certificates/server_key.pem')\n .toFilePath();\n context.useCertificateChain(chain);\n context.usePrivateKey(key, password: 'dartdart');\n\n HttpServer\n .bindSecure(InternetAddress.anyIPv6,\n 443,\n context)\n .then((server) {\n server.listen((HttpRequest request) {\n request.response.write('Hello, world!');\n request.response.close();\n });\n });\n }\n\n The certificates and keys are PEM files, which can be created and\n managed with the tools in OpenSSL.\n\n## Connect to a server socket\n\nYou can use the [listenOn] constructor to attach an HTTP server to\na [ServerSocket].\n\n import 'dart:io';\n\n main() {\n ServerSocket.bind(InternetAddress.anyIPv6, 80)\n .then((serverSocket) {\n HttpServer httpserver = new HttpServer.listenOn(serverSocket);\n serverSocket.listen((Socket socket) {\n socket.write('Hello, client.');\n });\n });\n }\n\n## Other resources\n\n* HttpServer is a Stream. Refer to the [Stream] class for information\nabout the streaming qualities of an HttpServer.\nPausing the subscription of the stream, pauses at the OS level.\n\n* The [shelf](https://pub.dartlang.org/packages/shelf)\npackage on pub.dartlang.org contains a set of high-level classes that,\ntogether with this class, makes it easy to provide content through HTTP\nservers.", "detail": "", "kind": 7, "label": "HttpServer" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemMoveEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for moving of file system objects.", "detail": "", "kind": 7, "label": "FileSystemMoveEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessResult", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[ProcessResult] represents the result of running a non-interactive\nprocess started with [Process.run] or [Process.runSync].", "detail": "", "kind": 7, "label": "ProcessResult" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HandshakeException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An exception that happens in the handshake phase of establishing\na secure network connection.", "detail": "", "kind": 7, "label": "HandshakeException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientBasicCredentials", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Represents credentials for basic authentication.", "detail": "", "kind": 7, "label": "HttpClientBasicCredentials" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CertificateException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An exception that happens in the handshake phase of establishing\na secure network connection, when looking up or verifying a\ncertificate.", "detail": "", "kind": 7, "label": "CertificateException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TlsException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A secure networking exception caused by a failure in the\n TLS/SSL protocol.", "detail": "", "kind": 7, "label": "TlsException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocketException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "WebSocketException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cookie", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Representation of a cookie. For cookies received by the server as\nCookie header values only [:name:] and [:value:] fields will be\nset. When building a cookie for the 'set-cookie' header in the server\nand when receiving cookies in the client as 'set-cookie' headers all\nfields can be used.", "detail": "", "kind": 7, "label": "Cookie" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibOption", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Exposes ZLib options for input parameters.\n\nSee http://www.zlib.net/manual.html for more documentation.", "detail": "", "kind": 7, "label": "ZLibOption" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpHeaders", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Headers for HTTP requests and responses.\n\nIn some situations, headers are immutable:\n\n* HttpRequest and HttpClientResponse always have immutable headers.\n\n* HttpResponse and HttpClientRequest have immutable headers\n from the moment the body is written to.\n\nIn these situations, the mutating methods throw exceptions.\n\nFor all operations on HTTP headers the header name is\ncase-insensitive.\n\nTo set the value of a header use the `set()` method:\n\n request.headers.set(HttpHeaders.cacheControlHeader,\n 'max-age=3600, must-revalidate');\n\nTo retrieve the value of a header use the `value()` method:\n\n print(request.headers.value(HttpHeaders.userAgentHeader));\n\nAn HttpHeaders object holds a list of values for each name\nas the standard allows. In most cases a name holds only a single value,\nThe most common mode of operation is to use `set()` for setting a value,\nand `value()` for retrieving a value.", "detail": "", "kind": 7, "label": "HttpHeaders" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DetachedSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "When detaching a socket from either the [:HttpServer:] or the\n[:HttpClient:] due to a HTTP connection upgrade there might be\nunparsed data already read from the socket. This unparsed data\ntogether with the detached socket is returned in an instance of\nthis class.", "detail": "", "kind": 7, "label": "DetachedSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessSignal", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "On Posix systems, [ProcessSignal] is used to send a specific signal\nto a child process, see [:Process.kill:].\n\nSome [ProcessSignal]s can also be watched, as a way to intercept the default\nsignal handler and implement another. See [ProcessSignal.watch] for more\ninformation.", "detail": "", "kind": 7, "label": "ProcessSignal" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SignalException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "SignalException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BytesBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Builds a list of bytes, allowing bytes and lists of bytes to be added at the\nend.\n\nUsed to efficiently collect bytes and lists of bytes.", "detail": "", "kind": 7, "label": "BytesBuilder" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOSink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A combined byte and text output.\n\nAn [IOSink] combines a [StreamSink] of bytes with a [StringSink],\nand allows easy output of both bytes and text.\n\nWriting text ([write]) and adding bytes ([add]) may be interleaved freely.\n\nWhile a stream is being added using [addStream], any further attempts\nto add or write to the [IOSink] will fail until the [addStream] completes.\n\nIt is an error to add data to the [IOSink] after the sink is closed.", "detail": "", "kind": 7, "label": "IOSink" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RedirectInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Redirect information.", "detail": "", "kind": 7, "label": "RedirectInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpConnectionInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information about an [HttpRequest], [HttpResponse], [HttpClientRequest], or\n[HttpClientResponse] connection.", "detail": "", "kind": 7, "label": "HttpConnectionInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemEncoding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The system encoding is the current code page on Windows and UTF-8 on Linux\nand Mac.", "detail": "", "kind": 7, "label": "SystemEncoding" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directory", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A reference to a directory (or _folder_) on the file system.\n\nA Directory instance is an object holding a [path] on which operations can\nbe performed. The path to the directory can be [absolute] or relative.\nYou can get the parent directory using the getter [parent],\na property inherited from [FileSystemEntity].\n\nIn addition to being used as an instance to access the file system,\nDirectory has a number of static properties, such as [systemTemp],\nwhich gets the system's temporary directory, and the getter and setter\n[current], which you can use to access or change the current directory.\n\nCreate a new Directory object with a pathname to access the specified\ndirectory on the file system from your program.\n\n var myDir = new Directory('myDir');\n\nMost methods in this class occur in synchronous and asynchronous pairs,\nfor example, [create] and [createSync].\nUnless you have a specific reason for using the synchronous version\nof a method, prefer the asynchronous version to avoid blocking your program.\n\n## Create a directory\n\nThe following code sample creates a directory using the [create] method.\nBy setting the `recursive` parameter to true, you can create the\nnamed directory and all its necessary parent directories,\nif they do not already exist.\n\n import 'dart:io';\n\n void main() {\n // Creates dir/ and dir/subdir/.\n new Directory('dir/subdir').create(recursive: true)\n // The created directory is returned as a Future.\n .then((Directory directory) {\n print(directory.path);\n });\n }\n\n## List a directory\n\nUse the [list] or [listSync] methods to get the files and directories\ncontained by a directory.\nSet `recursive` to true to recursively list all subdirectories.\nSet `followLinks` to true to follow symbolic links.\nThe list method returns a [Stream] that provides FileSystemEntity\nobjects. Use the listen callback function to process each object\nas it become available.\n\n import 'dart:io';\n\n void main() {\n // Get the system temp directory.\n var systemTempDir = Directory.systemTemp;\n\n // List directory contents, recursing into sub-directories,\n // but not following symbolic links.\n systemTempDir.list(recursive: true, followLinks: false)\n .listen((FileSystemEntity entity) {\n print(entity.path);\n });\n }\n\n## The use of Futures\n\nI/O operations can block a program for some period of time while it waits for\nthe operation to complete. To avoid this, all\nmethods involving I/O have an asynchronous variant which returns a [Future].\nThis future completes when the I/O operation finishes. While the I/O\noperation is in progress, the Dart program is not blocked,\nand can perform other operations.\n\nFor example,\nthe [exists] method, which determines whether the directory exists,\nreturns a boolean value using a Future.\nUse `then` to register a callback function, which is called when\nthe value is ready.\n\n import 'dart:io';\n\n main() {\n final myDir = new Directory('dir');\n myDir.exists().then((isThere) {\n isThere ? print('exists') : print('non-existent');\n });\n }\n\n\nIn addition to exists, the [stat], [rename], and\nother methods, return Futures.\n\n## Other resources\n\n* [Dart by Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)\n provides additional task-oriented code samples that show how to use\n various API from the Directory class and the related [File] class.\n\n* [I/O for Command-Line\n Apps](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartio---io-for-command-line-apps)\n a section from _A Tour of the Dart Libraries_ covers files and directories.\n\n* [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),\n a tutorial about writing command-line apps, includes information about\n files and directories.", "detail": "", "kind": 7, "label": "Directory" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessStartMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Modes for running a new process.", "detail": "", "kind": 7, "label": "ProcessStartMode" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOOverrides", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "This class facilitates overriding various APIs of dart:io with mock\nimplementations.\n\nThis abstract base class should be extended with overrides for the\noperations needed to construct mocks. The implementations in this base class\ndefault to the actual dart:io implementation. For example:\n\n```\nclass MyDirectory implements Directory {\n ...\n // An implementation of the Directory interface\n ...\n}\n\nmain() {\n IOOverrides.runZoned(() {\n ...\n // Operations will use MyDirectory instead of dart:io's Directory\n // implementation whenever Directory is used.\n ...\n }, createDirectory: (String path) => new MyDirectory(path));\n}\n```", "detail": "", "kind": 7, "label": "IOOverrides" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InternetAddressType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[InternetAddressType] is the type an [InternetAddress]. Currently,\nIP version 4 (IPv4) and IP version 6 (IPv6) are supported.", "detail": "", "kind": 7, "label": "InternetAddressType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSecureServerSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The RawSecureServerSocket is a server socket, providing a stream of low-level\n[RawSecureSocket]s.\n\nSee [RawSecureSocket] for more info.", "detail": "", "kind": 7, "label": "RawSecureServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemModifyEvent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for modifications of file system objects.", "detail": "", "kind": 7, "label": "FileSystemModifyEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GZipCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [GZipCodec] encodes raw bytes to GZip compressed bytes and decodes GZip\ncompressed bytes to raw bytes.\n\nThe difference between [ZLibCodec] and [GZipCodec] is that the [GZipCodec]\nwraps the `ZLib` compressed bytes in `GZip` frames.", "detail": "", "kind": 7, "label": "GZipCodec" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "HttpException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StdoutException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "StdoutException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSocketOption", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawSocketOption] is used as a parameter to [Socket.setRawOption] and\n[RawSocket.setRawOption] to set customize the behaviour of the underlying\nsocket.\n\nIt allows for fine grained control of the socket options, and its values will\nbe passed to the underlying platform's implementation of setsockopt and\ngetsockopt.", "detail": "", "kind": 7, "label": "RawSocketOption" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Link", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[Link] objects are references to filesystem links.\n", "detail": "", "kind": 7, "label": "Link" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemEntityType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The type of an entity on the file system, such as a file, directory, or link.\n\nThese constants are used by the [FileSystemEntity] class\nto indicate the object's type.\n", "detail": "", "kind": 7, "label": "FileSystemEntityType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientResponse", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "HTTP response for a client connection.\n\nThe body of a [HttpClientResponse] object is a\n[Stream] of data from the server. Listen to the body to handle\nthe data and be notified when the entire body is received.\n\n new HttpClient().get('localhost', 80, '/file.txt')\n .then((HttpClientRequest request) => request.close())\n .then((HttpClientResponse response) {\n response.transform(utf8.decoder).listen((contents) {\n // handle data\n });\n });", "detail": "", "kind": 7, "label": "HttpClientResponse" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawSocket] is a low-level interface to a socket, exposing the raw\nevents signaled by the system. It's a [Stream] of [RawSocketEvent]s.", "detail": "", "kind": 7, "label": "RawSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawServerSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [RawServerSocket] represents a listening socket, and provides a\nstream of low-level [RawSocket] objects, one for each connection\nmade to the listening socket.\n\nSee [RawSocket] for more info.", "detail": "", "kind": 7, "label": "RawServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpConnectionsInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Summary statistics about an [HttpServer]s current socket connections.", "detail": "", "kind": 7, "label": "HttpConnectionsInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Exception thrown when a file operation fails.", "detail": "", "kind": 7, "label": "FileSystemException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SecureSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A high-level class for communicating securely over a TCP socket, using\nTLS and SSL. The [SecureSocket] exposes both a [Stream] and an\n[IOSink] interface, making it ideal for using together with\nother [Stream]s.", "detail": "", "kind": 7, "label": "SecureSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SocketOption", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [SocketOption] is used as a parameter to [Socket.setOption] and\n[RawSocket.setOption] to set customize the behaviour of the underlying\nsocket.", "detail": "", "kind": 7, "label": "SocketOption" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpDate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Utility functions for working with dates with HTTP specific date\nformats.", "detail": "", "kind": 7, "label": "HttpDate" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientRequest", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "HTTP request for a client connection.\n\nTo set up a request, set the headers using the headers property\nprovided in this class and write the data to the body of the request.\nHttpClientRequest is an [IOSink]. Use the methods from IOSink,\nsuch as writeCharCode(), to write the body of the HTTP\nrequest. When one of the IOSink methods is used for the first\ntime, the request header is sent. Calling any methods that\nchange the header after it is sent throws an exception.\n\nWhen writing string data through the [IOSink] the\nencoding used is determined from the \"charset\" parameter of\nthe \"Content-Type\" header.\n\n HttpClientRequest request = ...\n request.headers.contentType\n = new ContentType(\"application\", \"json\", charset: \"utf-8\");\n request.write(...); // Strings written will be UTF-8 encoded.\n\nIf no charset is provided the default of ISO-8859-1 (Latin 1) is\nbe used.\n\n HttpClientRequest request = ...\n request.headers.add(HttpHeaders.contentTypeHeader, \"text/plain\");\n request.write(...); // Strings written will be ISO-8859-1 encoded.\n\nAn exception is thrown if you use an unsupported encoding and the\n`write()` method being used takes a string parameter.", "detail": "", "kind": 7, "label": "HttpClientRequest" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Platform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information about the environment in which the current program is running.\n\nPlatform provides information such as the operating system,\nthe hostname of the computer, the value of environment variables,\nthe path to the running program,\nand so on.\n\n## Get the URI to the current Dart script\n\nUse the [script] getter to get the URI to the currently running\nDart script.\n\n import 'dart:io' show Platform;\n\n void main() {\n // Get the URI of the script being run.\n var uri = Platform.script;\n // Convert the URI to a path.\n var path = uri.toFilePath();\n }\n\n## Get the value of an environment variable\n\nThe [environment] getter returns a the names and values of environment\nvariables in a [Map] that contains key-value pairs of strings. The Map is\nunmodifiable. This sample shows how to get the value of the `PATH`\nenvironment variable.\n\n import 'dart:io' show Platform;\n\n void main() {\n Map<String, String> envVars = Platform.environment;\n print(envVars['PATH']);\n }\n\n## Determine the OS\n\nYou can get the name of the operating system as a string with the\n[operatingSystem] getter. You can also use one of the static boolean\ngetters: [isMacOS], [isLinux], and [isWindows].\n\n import 'dart:io' show Platform, stdout;\n\n void main() {\n // Get the operating system as a string.\n String os = Platform.operatingSystem;\n // Or, use a predicate getter.\n if (Platform.isMacOS) {\n print('is a Mac');\n } else {\n print('is not a Mac');\n }\n }\n\n## Other resources\n\n[Dart by Example](https://www.dartlang.org/dart-by-example/#dart-io-and-command-line-apps)\nprovides additional task-oriented code samples that show how to use\nvarious API from the [dart:io] library.", "detail": "", "kind": 7, "label": "Platform" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemEntity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The common super class for [File], [Directory], and [Link] objects.\n\n[FileSystemEntity] objects are returned from directory listing\noperations. To determine if a FileSystemEntity is a [File], a\n[Directory], or a [Link] perform a type check:\n\n if (entity is File) (entity as File).readAsStringSync();\n\nYou can also use the [type] or [typeSync] methods to determine\nthe type of a file system object.\n\nMost methods in this class occur in synchronous and asynchronous pairs,\nfor example, [exists] and [existsSync].\nUnless you have a specific reason for using the synchronous version\nof a method, prefer the asynchronous version to avoid blocking your program.\n\nHere's the exists method in action:\n\n entity.exists().then((isThere) {\n isThere ? print('exists') : print('non-existent');\n });\n\n\n## Other resources\n\n* [Dart by\n Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)\n provides additional task-oriented code samples that show how to use various\n API from the [Directory] class and the [File] class, both subclasses of\n FileSystemEntity.\n\n* [I/O for Command-Line\n Apps](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartio---io-for-command-line-apps),\n a section from _A Tour of the Dart Libraries_ covers files and directories.\n\n* [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),\n a tutorial about writing command-line apps, includes information about\n files and directories.", "detail": "", "kind": 7, "label": "FileSystemEntity" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpResponse", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An HTTP response, which returns the headers and data\nfrom the server to the client in response to an HTTP request.\n\nEvery HttpRequest object provides access to the associated [HttpResponse]\nobject through the `response` property.\nThe server sends its response to the client by writing to the\nHttpResponse object.\n\n## Writing the response\n\nThis class implements [IOSink].\nAfter the header has been set up, the methods\nfrom IOSink, such as `writeln()`, can be used to write\nthe body of the HTTP response.\nUse the `close()` method to close the response and send it to the client.\n\n server.listen((HttpRequest request) {\n request.response.write('Hello, world!');\n request.response.close();\n });\n\nWhen one of the IOSink methods is used for the\nfirst time, the request header is sent. Calling any methods that\nchange the header after it is sent throws an exception.\n\n## Setting the headers\n\nThe HttpResponse object has a number of properties for setting up\nthe HTTP headers of the response.\nWhen writing string data through the IOSink, the encoding used\nis determined from the \"charset\" parameter of the\n\"Content-Type\" header.\n\n HttpResponse response = ...\n response.headers.contentType\n = new ContentType(\"application\", \"json\", charset: \"utf-8\");\n response.write(...); // Strings written will be UTF-8 encoded.\n\nIf no charset is provided the default of ISO-8859-1 (Latin 1) will\nbe used.\n\n HttpResponse response = ...\n response.headers.add(HttpHeaders.contentTypeHeader, \"text/plain\");\n response.write(...); // Strings written will be ISO-8859-1 encoded.\n\nAn exception is thrown if you use the `write()` method\nwhile an unsupported content-type is set.", "detail": "", "kind": 7, "label": "HttpResponse" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSynchronousSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A low-level class for communicating synchronously over a TCP socket.\n\nWarning: [RawSynchronousSocket] should probably only be used to connect to\n'localhost'. The operations below will block the calling thread to wait for\na response from the network. The thread can process no other events while\nwaiting for these operations to complete. [RawSynchronousSocket] is not\nsuitable for applications that require high performance or asynchronous I/O\nsuch as a server. Instead such applications should use the non-blocking\nsockets and asynchronous operations in the Socket or RawSocket classes.", "detail": "", "kind": 7, "label": "RawSynchronousSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "X509Certificate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "X509Certificate represents an SSL certificate, with accessors to\nget the fields of the certificate.", "detail": "", "kind": 7, "label": "X509Certificate" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Process", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The means to execute a program.\n\nUse the static [start] and [run] methods to start a new process.\nThe run method executes the process non-interactively to completion.\nIn contrast, the start method allows your code to interact with the\nrunning process.\n\n## Start a process with the run method\n\nThe following code sample uses the run method to create a process\nthat runs the UNIX command `ls`, which lists the contents of a directory.\nThe run method completes with a [ProcessResult] object when the process\nterminates. This provides access to the output and exit code from the\nprocess. The run method does not return a Process object; this prevents your\ncode from interacting with the running process.\n\n import 'dart:io';\n\n main() {\n // List all files in the current directory in UNIX-like systems.\n Process.run('ls', ['-l']).then((ProcessResult results) {\n print(results.stdout);\n });\n }\n\n## Start a process with the start method\n\nThe following example uses start to create the process.\nThe start method returns a [Future] for a Process object.\nWhen the future completes the process is started and\nyour code can interact with the\nProcess: writing to stdin, listening to stdout, and so on.\n\nThe following sample starts the UNIX `cat` utility, which when given no\ncommand-line arguments, echos its input.\nThe program writes to the process's standard input stream\nand prints data from its standard output stream.\n\n import 'dart:io';\n import 'dart:convert';\n\n main() {\n Process.start('cat', []).then((Process process) {\n process.stdout\n .transform(utf8.decoder)\n .listen((data) { print(data); });\n process.stdin.writeln('Hello, world!');\n process.stdin.writeln('Hello, galaxy!');\n process.stdin.writeln('Hello, universe!');\n });\n }\n\n## Standard I/O streams\n\nAs seen in the previous code sample, you can interact with the Process's\nstandard output stream through the getter [stdout],\nand you can interact with the Process's standard input stream through\nthe getter [stdin].\nIn addition, Process provides a getter [stderr] for using the Process's\nstandard error stream.\n\nA Process's streams are distinct from the top-level streams\nfor the current program.\n\n## Exit codes\n\nCall the [exitCode] method to get the exit code of the process.\nThe exit code indicates whether the program terminated successfully\n(usually indicated with an exit code of 0) or with an error.\n\nIf the start method is used, the exitCode is available through a future\non the Process object (as shown in the example below).\nIf the run method is used, the exitCode is available\nthrough a getter on the ProcessResult instance.\n\n import 'dart:io';\n\n main() {\n Process.start('ls', ['-l']).then((process) {\n // Get the exit code from the new process.\n process.exitCode.then((exitCode) {\n print('exit code: $exitCode');\n });\n });\n }\n\n## Other resources\n\n[Dart by Example](https://www.dartlang.org/dart-by-example/#dart-io-and-command-line-apps)\nprovides additional task-oriented code samples that show how to use\nvarious API from the [dart:io] library.", "detail": "", "kind": 7, "label": "Process" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocketTransformer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [WebSocketTransformer] provides the ability to upgrade a\n[HttpRequest] to a [WebSocket] connection. It supports both\nupgrading a single [HttpRequest] and upgrading a stream of\n[HttpRequest]s.\n\nTo upgrade a single [HttpRequest] use the static [upgrade] method.\n\n HttpServer server;\n server.listen((request) {\n if (...) {\n WebSocketTransformer.upgrade(request).then((websocket) {\n ...\n });\n } else {\n // Do normal HTTP request processing.\n }\n });\n\nTo transform a stream of [HttpRequest] events as it implements a\nstream transformer that transforms a stream of HttpRequest into a\nstream of WebSockets by upgrading each HttpRequest from the HTTP or\nHTTPS server, to the WebSocket protocol.\n\n server.transform(new WebSocketTransformer()).listen((webSocket) => ...);\n\nThis transformer strives to implement WebSockets as specified by RFC6455.", "detail": "", "kind": 7, "label": "WebSocketTransformer" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "ProcessException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StdinException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "StdinException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StdioType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The type of object a standard IO stream is attached to.", "detail": "", "kind": 7, "label": "StdioType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The modes in which a File can be opened.", "detail": "", "kind": 7, "label": "FileMode" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileLock", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Type of lock when requesting a lock on a file.", "detail": "", "kind": 7, "label": "FileLock" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SocketException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "SocketException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SecureServerSocket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [SecureServerSocket] is a server socket, providing a stream of high-level\n[Socket]s.\n\nSee [SecureSocket] for more info.", "detail": "", "kind": 7, "label": "SecureServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawZLibFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawZLibFilter] class provides a low-level interface to zlib.", "detail": "", "kind": 7, "label": "RawZLibFilter" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [ZLibCodec] encodes raw bytes to ZLib compressed bytes and decodes ZLib\ncompressed bytes to raw bytes.", "detail": "", "kind": 7, "label": "ZLibCodec" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Capability", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An unforgeable object that comes back as equal when passed through other\nisolates.\n\nSending a capability object to another isolate, and getting it back,\nwill produce an object that is equal to the original.\nThere is no other way to create objects equal to a capability object.\n\nCapabilities can be used as access guards: A remote isolate can send\na request for an operation, but it is only allowed if the request contains\nthe correct capability object.\n\nThis allows exposing the same interface to multiple clients,\nbut restricting some operations to only those clients\nthat have also been given the corresponding capability.\n\nCapabilities can be used inside a single isolate,\nbut they have no advantage over\njust using `new Object` to create a unique object,\nand it offers no real security against other code\nrunning in the same isolate.", "detail": "", "kind": 7, "label": "Capability" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Isolate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An isolated Dart execution context.\n\nAll Dart code runs in an isolate, and code can access classes and values\nonly from the same isolate. Different isolates can communicate by sending\nvalues through ports (see [ReceivePort], [SendPort]).\n\nAn `Isolate` object is a reference to an isolate, usually different from\nthe current isolate.\nIt represents, and can be used to control, the other isolate.\n\nWhen spawning a new isolate, the spawning isolate receives an `Isolate`\nobject representing the new isolate when the spawn operation succeeds.\n\nIsolates run code in its own event loop, and each event may run smaller tasks\nin a nested microtask queue.\n\nAn `Isolate` object allows other isolates to control the event loop\nof the isolate that it represents, and to inspect the isolate,\nfor example by pausing the isolate or by getting events when the isolate\nhas an uncaught error.\n\nThe [controlPort] identifies and gives access to controlling the isolate,\nand the [pauseCapability] and [terminateCapability] guard access\nto some control operations.\nFor example, calling [pause] on an `Isolate` object created without a\n[pauseCapability], has no effect.\n\nThe `Isolate` object provided by a spawn operation will have the\ncontrol port and capabilities needed to control the isolate.\nNew isolate objects can be created without some of these capabilities\nif necessary, using the [Isolate.Isolate] constructor.\n\nAn `Isolate` object cannot be sent over a `SendPort`, but the control port\nand capabilities can be sent, and can be used to create a new functioning\n`Isolate` object in the receiving port's isolate.", "detail": "", "kind": 7, "label": "Isolate" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawReceivePort", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "RawReceivePort" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReceivePort", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Together with [SendPort], the only means of communication between isolates.\n\n[ReceivePort]s have a `sendPort` getter which returns a [SendPort].\nAny message that is sent through this [SendPort]\nis delivered to the [ReceivePort] it has been created from. There, the\nmessage is dispatched to the `ReceivePort`'s listener.\n\nA [ReceivePort] is a non-broadcast stream. This means that it buffers\nincoming messages until a listener is registered. Only one listener can\nreceive messages. See [Stream.asBroadcastStream] for transforming the port\nto a broadcast stream.\n\nA [ReceivePort] may have many [SendPort]s.", "detail": "", "kind": 7, "label": "ReceivePort" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IsolateSpawnException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Thrown when an isolate cannot be created.", "detail": "", "kind": 7, "label": "IsolateSpawnException" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RemoteError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Description of an error from another isolate.\n\nThis error has the same `toString()` and `stackTrace.toString()` behavior\nas the original error, but has no other features of the original error.", "detail": "", "kind": 7, "label": "RemoteError" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SendPort", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Sends messages to its [ReceivePort]s.\n\n[SendPort]s are created from [ReceivePort]s. Any message sent through\na [SendPort] is delivered to its corresponding [ReceivePort]. There might be\nmany [SendPort]s for the same [ReceivePort].\n\n[SendPort]s can be transmitted to other isolates, and they preserve equality\nwhen sent.", "detail": "", "kind": 7, "label": "SendPort" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Codec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Codec] encodes and (if supported) decodes data.\n\nCodecs can be fused. For example fusing [json] and [utf8] produces\nan encoder that can convert Json objects directly to bytes, or can decode\nbytes directly to json objects.\n\nFused codecs generally attempt to optimize the operations and can be faster\nthan executing each step of an encoding separately.", "detail": "", "kind": 7, "label": "Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Utf8Encoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts strings to their UTF-8 code units (a list of\nunsigned 8-bit integers).", "detail": "", "kind": 7, "label": "Utf8Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonUnsupportedObjectError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by JSON serialization if an object cannot be serialized.\n\nThe [unsupportedObject] field holds that object that failed to be serialized.\n\nIf an object isn't directly serializable, the serializer calls the `toJson`\nmethod on the object. If that call fails, the error will be stored in the\n[cause] field. If the call returns an object that isn't directly\nserializable, the [cause] is null.", "detail": "", "kind": 7, "label": "JsonUnsupportedObjectError" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Base64Codec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [base64](https://tools.ietf.org/html/rfc4648) encoder and decoder.\n\nA [Base64Codec] allows base64 encoding bytes into ASCII strings and\ndecoding valid encodings back to bytes.\n\nThis implementation only handles the simplest RFC 4648 base64 and base64url\nencodings.\nIt does not allow invalid characters when decoding and it requires,\nand generates, padding so that the input is always a multiple of four\ncharacters.", "detail": "", "kind": 7, "label": "Base64Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringConversionSinkMixin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides a mixin for converters that need to accept String\ninputs.", "detail": "", "kind": 7, "label": "StringConversionSinkMixin" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonCyclicError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Reports that an object could not be stringified due to cyclic references.\n\nAn object that references itself cannot be serialized by\n[JsonCodec.encode]/[JsonEncoder.convert].\nWhen the cycle is detected, a [JsonCyclicError] is thrown.", "detail": "", "kind": 7, "label": "JsonCyclicError" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteConversionSinkBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides a base-class for converters that need to accept byte\ninputs.", "detail": "", "kind": 7, "label": "ByteConversionSinkBase" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Base64Decoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Decoder for base64 encoded data.\n\nThis decoder accepts both base64 and base64url (\"url-safe\") encodings.\n\nThe encoding is required to be properly padded.", "detail": "", "kind": 7, "label": "Base64Decoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringConversionSink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides an interface for converters to\nefficiently transmit String data.\n\nInstead of limiting the interface to one non-chunked String it accepts\npartial strings or can be transformed into a byte sink that\naccepts UTF-8 code units.\n\nThis abstract class will likely get more methods over time. Implementers are\nurged to extend [StringConversionSinkBase] or to mix in\n[StringConversionSinkMixin], to ensure that their class covers the newly\nadded methods.", "detail": "", "kind": 7, "label": "StringConversionSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsciiCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An [AsciiCodec] allows encoding strings as ASCII bytes\nand decoding ASCII bytes to strings.", "detail": "", "kind": 7, "label": "AsciiCodec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonDecoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class parses JSON strings and builds the corresponding objects.", "detail": "", "kind": 7, "label": "JsonDecoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Converter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Converter] converts data from one representation into another.\n\nIt is recommended that implementations of `Converter` extend this class,\nto inherit any further methods that may be added to the class.", "detail": "", "kind": 7, "label": "Converter" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonEncoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts JSON objects to strings.", "detail": "", "kind": 7, "label": "JsonEncoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Base64Encoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Base64 and base64url encoding converter.\n\nEncodes lists of bytes using base64 or base64url encoding.\n\nThe results are ASCII strings using a restricted alphabet.", "detail": "", "kind": 7, "label": "Base64Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsciiEncoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts strings of only ASCII characters to bytes.", "detail": "", "kind": 7, "label": "AsciiEncoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringConversionSinkBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides a base-class for converters that need to accept String\ninputs.", "detail": "", "kind": 7, "label": "StringConversionSinkBase" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonCodec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [JsonCodec] encodes JSON objects to strings and decodes strings to\nJSON objects.\n\nExamples:\n\n var encoded = json.encode([1, 2, { \"a\": null }]);\n var decoded = json.decode('[\"foo\", { \"bar\": 499 }]');", "detail": "", "kind": 7, "label": "JsonCodec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Latin1Decoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts Latin-1 bytes (lists of unsigned 8-bit integers)\nto a string.", "detail": "", "kind": 7, "label": "Latin1Decoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Utf8Codec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Utf8Codec] encodes strings to utf-8 code units (bytes) and decodes\nUTF-8 code units to strings.", "detail": "", "kind": 7, "label": "Utf8Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Encoding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Open-ended Encoding enum.", "detail": "", "kind": 7, "label": "Encoding" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Latin1Encoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts strings of only ISO Latin-1 characters to bytes.", "detail": "", "kind": 7, "label": "Latin1Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClosableStringSink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [ClosableStringSink] extends the [StringSink] interface by adding a\n`close` method.", "detail": "", "kind": 7, "label": "ClosableStringSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LineSplitter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [StreamTransformer] that splits a [String] into individual lines.\n\nA line is terminated by either a CR (U+000D), a LF (U+000A), a\nCR+LF sequence (DOS line ending),\nand a final non-empty line can be ended by the end of the string.\n\nThe returned lines do not contain the line terminators.", "detail": "", "kind": 7, "label": "LineSplitter" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HtmlEscapeMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "HTML escape modes.\n\nAllows specifying a mode for HTML escaping that depend on the context\nwhere the escaped result is going to be used.\nThe relevant contexts are:\n\n* as text content of an HTML element.\n* as value of a (single- or double-) quoted attribute value.\n\nAll modes require escaping of `&` (ampersand) characters, and may\nenable escaping of more characters.\n\nCustom escape modes can be created using the [HtmlEscapeMode.HtmlEscapeMode]\nconstructor.", "detail": "", "kind": 7, "label": "HtmlEscapeMode" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteConversionSink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The [ByteConversionSink] provides an interface for converters to\nefficiently transmit byte data.\n\nInstead of limiting the interface to one non-chunked list of bytes it\naccepts its input in chunks (themselves being lists of bytes).\n\nThis abstract class will likely get more methods over time. Implementers are\nurged to extend or mix in [ByteConversionSinkBase] to ensure that their\nclass covers the newly added methods.", "detail": "", "kind": 7, "label": "ByteConversionSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChunkedConversionSink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [ChunkedConversionSink] is used to transmit data more efficiently between\ntwo converters during chunked conversions.\n\nThe basic `ChunkedConversionSink` is just a [Sink], and converters should\nwork with a plain `Sink`, but may work more efficiently with certain\nspecialized types of `ChunkedConversionSink`.\n\nIt is recommended that implementations of `ChunkedConversionSink` extend\nthis class, to inherit any further methods that may be added to the class.", "detail": "", "kind": 7, "label": "ChunkedConversionSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonUtf8Encoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Encoder that encodes a single object as a UTF-8 encoded JSON string.\n\nThis encoder works equivalently to first converting the object to\na JSON string, and then UTF-8 encoding the string, but without\ncreating an intermediate string.", "detail": "", "kind": 7, "label": "JsonUtf8Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HtmlEscape", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Converter which escapes characters with special meaning in HTML.\n\nThe converter finds characters that are significant in HTML source and\nreplaces them with corresponding HTML entities.\n\nThe characters that need escaping in HTML are:\n\n* `&` (ampersand) always need to be escaped.\n* `<` (less than) and '>' (greater than) when inside an element.\n* `\"` (quote) when inside a double-quoted attribute value.\n* `'` (apostrophe) when inside a single-quoted attribute value.\n Apostrophe is escaped as `'` instead of `'` since\n not all browsers understand `'`.\n* `/` (slash) is recommended to be escaped because it may be used\n to terminate an element in some HTML dialects.\n\nEscaping `>` (greater than) isn't necessary, but the result is often\nfound to be easier to read if greater-than is also escaped whenever\nless-than is.", "detail": "", "kind": 7, "label": "HtmlEscape" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Utf8Decoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts UTF-8 code units (lists of unsigned 8-bit integers)\nto a string.", "detail": "", "kind": 7, "label": "Utf8Decoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Latin1Codec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Latin1Codec] encodes strings to ISO Latin-1 (aka ISO-8859-1) bytes\nand decodes Latin-1 bytes to strings.", "detail": "", "kind": 7, "label": "Latin1Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsciiDecoder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "AsciiDecoder" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EventSink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Sink] that supports adding errors.\n\nThis makes it suitable for capturing the results of asynchronous\ncomputations, which can complete with a value or an error.\n\nThe [EventSink] has been designed to handle asynchronous events from\n[Stream]s. See, for example, [Stream.eventTransformed] which uses\n`EventSink`s to transform events.", "detail": "", "kind": 7, "label": "EventSink" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureOr", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A type representing values that are either `Future<T>` or `T`.\n\nThis class declaration is a public stand-in for an internal\nfuture-or-value generic type. References to this class are resolved to the\ninternal type.\n\nIt is a compile-time error for any class to extend, mix in or implement\n`FutureOr`.\n\nNote: the `FutureOr<T>` type is interpreted as `dynamic` in non strong-mode.\n\n# Examples\n``` dart\n// The `Future<T>.then` function takes a callback [f] that returns either\n// an `S` or a `Future<S>`.\nFuture<S> then<S>(FutureOr<S> f(T x), ...);\n\n// `Completer<T>.complete` takes either a `T` or `Future<T>`.\nvoid complete(FutureOr<T> value);\n```\n\n# Advanced\nThe `FutureOr<int>` type is actually the \"type union\" of the types `int` and\n`Future<int>`. This type union is defined in such a way that\n`FutureOr<Object>` is both a super- and sub-type of `Object` (sub-type\nbecause `Object` is one of the types of the union, super-type because\n`Object` is a super-type of both of the types of the union). Together it\nmeans that `FutureOr<Object>` is equivalent to `Object`.\n\nAs a corollary, `FutureOr<Object>` is equivalent to\n`FutureOr<FutureOr<Object>>`, `FutureOr<Future<Object>>` is equivalent to\n`Future<Object>`.", "detail": "", "kind": 7, "label": "FutureOr" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A controller with the stream it controls.\n\nThis controller allows sending data, error and done events on\nits [stream].\nThis class can be used to create a simple stream that others\ncan listen on, and to push events to that stream.\n\nIt's possible to check whether the stream is paused or not, and whether\nit has subscribers or not, as well as getting a callback when either of\nthese change.", "detail": "", "kind": 7, "label": "StreamController" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamTransformer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Transforms a Stream.\n\nWhen a stream's [Stream.transform] method is invoked with a\n[StreamTransformer], the stream calls the [bind] method on the provided\ntransformer. The resulting stream is then returned from the\n[Stream.transform] method.\n\nConceptually, a transformer is simply a function from [Stream] to [Stream]\nthat is encapsulated into a class.\n\nIt is good practice to write transformers that can be used multiple times.\n\nAll other transforming methods on [Stream], such as [Stream.map],\n[Stream.where] or [Stream.expand] can be implemented using\n[Stream.transform]. A [StreamTransformer] is thus very powerful but often\nalso a bit more complicated to use.", "detail": "", "kind": 7, "label": "StreamTransformer" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RunUnaryHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T arg) f, T arg) → R", "kind": 7, "label": "RunUnaryHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegisterBinaryCallbackHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T1 arg1, T2 arg2) f) → ZoneBinaryCallback<R, T1, T2>", "kind": 7, "label": "RegisterBinaryCallbackHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Future", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An object representing a delayed computation.\n\nA [Future] is used to represent a potential value, or error,\nthat will be available at some time in the future.\nReceivers of a [Future] can register callbacks\nthat handle the value or error once it is available.\nFor example:\n\n Future<int> future = getFuture();\n future.then((value) => handleValue(value))\n .catchError((error) => handleError(error));\n\nA [Future] can be completed in two ways:\nwith a value (\"the future succeeds\")\nor with an error (\"the future fails\").\nUsers can install callbacks for each case.\n\nIn some cases we say that a future is completed with another future.\nThis is a short way of stating that the future is completed in the same way,\nwith the same value or error,\nas the other future once that completes.\nWhenever a function in the core library may complete a future\n(for example [Completer.complete] or [new Future.value]),\nthen it also accepts another future and does this work for the developer.\n\nThe result of registering a pair of callbacks is a new Future (the\n\"successor\") which in turn is completed with the result of invoking the\ncorresponding callback.\nThe successor is completed with an error if the invoked callback throws.\nFor example:\n```\nFuture<int> successor = future.then((int value) {\n // Invoked when the future is completed with a value.\n return 42; // The successor is completed with the value 42.\n },\n onError: (e) {\n // Invoked when the future is completed with an error.\n if (canHandle(e)) {\n return 499; // The successor is completed with the value 499.\n } else {\n throw e; // The successor is completed with the error e.\n }\n });\n```\n\nIf a future does not have a successor when it completes with an error,\nit forwards the error message to the global error-handler.\nThis behavior makes sure that no error is silently dropped.\nHowever, it also means that error handlers should be installed early,\nso that they are present as soon as a future is completed with an error.\nThe following example demonstrates this potential bug:\n```\nvar future = getFuture();\nnew Timer(new Duration(milliseconds: 5), () {\n // The error-handler is not attached until 5 ms after the future has\n // been received. If the future fails before that, the error is\n // forwarded to the global error-handler, even though there is code\n // (just below) to eventually handle the error.\n future.then((value) { useValue(value); },\n onError: (e) { handleError(e); });\n});\n```\n\nWhen registering callbacks, it's often more readable to register the two\ncallbacks separately, by first using [then] with one argument\n(the value handler) and using a second [catchError] for handling errors.\nEach of these will forward the result that they don't handle\nto their successors, and together they handle both value and error result.\nIt also has the additional benefit of the [catchError] handling errors in the\n[then] value callback too.\nUsing sequential handlers instead of parallel ones often leads to code that\nis easier to reason about.\nIt also makes asynchronous code very similar to synchronous code:\n```\n// Synchronous code.\ntry {\n int value = foo();\n return bar(value);\n} catch (e) {\n return 499;\n}\n```\n\nEquivalent asynchronous code, based on futures:\n```\nFuture<int> future = new Future(foo); // Result of foo() as a future.\nfuture.then((int value) => bar(value))\n .catchError((e) => 499);\n```\n\nSimilar to the synchronous code, the error handler (registered with\n[catchError]) is handling any errors thrown by either `foo` or `bar`.\nIf the error-handler had been registered as the `onError` parameter of\nthe `then` call, it would not catch errors from the `bar` call.\n\nFutures can have more than one callback-pair registered. Each successor is\ntreated independently and is handled as if it was the only successor.\n\nA future may also fail to ever complete. In that case, no callbacks are\ncalled.", "detail": "", "kind": 7, "label": "Future" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamConsumer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Abstract interface for a \"sink\" accepting multiple entire streams.\n\nA consumer can accept a number of consecutive streams using [addStream],\nand when no further data need to be added, the [close] method tells the\nconsumer to complete its work and shut down.\n\nThe [Stream.pipe] accepts a `StreamConsumer` and will pass the stream\nto the consumer's [addStream] method. When that completes, it will\ncall [close] and then complete its own returned future.", "detail": "", "kind": 7, "label": "StreamConsumer" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamIterator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An [Iterator] like interface for the values of a [Stream].\n\nThis wraps a [Stream] and a subscription on the stream. It listens\non the stream, and completes the future returned by [moveNext] when the\nnext value becomes available.\n\nThe stream may be paused between calls to [moveNext].", "detail": "", "kind": 7, "label": "StreamIterator" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZoneSpecification", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides the specification for a forked zone.\n\nWhen forking a new zone (see [Zone.fork]) one can override the default\nbehavior of the zone by providing callbacks. These callbacks must be\ngiven in an instance of this class.\n\nHandlers have the same signature as the same-named methods on [Zone] but\nreceive three additional arguments:\n\n 1. the zone the handlers are attached to (the \"self\" zone).\n 2. a [ZoneDelegate] to the parent zone.\n 3. the zone that first received the request (before the request was\n bubbled up).\n\nHandlers can either stop propagation the request (by simply not calling the\nparent handler), or forward to the parent zone, potentially modifying the\narguments on the way.", "detail": "", "kind": 7, "label": "ZoneSpecification" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "[Stream] wrapper that only exposes the [Stream] interface.", "detail": "", "kind": 7, "label": "StreamView" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamSink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A object that accepts stream events both synchronously and asynchronously.\n\nA [StreamSink] combines the methods from [StreamConsumer] and [EventSink].\n\nThe [EventSink] methods can't be used while the [addStream] is called.\nAs soon as the [addStream]'s [Future] completes with a value, the\n[EventSink] methods can be used again.\n\nIf [addStream] is called after any of the [EventSink] methods, it'll\nbe delayed until the underlying system has consumed the data added by the\n[EventSink] methods.\n\nWhen [EventSink] methods are used, the [done] [Future] can be used to\ncatch any errors.\n\nWhen [close] is called, it will return the [done] [Future].", "detail": "", "kind": 7, "label": "StreamSink" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Timer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A count-down timer that can be configured to fire once or repeatedly.\n\nThe timer counts down from the specified duration to 0.\nWhen the timer reaches 0, the timer invokes the specified callback function.\nUse a periodic timer to repeatedly count down the same interval.\n\nA negative duration is treated the same as a duration of 0.\nIf the duration is statically known to be 0, consider using [run].\n\nFrequently the duration is either a constant or computed as in the\nfollowing example (taking advantage of the multiplication operator of\nthe [Duration] class):\n```dart\nconst timeout = const Duration(seconds: 3);\nconst ms = const Duration(milliseconds: 1);\n\nstartTimeout([int milliseconds]) {\n var duration = milliseconds == null ? timeout : ms * milliseconds;\n return new Timer(duration, handleTimeout);\n}\n...\nvoid handleTimeout() { // callback function\n ...\n}\n```\nNote: If Dart code using Timer is compiled to JavaScript, the finest\ngranularity available in the browser is 4 milliseconds.\n\nSee [Stopwatch] for measuring elapsed time.", "detail": "", "kind": 7, "label": "Timer" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stream", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A source of asynchronous data events.\n\nA Stream provides a way to receive a sequence of events.\nEach event is either a data event, also called an *element* of the stream,\nor an error event, which is a notification that something has failed.\nWhen a stream has emitted all its event,\na single \"done\" event will notify the listener that the end has been reached.\n\nYou [listen] on a stream to make it start generating events,\nand to set up listeners that receive the events.\nWhen you listen, you receive a [StreamSubscription] object\nwhich is the active object providing the events,\nand which can be used to stop listening again,\nor to temporarily pause events from the subscription.\n\nThere are two kinds of streams: \"Single-subscription\" streams and\n\"broadcast\" streams.\n\n*A single-subscription stream* allows only a single listener during the whole\nlifetime of the stream.\nIt doesn't start generating events until it has a listener,\nand it stops sending events when the listener is unsubscribed,\neven if the source of events could still provide more.\n\nListening twice on a single-subscription stream is not allowed, even after\nthe first subscription has been canceled.\n\nSingle-subscription streams are generally used for streaming chunks of\nlarger contiguous data like file I/O.\n\n*A broadcast stream* allows any number of listeners, and it fires\nits events when they are ready, whether there are listeners or not.\n\nBroadcast streams are used for independent events/observers.\n\nIf several listeners want to listen to a single subscription stream,\nuse [asBroadcastStream] to create a broadcast stream on top of the\nnon-broadcast stream.\n\nOn either kind of stream, stream transformations, such as [where] and\n[skip], return the same type of stream as the one the method was called on,\nunless otherwise noted.\n\nWhen an event is fired, the listener(s) at that time will receive the event.\nIf a listener is added to a broadcast stream while an event is being fired,\nthat listener will not receive the event currently being fired.\nIf a listener is canceled, it immediately stops receiving events.\nListening on a broadcast stream can be treated as listening on a new stream\ncontaining only the events that have not yet been emitted when the [listen]\ncall occurs.\nFor example, the [first] getter listens to the stream, then returns the first\nevent that listener receives.\nThis is not necessarily the first even emitted by the stream, but the first\nof the *remaining* events of the broadcast stream.\n\nWhen the \"done\" event is fired, subscribers are unsubscribed before\nreceiving the event. After the event has been sent, the stream has no\nsubscribers. Adding new subscribers to a broadcast stream after this point\nis allowed, but they will just receive a new \"done\" event as soon\nas possible.\n\nStream subscriptions always respect \"pause\" requests. If necessary they need\nto buffer their input, but often, and preferably, they can simply request\ntheir input to pause too.\n\nThe default implementation of [isBroadcast] returns false.\nA broadcast stream inheriting from [Stream] must override [isBroadcast]\nto return `true`.", "detail": "", "kind": 7, "label": "Stream" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HandleUncaughtErrorHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, Object error, StackTrace stackTrace) → void", "kind": 7, "label": "HandleUncaughtErrorHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZoneDelegate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An adapted view of the parent zone.\n\nThis class allows the implementation of a zone method to invoke methods on\nthe parent zone while retaining knowledge of the originating zone.\n\nCustom zones (created through [Zone.fork] or [runZoned]) can provide\nimplementations of most methods of zones. This is similar to overriding\nmethods on [Zone], except that this mechanism doesn't require subclassing.\n\nA custom zone function (provided through a [ZoneSpecification]) typically\nrecords or wraps its parameters and then delegates the operation to its\nparent zone using the provided [ZoneDelegate].\n\nWhile zones have access to their parent zone (through [Zone.parent]) it is\nrecommended to call the methods on the provided parent delegate for two\nreasons:\n1. the delegate methods take an additional `zone` argument which is the\n zone the action has been initiated in.\n2. delegate calls are more efficient, since the implementation knows how\n to skip zones that would just delegate to their parents.", "detail": "", "kind": 7, "label": "ZoneDelegate" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamTransformerBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Base class for implementing [StreamTransformer].\n\nContains default implementations of every method except [bind].", "detail": "", "kind": 7, "label": "StreamTransformerBase" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SynchronousStreamController", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A stream controller that delivers its events synchronously.\n\nA synchronous stream controller is intended for cases where\nan already asynchronous event triggers an event on a stream.\n\nInstead of adding the event to the stream in a later microtask,\ncausing extra latency, the event is instead fired immediately by the\nsynchronous stream controller, as if the stream event was\nthe current event or microtask.\n\nThe synchronous stream controller can be used to break the contract\non [Stream], and it must be used carefully to avoid doing so.\n\nThe only advantage to using a [SynchronousStreamController] over a\nnormal [StreamController] is the improved latency.\nOnly use the synchronous version if the improvement is significant,\nand if its use is safe. Otherwise just use a normal stream controller,\nwhich will always have the correct behavior for a [Stream], and won't\naccidentally break other code.\n\nAdding events to a synchronous controller should only happen as the\nvery last part of the handling of the original event.\nAt that point, adding an event to the stream is equivalent to\nreturning to the event loop and adding the event in the next microtask.\n\nEach listener callback will be run as if it was a top-level event\nor microtask. This means that if it throws, the error will be reported as\nuncaught as soon as possible.\nThis is one reason to add the event as the last thing in the original event\nhandler - any action done after adding the event will delay the report of\nerrors in the event listener callbacks.\n\nIf an event is added in a setting that isn't known to be another event,\nit may cause the stream's listener to get that event before the listener\nis ready to handle it. We promise that after calling [Stream.listen],\nyou won't get any events until the code doing the listen has completed.\nCalling [add] in response to a function call of unknown origin may break\nthat promise.\n\nAn [onListen] callback from the controller is *not* an asynchronous event,\nand adding events to the controller in the `onListen` callback is always\nwrong. The events will be delivered before the listener has even received\nthe subscription yet.\n\nThe synchronous broadcast stream controller also has a restrictions that a\nnormal stream controller does not:\nThe [add], [addError], [close] and [addStream] methods *must not* be\ncalled while an event is being delivered.\nThat is, if a callback on a subscription on the controller's stream causes\na call to any of the functions above, the call will fail.\nA broadcast stream may have more than one listener, and if an\nevent is added synchronously while another is being also in the process\nof being added, the latter event might reach some listeners before\nthe former. To prevent that, an event cannot be added while a previous\nevent is being fired.\nThis guarantees that an event is fully delivered when the\nfirst [add], [addError] or [close] returns,\nand further events will be delivered in the correct order.\n\nThis still only guarantees that the event is delivered to the subscription.\nIf the subscription is paused, the actual callback may still happen later,\nand the event will instead be buffered by the subscription.\nBarring pausing, and the following buffered events that haven't been\ndelivered yet, callbacks will be called synchronously when an event is added.\n\nAdding an event to a synchronous non-broadcast stream controller while\nanother event is in progress may cause the second event to be delayed\nand not be delivered synchronously, and until that event is delivered,\nthe controller will not act synchronously.", "detail": "", "kind": 7, "label": "SynchronousStreamController" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimeoutException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Thrown when a scheduled timeout happens while waiting for an async result.", "detail": "", "kind": 7, "label": "TimeoutException" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegisterCallbackHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function() f) → ZoneCallback<R>", "kind": 7, "label": "RegisterCallbackHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RunHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function() f) → R", "kind": 7, "label": "RunHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeferredLibrary", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Indicates that loading of [libraryName] is deferred.\n\nThis class is obsolete. Instead use the syntax:\nimport \"library.dart\" deferred as prefix;", "detail": "(Deprecated) ", "kind": 7, "label": "DeferredLibrary" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamSubscription", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A subscription on events from a [Stream].\n\nWhen you listen on a [Stream] using [Stream.listen],\na [StreamSubscription] object is returned.\n\nThe subscription provides events to the listener,\nand holds the callbacks used to handle the events.\nThe subscription can also be used to unsubscribe from the events,\nor to temporarily pause the events from the stream.", "detail": "", "kind": 7, "label": "StreamSubscription" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegisterUnaryCallbackHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T arg) f) → ZoneUnaryCallback<R, T>", "kind": 7, "label": "RegisterUnaryCallbackHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Zone", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A zone represents an environment that remains stable across asynchronous\ncalls.\n\nCode is always executed in the context of a zone, available as\n[Zone.current]. The initial `main` function runs in the context of the\ndefault zone ([Zone.root]). Code can be run in a different zone using either\n[runZoned], to create a new zone, or [Zone.run] to run code in the context of\nan existing zone likely created using [Zone.fork].\n\nDevelopers can create a new zone that overrides some of the functionality of\nan existing zone. For example, custom zones can replace of modify the\nbehavior of `print`, timers, microtasks or how uncaught errors are handled.\n\nThe [Zone] class is not subclassable, but users can provide custom zones by\nforking an existing zone (usually [Zone.current]) with a [ZoneSpecification].\nThis is similar to creating a new class that extends the base `Zone` class\nand that overrides some methods, except without actually creating a new\nclass. Instead the overriding methods are provided as functions that\nexplicitly take the equivalent of their own class, the \"super\" class and the\n`this` object as parameters.\n\nAsynchronous callbacks always run in the context of the zone where they were\nscheduled. This is implemented using two steps:\n1. the callback is first registered using one of [registerCallback],\n [registerUnaryCallback], or [registerBinaryCallback]. This allows the zone\n to record that a callback exists and potentially modify it (by returning a\n different callback). The code doing the registration (e.g., `Future.then`)\n also remembers the current zone so that it can later run the callback in\n that zone.\n2. At a later point the registered callback is run in the remembered zone.\n\nThis is all handled internally by the platform code and most users don't need\nto worry about it. However, developers of new asynchronous operations,\nprovided by the underlying system or through native extensions, must follow\nthe protocol to be zone compatible.\n\nFor convenience, zones provide [bindCallback] (and the corresponding\n[bindUnaryCallback] and [bindBinaryCallback]) to make it easier to respect\nthe zone contract: these functions first invoke the corresponding `register`\nfunctions and then wrap the returned function so that it runs in the current\nzone when it is later asynchronously invoked.\n\nSimilarly, zones provide [bindCallbackGuarded] (and the corresponding\n[bindUnaryCallbackGuarded] and [bindBinaryCallbackGuarded]), when the\ncallback should be invoked through [Zone.runGuarded].", "detail": "", "kind": 7, "label": "Zone" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RunBinaryHandler", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T1 arg1, T2 arg2) f, T1 arg1, T2 arg2) → R", "kind": 7, "label": "RunBinaryHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeferredLoadException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Thrown when a deferred library fails to load.", "detail": "", "kind": 7, "label": "DeferredLoadException" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Pair of error and stack trace. Returned by [Zone.errorCallback].", "detail": "", "kind": 7, "label": "AsyncError" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Completer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A way to produce Future objects and to complete them later\nwith a value or error.\n\nMost of the time, the simplest way to create a future is to just use\none of the [Future] constructors to capture the result of a single\nasynchronous computation:\n```\nnew Future(() { doSomething(); return result; });\n```\nor, if the future represents the result of a sequence of asynchronous\ncomputations, they can be chained using [Future.then] or similar functions\non [Future]:\n```\nFuture doStuff(){\n return someAsyncOperation().then((result) {\n return someOtherAsyncOperation(result);\n });\n}\n```\nIf you do need to create a Future from scratch — for example,\nwhen you're converting a callback-based API into a Future-based\none — you can use a Completer as follows:\n```\nclass AsyncOperation {\n Completer _completer = new Completer();\n\n Future<T> doOperation() {\n _startOperation();\n return _completer.future; // Send future object back to client.\n }\n\n // Something calls this when the value is ready.\n void _finishOperation(T result) {\n _completer.complete(result);\n }\n\n // If something goes wrong, call this.\n void _errorHappened(error) {\n _completer.completeError(error);\n }\n}\n```", "detail": "", "kind": 7, "label": "Completer" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint32ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint32List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint32ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int32List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 32-bit signed integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 32 bits,\ninterpreted as a signed 32-bit two's complement integer with values in the\nrange -2147483648 to 2147483647.", "detail": "", "kind": 7, "label": "Int32List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat32ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float32List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat32ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt32x4ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int32x4List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt32x4ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt64ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int64List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt64ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat64x2ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float64x2List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat64x2ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt16ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int16List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt16ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int16List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 16-bit signed integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 16 bits,\ninterpreted as a signed 16-bit two's complement integer with values in the\nrange -32768 to +32767.", "detail": "", "kind": 7, "label": "Int16List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat64ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float64List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat64ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int64List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 64-bit signed integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 64 bits,\ninterpreted as a signed 64-bit two's complement integer with values in the\nrange -9223372036854775808 to +9223372036854775807.", "detail": "", "kind": 7, "label": "Int64List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int32x4", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Int32x4 and operations.\n\nInt32x4 stores 4 32-bit bit-masks in \"lanes\".\nThe lanes are \"x\", \"y\", \"z\", and \"w\" respectively.", "detail": "", "kind": 7, "label": "Int32x4" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypedData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A typed view of a sequence of bytes.", "detail": "", "kind": 7, "label": "TypedData" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int8List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 8-bit signed integers.\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low eight bits,\ninterpreted as a signed 8-bit two's complement integer with values in the\nrange -128 to +127.", "detail": "", "kind": 7, "label": "Int8List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float32x4List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of Float32x4 numbers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation will be considerably more\nspace- and time-efficient than the default [List] implementation.", "detail": "", "kind": 7, "label": "Float32x4List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt8ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int8List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt8ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint8ClampedListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint8ClampedList] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint8ClampedListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableByteDataView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A read-only view of a [ByteData].", "detail": "", "kind": 7, "label": "UnmodifiableByteDataView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float32List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of IEEE 754 single-precision binary floating-point\nnumbers that is viewable as a [TypedData].\n\nFor long lists, this\nimplementation can be considerably more space- and time-efficient than\nthe default [List] implementation.\n\nDouble values stored in the list are converted to the nearest\nsingle-precision value. Values read are converted to a double\nvalue with the same value.", "detail": "", "kind": 7, "label": "Float32List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length, random-access sequence of bytes that also provides random\nand unaligned access to the fixed-width integers and floating point\nnumbers represented by those bytes.\n\n`ByteData` may be used to pack and unpack data from external sources\n(such as networks or files systems), and to process large quantities\nof numerical data more efficiently than would be possible\nwith ordinary [List] implementations.\n`ByteData` can save space, by eliminating the need for object headers,\nand time, by eliminating the need for data copies.\nFinally, `ByteData` may be used to intentionally reinterpret the bytes\nrepresenting one arithmetic type as another.\nFor example this code fragment determine what 32-bit signed integer\nis represented by the bytes of a 32-bit floating point number:\n\n var buffer = new Uint8List(8).buffer;\n var bdata = new ByteData.view(buffer);\n bdata.setFloat32(0, 3.04);\n int huh = bdata.getInt32(0);", "detail": "", "kind": 7, "label": "ByteData" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt32ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int32List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt32ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float64x2", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Float64x2 immutable value type and operations.\n\nFloat64x2 stores 2 64-bit floating point values in \"lanes\".\nThe lanes are \"x\" and \"y\" respectively.", "detail": "", "kind": 7, "label": "Float64x2" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint8ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint8List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint8ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableByteBufferView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A read-only view of a [ByteBuffer].", "detail": "", "kind": 7, "label": "UnmodifiableByteBufferView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint16ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint16List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint16ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint64List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 64-bit unsigned integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 64 bits,\ninterpreted as an unsigned 64-bit integer with values in the\nrange 0 to 18446744073709551615.", "detail": "", "kind": 7, "label": "Uint64List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint8ClampedList", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 8-bit unsigned integers.\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are clamped to an unsigned eight bit value.\nThat is, all values below zero are stored as zero\nand all values above 255 are stored as 255.", "detail": "", "kind": 7, "label": "Uint8ClampedList" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteBuffer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A sequence of bytes underlying a typed data object.\n\nUsed to process large quantities of binary or numerical data\nmore efficiently using a typed view.", "detail": "", "kind": 7, "label": "ByteBuffer" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float64List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of IEEE 754 double-precision binary floating-point\nnumbers that is viewable as a [TypedData].\n\nFor long lists, this\nimplementation can be considerably more space- and time-efficient than\nthe default [List] implementation.", "detail": "", "kind": 7, "label": "Float64List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint8List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 8-bit unsigned integers.\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low eight bits,\ninterpreted as an unsigned 8-bit integer with values in the\nrange 0 to 255.", "detail": "", "kind": 7, "label": "Uint8List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int32x4List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of Int32x4 numbers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation will be considerably more\nspace- and time-efficient than the default [List] implementation.", "detail": "", "kind": 7, "label": "Int32x4List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint64ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint64List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint64ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint32List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 32-bit unsigned integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 32 bits,\ninterpreted as an unsigned 32-bit integer with values in the\nrange 0 to 4294967295.", "detail": "", "kind": 7, "label": "Uint32List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint16List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 16-bit unsigned integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 16 bits,\ninterpreted as an unsigned 16-bit integer with values in the\nrange 0 to 65535.", "detail": "", "kind": 7, "label": "Uint16List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float64x2List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of Float64x2 numbers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation will be considerably more\nspace- and time-efficient than the default [List] implementation.", "detail": "", "kind": 7, "label": "Float64x2List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Endian", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Describes endianness to be used when accessing or updating a\nsequence of bytes.", "detail": "", "kind": 7, "label": "Endian" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float32x4", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Float32x4 immutable value type and operations.\n\nFloat32x4 stores 4 32-bit floating point values in \"lanes\".\nThe lanes are \"x\", \"y\", \"z\", and \"w\" respectively.", "detail": "", "kind": 7, "label": "Float32x4" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat32x4ListView", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float32x4List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat32x4ListView" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rectangle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A class for representing two-dimensional rectangles whose properties are\nimmutable.", "detail": "", "kind": 7, "label": "Rectangle" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Point", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A utility class for representing two-dimensional positions.", "detail": "", "kind": 7, "label": "Point" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Random", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A generator of random bool, int, or double values.\n\nThe default implementation supplies a stream of pseudo-random bits that are\nnot suitable for cryptographic purposes.\n\nUse the [Random.secure]() constructor for cryptographic purposes.", "detail": "", "kind": 7, "label": "Random" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MutableRectangle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A class for representing two-dimensional axis-aligned rectangles with\nmutable properties.", "detail": "", "kind": 7, "label": "MutableRectangle" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the runtime system when a type assertion fails.", "detail": "", "kind": 7, "label": "TypeError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Comparator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The signature of a generic comparison function.\n\nA comparison function represents an ordering on a type of objects.\nA total ordering on a type means that for two values, either they\nare equal or one is greater than the other (and the latter must then be\nsmaller than the former).\n\nA [Comparator] function represents such a total ordering by returning\n\n* a negative integer if [a] is smaller than [b],\n* zero if [a] is equal to [b], and\n* a positive integer if [a] is greater than [b].", "detail": "(T a, T b) → int", "kind": 7, "label": "Comparator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Match", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A result from searching within a string.\n\nA Match or an [Iterable] of Match objects is returned from [Pattern]\nmatching methods.\n\nThe following example finds all matches of a [RegExp] in a [String]\nand iterates through the returned iterable of Match objects.\n\n RegExp exp = new RegExp(r\"(\\w+)\");\n String str = \"Parse my string\";\n Iterable<Match> matches = exp.allMatches(str);\n for (Match m in matches) {\n String match = m.group(0);\n print(match);\n }\n\nThe output of the example is:\n\n Parse\n my\n string\n\nSome patterns, regular expressions in particular, may record substrings\nthat were part of the matching. These are called _groups_ in the Match\nobject. Some patterns may never have any groups, and their matches always\nhave zero [groupCount].", "detail": "", "kind": 7, "label": "Match" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Symbol", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Opaque name used by mirrors, invocations and [Function.apply].", "detail": "", "kind": 7, "label": "Symbol" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Set", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A collection of objects in which each object can occur only once.\n\nThat is, for each object of the element type, the object is either considered\nto be in the set, or to _not_ be in the set.\n\nSet implementations may consider some elements indistinguishable. These\nelements are treated as being the same for any operation on the set.\n\nThe default [Set] implementation, [LinkedHashSet], considers objects\nindistinguishable if they are equal with regard to\noperator [Object.==].\n\nIterating over elements of a set may be either unordered\nor ordered in some way. Examples:\n\n* A [HashSet] is unordered, which means that its iteration order is\n unspecified,\n* [LinkedHashSet] iterates in the insertion order of its elements, and\n* a sorted set like [SplayTreeSet] iterates the elements in sorted order.\n\nIt is generally not allowed to modify the set (add or remove elements) while\nan operation on the set is being performed, for example during a call to\n[forEach] or [containsAll]. Nor is it allowed to modify the set while\niterating either the set itself or any [Iterable] that is backed by the set,\nsuch as the ones returned by methods like [where] and [map].\n\nIt is generally not allowed to modify the equality of elements (and thus not\ntheir hashcode) while they are in the set. Some specialized subtypes may be\nmore permissive, in which case they should document this behavior.", "detail": "", "kind": 7, "label": "Set" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The operation was not allowed by the current state of the object.\n\nThis is a generic error used for a variety of different erroneous\nactions. The message should be descriptive.", "detail": "", "kind": 7, "label": "StateError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Deprecated", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The annotation `@Deprecated('migration')` marks a feature as deprecated.\n\nThe annotation [deprecated] is a shorthand for deprecating until\nan unspecified \"next release\" without migration instructions.\n\nThe intent of the `@Deprecated` annotation is to inform users of a feature\nthat they should change their code, even if it is currently still working\ncorrectly.\n\nA deprecated feature is scheduled to be removed at a later time, possibly\nspecified in [message]. A deprecated feature should not be used, code using\nit will break at some point in the future. If existing code is using the\nfeature it should be rewritten to not use the deprecated feature.\n\nA deprecated feature should document how the same effect can be achieved in\n[message], so the programmer knows how to rewrite the code.\n\nThe `@Deprecated` annotation applies to libraries, top-level declarations\n(variables, getters, setters, functions, classes and typedefs),\nclass-level declarations (variables, getters, setters, methods, operators or\nconstructors, whether static or not), named optional arguments and\ntrailing optional positional parameters.\n\nDeprecation is transitive:\n\n - If a library is deprecated, so is every member of it.\n - If a class is deprecated, so is every member of it.\n - If a variable is deprecated, so are its implicit getter and setter.\n\n\nA tool that processes Dart source code may report when:\n\n- the code imports a deprecated library.\n- the code exports a deprecated library, or any deprecated member of\n  a non-deprecated library.\n- the code refers statically to a deprecated declaration.\n- the code dynamically uses a member of an object with a statically known\n type, where the member is deprecated on the static type of the object.\n- the code dynamically calls a method with an argument where the\n corresponding optional parameter is deprecated on the object's static type.\n\n\nIf the deprecated use is inside a library, class or method which is itself\ndeprecated, the tool should not bother the user about it.\nA deprecated feature is expected to use other deprecated features.", "detail": "", "kind": 7, "label": "Deprecated" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "double", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A double-precision floating point number.\n\nRepresentation of Dart doubles containing double specific constants\nand operations and specializations of operations inherited from\n[num]. Dart doubles are 64-bit floating-point numbers as specified in the\nIEEE 754 standard.\n\nThe [double] type is contagious. Operations on [double]s return\n[double] results.\n\nIt is a compile-time error for a class to attempt to extend or implement\ndouble.", "detail": "", "kind": 7, "label": "double" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackTrace", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An interface implemented by all stack trace objects.\n\nA [StackTrace] is intended to convey information to the user about the call\nsequence that triggered an exception.\n\nThese objects are created by the runtime, it is not possible to create\nthem programmatically.", "detail": "", "kind": 7, "label": "StackTrace" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "pragma", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A hint to tools.\n\nTools that work with Dart programs may accept hints to guide their behavior\nas `pragma` annotations on declarations.\nEach tool decides which hints it accepts, what they mean, and whether and\nhow they apply to sub-parts of the annotated entity.\n\nTools that recognize pragma hints should pick a pragma prefix to identify\nthe tool. They should recognize any hint with a [name] starting with their\nprefix followed by `:` as if it was intended for that tool. A hint with a\nprefix for another tool should be ignored (unless compatibility with that\nother tool is a goal).\n\nA tool may recognize unprefixed names as well, if they would recognize that\nname with their own prefix in front.\n\nIf the hint can be parameterized, an extra [options] object can be added as well.\n\nFor example:\n\n```dart\n@pragma('Tool:pragma-name', [param1, param2, ...])\nclass Foo { }\n\n@pragma('OtherTool:other-pragma')\nvoid foo() { }\n```\n\nHere class Foo is annotated with a Tool specific pragma 'pragma-name' and\nfunction foo is annotated with a pragma 'other-pragma' specific to OtherTool.\n", "detail": "", "kind": 7, "label": "pragma" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RangeError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown due to an index being outside a valid range.", "detail": "", "kind": 7, "label": "RangeError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RuneIterator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "[Iterator] for reading runes (integer Unicode code points) out of a Dart\nstring.", "detail": "", "kind": 7, "label": "RuneIterator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegExp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A regular expression pattern.\n\nRegular expressions are [Pattern]s, and can as such be used to match strings\nor parts of strings.\n\nDart regular expressions have the same syntax and semantics as\nJavaScript regular expressions. See\n<http://ecma-international.org/ecma-262/5.1/#sec-15.10>\nfor the specification of JavaScript regular expressions.\n\n[firstMatch] is the main implementation method that applies a regular\nexpression to a string and returns the first [Match]. All\nother methods in [RegExp] can build on it.\n\nUse [allMatches] to look for all matches of a regular expression in\na string.\n\nThe following example finds all matches of a regular expression in\na string.\n```dart\nRegExp exp = new RegExp(r\"(\\w+)\");\nString str = \"Parse my string\";\nIterable<Match> matches = exp.allMatches(str);\n```\n\nNote the use of a _raw string_ (a string prefixed with `r`)\nin the example above. Use a raw string to treat each character in a string\nas a literal character.", "detail": "", "kind": 7, "label": "RegExp" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "bool", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The reserved words `true` and `false` denote objects that are the only two\ninstances of this class.\n\nIt is a compile-time error for a class to attempt to extend or implement\nbool.", "detail": "", "kind": 7, "label": "bool" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Future", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An object representing a delayed computation.\n\nA [Future] is used to represent a potential value, or error,\nthat will be available at some time in the future.\nReceivers of a [Future] can register callbacks\nthat handle the value or error once it is available.\nFor example:\n\n Future<int> future = getFuture();\n future.then((value) => handleValue(value))\n .catchError((error) => handleError(error));\n\nA [Future] can be completed in two ways:\nwith a value (\"the future succeeds\")\nor with an error (\"the future fails\").\nUsers can install callbacks for each case.\n\nIn some cases we say that a future is completed with another future.\nThis is a short way of stating that the future is completed in the same way,\nwith the same value or error,\nas the other future once that completes.\nWhenever a function in the core library may complete a future\n(for example [Completer.complete] or [new Future.value]),\nthen it also accepts another future and does this work for the developer.\n\nThe result of registering a pair of callbacks is a new Future (the\n\"successor\") which in turn is completed with the result of invoking the\ncorresponding callback.\nThe successor is completed with an error if the invoked callback throws.\nFor example:\n```\nFuture<int> successor = future.then((int value) {\n // Invoked when the future is completed with a value.\n return 42; // The successor is completed with the value 42.\n },\n onError: (e) {\n // Invoked when the future is completed with an error.\n if (canHandle(e)) {\n return 499; // The successor is completed with the value 499.\n } else {\n throw e; // The successor is completed with the error e.\n }\n });\n```\n\nIf a future does not have a successor when it completes with an error,\nit forwards the error message to the global error-handler.\nThis behavior makes sure that no error is silently dropped.\nHowever, it also means that error handlers should be installed early,\nso that they are present as soon as a future is completed with an error.\nThe following example demonstrates this potential bug:\n```\nvar future = getFuture();\nnew Timer(new Duration(milliseconds: 5), () {\n // The error-handler is not attached until 5 ms after the future has\n // been received. If the future fails before that, the error is\n // forwarded to the global error-handler, even though there is code\n // (just below) to eventually handle the error.\n future.then((value) { useValue(value); },\n onError: (e) { handleError(e); });\n});\n```\n\nWhen registering callbacks, it's often more readable to register the two\ncallbacks separately, by first using [then] with one argument\n(the value handler) and using a second [catchError] for handling errors.\nEach of these will forward the result that they don't handle\nto their successors, and together they handle both value and error result.\nIt also has the additional benefit of the [catchError] handling errors in the\n[then] value callback too.\nUsing sequential handlers instead of parallel ones often leads to code that\nis easier to reason about.\nIt also makes asynchronous code very similar to synchronous code:\n```\n// Synchronous code.\ntry {\n int value = foo();\n return bar(value);\n} catch (e) {\n return 499;\n}\n```\n\nEquivalent asynchronous code, based on futures:\n```\nFuture<int> future = new Future(foo); // Result of foo() as a future.\nfuture.then((int value) => bar(value))\n .catchError((e) => 499);\n```\n\nSimilar to the synchronous code, the error handler (registered with\n[catchError]) is handling any errors thrown by either `foo` or `bar`.\nIf the error-handler had been registered as the `onError` parameter of\nthe `then` call, it would not catch errors from the `bar` call.\n\nFutures can have more than one callback-pair registered. Each successor is\ntreated independently and is handled as if it was the only successor.\n\nA future may also fail to ever complete. In that case, no callbacks are\ncalled.", "detail": "", "kind": 7, "label": "Future" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Provisional", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An annotation class that was used during development of Dart 2.\n\nShould not be used any more.", "detail": "(Deprecated) ", "kind": 7, "label": "Provisional" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegExpMatch", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A regular expression match.\n\nRegular expression matches are [Match]es, but also include the ability\nto retrieve the names for any named capture groups and to retrieve\nmatches for named capture groups by name instead of their index.", "detail": "", "kind": 7, "label": "RegExpMatch" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ArgumentError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when a function is passed an unacceptable argument.", "detail": "", "kind": 7, "label": "ArgumentError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnimplementedError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Thrown by operations that have not been implemented yet.\n\nThis [Error] is thrown by unfinished code that hasn't yet implemented\nall the features it needs.\n\nIf a class is not intending to implement the feature, it should throw\nan [UnsupportedError] instead. This error is only intended for\nuse during development.", "detail": "", "kind": 7, "label": "UnimplementedError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NoSuchMethodError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the default implementation of [:noSuchMethod:] on [Object].", "detail": "", "kind": 7, "label": "NoSuchMethodError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CastError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the runtime system when a cast operation fails.", "detail": "", "kind": 7, "label": "CastError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "int", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An integer number.\n\nThe default implementation of `int` is 64-bit two's complement integers\nwith operations that wrap to that range on overflow.\n\n**Note:** When compiling to JavaScript, integers are restricted to values\nthat can be represented exactly by double-precision floating point values.\nThe available integer values include all integers between -2^53 and 2^53,\nand some integers with larger magnitude. That includes some integers larger\nthan 2^63.\nThe behavior of the operators and methods in the [int]\nclass therefore sometimes differs between the Dart VM and Dart code\ncompiled to JavaScript. For example, the bitwise operators truncate their\noperands to 32-bit integers when compiled to JavaScript.\n\nClasses cannot extend, implement, or mix in `int`.", "detail": "", "kind": 7, "label": "int" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "num", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An integer or floating-point number.\n\nIt is a compile-time error for any type other than [int] or [double]\nto attempt to extend or implement num.", "detail": "", "kind": 7, "label": "num" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Sink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A generic destination for data.\n\nMultiple data values can be put into a sink, and when no more data is\navailable, the sink should be closed.\n\nThis is a generic interface that other data receivers can implement.", "detail": "", "kind": 7, "label": "Sink" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringBuffer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A class for concatenating strings efficiently.\n\nAllows for the incremental building of a string using write*() methods.\nThe strings are concatenated to a single string only when [toString] is\ncalled.", "detail": "", "kind": 7, "label": "StringBuffer" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BidirectionalIterator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An Iterator that allows moving backwards as well as forwards.", "detail": "", "kind": 7, "label": "BidirectionalIterator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Error", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error objects thrown in the case of a program failure.\n\nAn `Error` object represents a program failure that the programmer\nshould have avoided.\n\nExamples include calling a function with invalid arguments,\nor even with the wrong number of arguments,\nor calling it at a time when it is not allowed.\n\nThese are not errors that a caller should expect or catch -\nif they occur, the program is erroneous,\nand terminating the program may be the safest response.\n\nWhen deciding that a function throws an error,\nthe conditions where it happens should be clearly described,\nand they should be detectable and predictable,\nso the programmer using the function can avoid triggering the error.\n\nSuch descriptions often uses words like\n\"must\" or \"must not\" to describe the condition,\nand if you see words like that in a function's documentation,\nthen not satisfying the requirement\nis very likely to cause an error to be thrown.\n\nExample (from [String.contains]):\n\n `startIndex` must not be negative or greater than `length`.\n\nIn this case, an error will be thrown if `startIndex` is negative\nor too large.\n\nIf the conditions are not detectable before calling a function,\nthe called function should not throw an `Error`.\nIt may still throw a value,\nbut the caller will have to catch the thrown value,\neffectively making it an alternative result rather than an error.\nThe thrown object can choose to implement [Exception]\nto document that it represents an exceptional, but not erroneous, occurrence,\nbut it has no other effect than documentation.\n\nAll non-`null` values can be thrown in Dart.\nObjects extending `Error` are handled specially:\nThe first time they are thrown,\nthe stack trace at the throw point is recorded\nand stored in the error object.\nIt can be retrieved using the [stackTrace] getter.\nAn error object that merely implements `Error`, and doesn't extend it,\nwill not store the stack trace automatically.\n\nError objects are also used for system wide failures\nlike stack overflow or an out-of-memory situation.\n\nSince errors are not created to be caught,\nthere is no need for subclasses to distinguish the errors.\nInstead subclasses have been created in order to make groups\nof related errors easy to create with consistent error messages.\nFor example, the [String.contains] method will use a [RangeError]\nif its `startIndex` isn't in the range `0..length`,\nwhich is easily created by `new RangeError.range(startIndex, 0, length)`.", "detail": "", "kind": 7, "label": "Error" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FallThroughError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when control reaches the end of a switch case.\n\nThe Dart specification requires this error to be thrown when\ncontrol reaches the end of a switch case (except the last case\nof a switch) without meeting a break or similar end of the control\nflow.", "detail": "", "kind": 7, "label": "FallThroughError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringSink", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "StringSink" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A specialized [RangeError] used when an index is not in the range\n`0..indexable.length-1`.\n\nAlso contains the indexable object, its length at the time of the error,\nand the invalid index itself.", "detail": "", "kind": 7, "label": "IndexError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Map", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A collection of key/value pairs, from which you retrieve a value\nusing its associated key.\n\nThere is a finite number of keys in the map,\nand each key has exactly one value associated with it.\n\nMaps, and their keys and values, can be iterated.\nThe order of iteration is defined by the individual type of map.\nExamples:\n\n* The plain [HashMap] is unordered (no order is guaranteed),\n* the [LinkedHashMap] iterates in key insertion order,\n* and a sorted map like [SplayTreeMap] iterates the keys in sorted order.\n\nIt is generally not allowed to modify the map (add or remove keys) while\nan operation is being performed on the map, for example in functions called\nduring a [forEach] or [putIfAbsent] call.\nModifying the map while iterating the keys or values\nmay also break the iteration.\n\nIt is generally not allowed to modify the equality of keys (and thus not\ntheir hashcode) while they are in the map. Some specialized subtypes may be\nmore permissive, in which case they should document this behavior.", "detail": "", "kind": 7, "label": "Map" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Duration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A span of time, such as 27 days, 4 hours, 12 minutes, and 3 seconds.\n\nA `Duration` represents a difference from one point in time to another. The\nduration may be \"negative\" if the difference is from a later time to an\nearlier.\n\nDurations are context independent. For example, a duration of 2 days is\nalways 48 hours, even when it is added to a `DateTime` just when the\ntime zone is about to do a daylight-savings switch. (See [DateTime.add]).\n\nDespite the same name, a `Duration` object does not implement \"Durations\"\nas specified by ISO 8601. In particular, a duration object does not keep\ntrack of the individually provided members (such as \"days\" or \"hours\"), but\nonly uses these arguments to compute the length of the corresponding time\ninterval.\n\nTo create a new Duration object, use this class's single constructor\ngiving the appropriate arguments:\n```dart\nDuration fastestMarathon = new Duration(hours:2, minutes:3, seconds:2);\n```\nThe [Duration] is the sum of all individual parts.\nThis means that individual parts can be larger than the next-bigger unit.\nFor example, [inMinutes] can be greater than 59.\n```dart\nassert(fastestMarathon.inMinutes == 123);\n```\nAll individual parts are allowed to be negative.\n\nUse one of the properties, such as [inDays],\nto retrieve the integer value of the Duration in the specified time unit.\nNote that the returned value is rounded down.\nFor example,\n```dart\nDuration aLongWeekend = new Duration(hours:88);\nassert(aLongWeekend.inDays == 3);\n```\nThis class provides a collection of arithmetic\nand comparison operators,\nplus a set of constants useful for converting time units.\n\nSee [DateTime] to represent a point in time.\nSee [Stopwatch] to measure time-spans.", "detail": "", "kind": 7, "label": "Duration" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stopwatch", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A simple stopwatch interface to measure elapsed time.", "detail": "", "kind": 7, "label": "Stopwatch" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Invocation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Representation of the invocation of a member on an object.\n\nThis is the type of objects passed to [Object.noSuchMethod] when\nan object doesn't support the member invocation that was attempted\non it.", "detail": "", "kind": 7, "label": "Invocation" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UriData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A way to access the structure of a `data:` URI.\n\nData URIs are non-hierarchical URIs that can contain any binary data.\nThey are defined by [RFC 2397](https://tools.ietf.org/html/rfc2397).\n\nThis class allows parsing the URI text and extracting individual parts of the\nURI, as well as building the URI text from structured parts.", "detail": "", "kind": 7, "label": "UriData" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssertionError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the runtime system when an assert statement fails.", "detail": "", "kind": 7, "label": "AssertionError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Exception", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A marker interface implemented by all core library exceptions.\n\nAn [Exception] is intended to convey information to the user about a failure,\nso that the error can be addressed programmatically. It is intended to be\ncaught, and it should contain useful data fields.\n\nCreating instances of [Exception] directly with [:new Exception(\"message\"):]\nis discouraged, and only included as a temporary measure during development,\nuntil the actual exceptions used by a library are done.", "detail": "", "kind": 7, "label": "Exception" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uri", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A parsed URI, such as a URL.\n\n**See also:**\n\n* [URIs][uris] in the [library tour][libtour]\n* [RFC-3986](http://tools.ietf.org/html/rfc3986)\n\n[uris]: https://www.dartlang.org/docs/dart-up-and-running/ch03.html#uris\n[libtour]: https://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html", "detail": "", "kind": 7, "label": "Uri" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntegerDivisionByZeroException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "IntegerDivisionByZeroException" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DateTime", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An instant in time, such as July 20, 1969, 8:18pm GMT.\n\nDateTimes can represent time values that are at a distance of at most\n100,000,000 days from epoch (1970-01-01 UTC): -271821-04-20 to 275760-09-13.\n\nCreate a DateTime object by using one of the constructors\nor by parsing a correctly formatted string,\nwhich complies with a subset of ISO 8601.\nNote that hours are specified between 0 and 23,\nas in a 24-hour clock.\nFor example:\n\n```\nvar now = new DateTime.now();\nvar berlinWallFell = new DateTime.utc(1989, 11, 9);\nvar moonLanding = DateTime.parse(\"1969-07-20 20:18:04Z\"); // 8:18pm\n```\n\nA DateTime object is anchored either in the UTC time zone\nor in the local time zone of the current computer\nwhen the object is created.\n\nOnce created, neither the value nor the time zone\nof a DateTime object may be changed.\n\nYou can use properties to get\nthe individual units of a DateTime object.\n\n```\nassert(berlinWallFell.month == 11);\nassert(moonLanding.hour == 20);\n```\n\nFor convenience and readability,\nthe DateTime class provides a constant for each day and month\nname - for example, [august] and [friday].\nYou can use these constants to improve code readability:\n\n```\nvar berlinWallFell = new DateTime.utc(1989, DateTime.november, 9);\nassert(berlinWallFell.weekday == DateTime.thursday);\n```\n\nDay and month values begin at 1, and the week starts on Monday.\nThat is, the constants [january] and [monday] are both 1.\n\n## Working with UTC and local time\n\nA DateTime object is in the local time zone\nunless explicitly created in the UTC time zone.\n\n```\nvar dDay = new DateTime.utc(1944, 6, 6);\n```\n\nUse [isUtc] to determine whether a DateTime object is based in UTC.\nUse the methods [toLocal] and [toUtc]\nto get the equivalent date/time value specified in the other time zone.\nUse [timeZoneName] to get an abbreviated name of the time zone\nfor the DateTime object.\nTo find the difference\nbetween UTC and the time zone of a DateTime object\ncall [timeZoneOffset].\n\n## Comparing DateTime objects\n\nThe DateTime class contains several handy methods,\nsuch as [isAfter], [isBefore], and [isAtSameMomentAs],\nfor comparing DateTime objects.\n\n```\nassert(berlinWallFell.isAfter(moonLanding) == true);\nassert(berlinWallFell.isBefore(moonLanding) == false);\n```\n\n## Using DateTime with Duration\n\nUse the [add] and [subtract] methods with a [Duration] object\nto create a new DateTime object based on another.\nFor example, to find the date that is sixty days (24 * 60 hours) after today,\nwrite:\n\n```\nvar now = new DateTime.now();\nvar sixtyDaysFromNow = now.add(new Duration(days: 60));\n```\n\nTo find out how much time is between two DateTime objects use\n[difference], which returns a [Duration] object:\n\n```\nvar difference = berlinWallFell.difference(moonLanding);\nassert(difference.inDays == 7416);\n```\n\nThe difference between two dates in different time zones\nis just the number of nanoseconds between the two points in time.\nIt doesn't take calendar days into account.\nThat means that the difference between two midnights in local time may be\nless than 24 hours times the number of days between them,\nif there is a daylight saving change in between.\nIf the difference above is calculated using Australian local time, the\ndifference is 7415 days and 23 hours, which is only 7415 whole days as\nreported by `inDays`.\n\n## Other resources\n\nSee [Duration] to represent a span of time.\nSee [Stopwatch] to measure timespans.\n\nThe DateTime class does not provide internationalization.\nTo internationalize your code, use\nthe [intl](https://pub.dartlang.org/packages/intl) package.\n", "detail": "", "kind": 7, "label": "DateTime" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "String", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A sequence of UTF-16 code units.\n\nStrings are mainly used to represent text. A character may be represented by\nmultiple code points, each code point consisting of one or two code\nunits. For example the Papua New Guinea flag character requires four code\nunits to represent two code points, but should be treated like a single\ncharacter: \"🇵🇬\". Platforms that do not support the flag character may show\nthe letters \"PG\" instead. If the code points are swapped, it instead becomes\nthe Guadeloupe flag \"🇬🇵\" (\"GP\").\n\nA string can be either single or multiline. Single line strings are\nwritten using matching single or double quotes, and multiline strings are\nwritten using triple quotes. The following are all valid Dart strings:\n\n 'Single quotes';\n \"Double quotes\";\n 'Double quotes in \"single\" quotes';\n \"Single quotes in 'double' quotes\";\n\n '''A\n multiline\n string''';\n\n \"\"\"\n Another\n multiline\n string\"\"\";\n\nStrings are immutable. Although you cannot change a string, you can perform\nan operation on a string and assign the result to a new string:\n\n var string = 'Dart is fun';\n var newString = string.substring(0, 5);\n\nYou can use the plus (`+`) operator to concatenate strings:\n\n 'Dart ' + 'is ' + 'fun!'; // 'Dart is fun!'\n\nYou can also use adjacent string literals for concatenation:\n\n 'Dart ' 'is ' 'fun!'; // 'Dart is fun!'\n\nYou can use `${}` to interpolate the value of Dart expressions\nwithin strings. The curly braces can be omitted when evaluating identifiers:\n\n string = 'dartlang';\n '$string has ${string.length} letters'; // 'dartlang has 8 letters'\n\nA string is represented by a sequence of Unicode UTF-16 code units\naccessible through the [codeUnitAt] or the [codeUnits] members:\n\n string = 'Dart';\n string.codeUnitAt(0); // 68\n string.codeUnits; // [68, 97, 114, 116]\n\nThe string representation of code units is accessible through the index\noperator:\n\n string[0]; // 'D'\n\nThe characters of a string are encoded in UTF-16. Decoding UTF-16, which\ncombines surrogate pairs, yields Unicode code points. Following a similar\nterminology to Go, we use the name 'rune' for an integer representing a\nUnicode code point. Use the [runes] property to get the runes of a string:\n\n string.runes.toList(); // [68, 97, 114, 116]\n\nFor a character outside the Basic Multilingual Plane (plane 0) that is\ncomposed of a surrogate pair, [runes] combines the pair and returns a\nsingle integer. For example, the Unicode character for a\nmusical G-clef ('𝄞') with rune value 0x1D11E consists of a UTF-16 surrogate\npair: `0xD834` and `0xDD1E`. Using [codeUnits] returns the surrogate pair,\nand using `runes` returns their combined value:\n\n var clef = '\\u{1D11E}';\n clef.codeUnits; // [0xD834, 0xDD1E]\n clef.runes.toList(); // [0x1D11E]\n\nThe String class can not be extended or implemented. Attempting to do so\nyields a compile-time error.\n\n## Other resources\n\nSee [StringBuffer] to efficiently build a string incrementally. See\n[RegExp] to work with regular expressions.\n\nAlso see:\n\n* [Dart Cookbook](https://www.dartlang.org/docs/cookbook/#strings)\n for String examples and recipes.\n* [Dart Up and Running](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#strings-and-regular-expressions)", "detail": "", "kind": 7, "label": "String" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CyclicInitializationError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when a lazily initialized variable cannot be initialized.\n\nA static/library variable with an initializer expression is initialized\nthe first time it is read. If evaluating the initializer expression causes\nanother read of the variable, this error is thrown.", "detail": "", "kind": 7, "label": "CyclicInitializationError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expando", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An [Expando] allows adding new properties to objects.\n\nDoes not work on numbers, strings, booleans or null.\n\nAn `Expando` does not hold on to the added property value after an object\nbecomes inaccessible.\n\nSince you can always create a new number that is identical to an existing\nnumber, it means that an expando property on a number could never be\nreleased. To avoid this, expando properties cannot be added to numbers.\nThe same argument applies to strings, booleans and null, which also have\nliterals that evaluate to identical values when they occur more than once.\n\nThere is no restriction on other classes, even for compile time constant\nobjects. Be careful if adding expando properties to compile time constants,\nsince they will stay alive forever.", "detail": "", "kind": 7, "label": "Expando" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Function", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The base class for all function types.\n\nA function value, or an instance of a class with a \"call\" method, is a\nsubtype of a function type, and as such, a subtype of [Function].", "detail": "", "kind": 7, "label": "Function" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Type", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Runtime representation of a type.", "detail": "", "kind": 7, "label": "Type" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Comparable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Interface used by types that have an intrinsic ordering.\n\nThe [compareTo] operation defines a total ordering of objects,\nwhich can be used for ordering and sorting.\n\nThe [Comparable] interface should be used for the natural ordering of a type.\nIf a type can be ordered in more than one way,\nand none of them is the obvious natural ordering,\nthen it might be better not to use the [Comparable] interface,\nand to provide separate [Comparator]s instead.\n\nIt is recommended that the order of a [Comparable] agrees\nwith its operator [operator ==] equality (`a.compareTo(b) == 0` iff `a == b`),\nbut this is not a requirement.\nFor example, [double] and [DateTime] have `compareTo` methods\nthat do not agree with operator [operator ==].\nFor doubles the [compareTo] method is more precise than the equality,\nand for [DateTime] it is less precise.\n\nExamples:\n\n (0.0).compareTo(-0.0); // => 1\n 0.0 == -0.0; // => true\n var dt = new DateTime.now();\n var dt2 = dt.toUtc();\n dt == dt2; // => false\n dt.compareTo(dt2); // => 0\n\nThe [Comparable] interface does not imply the existence\nof the comparison operators `<`, `<=`, `>` and `>=`.\nThese should only be defined\nif the ordering is a less-than/greater-than ordering,\nthat is, an ordering where you would naturally\nuse the words \"less than\" about the order of two elements.\n\nIf the equality operator and [compareTo] disagree,\nthe comparison operators should follow the equality operator,\nand will likely also disagree with [compareTo].\nOtherwise they should match the [compareTo] method,\nso that `a < b` iff `a.compareTo(b) < 0`.\n\nThe [double] class defines comparison operators\nthat are compatible with equality.\nThe operators differ from `double.compareTo` on -0.0 and NaN.\n\nThe [DateTime] class has no comparison operators, instead it has the more\nprecisely named [DateTime.isBefore] and [DateTime.isAfter].", "detail": "", "kind": 7, "label": "Comparable" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Iterator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An interface for getting items, one at a time, from an object.\n\nThe for-in construct transparently uses `Iterator` to test for the end\nof the iteration, and to get each item (or _element_).\n\nIf the object iterated over is changed during the iteration, the\nbehavior is unspecified.\n\nThe `Iterator` is initially positioned before the first element.\nBefore accessing the first element the iterator must thus be advanced using\n[moveNext] to point to the first element.\nIf no element is left, then [moveNext] returns false, [current]\nreturns `null`, and all further calls to [moveNext] will also return false.\n\nA typical usage of an Iterator looks as follows:\n\n var it = obj.iterator;\n while (it.moveNext()) {\n use(it.current);\n }\n\n**See also:**\n[Iteration](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html#iteration)\nin the [library tour](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html)", "detail": "", "kind": 7, "label": "Iterator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConcurrentModificationError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error occurring when a collection is modified during iteration.\n\nSome modifications may be allowed for some collections, so each collection\n([Iterable] or similar collection of values) should declare which operations\nare allowed during an iteration.", "detail": "", "kind": 7, "label": "ConcurrentModificationError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbstractClassInstantiationError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when trying to instantiate an abstract class.", "detail": "", "kind": 7, "label": "AbstractClassInstantiationError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BigInt", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An arbitrarily large integer.", "detail": "", "kind": 7, "label": "BigInt" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnsupportedError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The operation was not allowed by the object.\n\nThis [Error] is thrown when an instance cannot implement one of the methods\nin its signature.", "detail": "", "kind": 7, "label": "UnsupportedError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Iterable", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A collection of values, or \"elements\", that can be accessed sequentially.\n\nThe elements of the iterable are accessed by getting an [Iterator]\nusing the [iterator] getter, and using it to step through the values.\nStepping with the iterator is done by calling [Iterator.moveNext],\nand if the call returns `true`,\nthe iterator has now moved to the next element,\nwhich is then available as [Iterator.current].\nIf the call returns `false`, there are no more elements,\nand `iterator.current` returns `null`.\n\nYou can create more than one iterator from the same `Iterable`.\nEach time `iterator` is read, it returns a new iterator,\nand different iterators can be stepped through independently,\neach giving access to all the elements of the iterable.\nThe iterators of the same iterable *should* provide the same values\nin the same order (unless the underlying collection is modified between\nthe iterations, which some collections allow).\n\nYou can also iterate over the elements of an `Iterable`\nusing the for-in loop construct, which uses the `iterator` getter behind the\nscenes.\nFor example, you can iterate over all of the keys of a [Map],\nbecause `Map` keys are iterable.\n\n Map kidsBooks = {'Matilda': 'Roald Dahl',\n 'Green Eggs and Ham': 'Dr Seuss',\n 'Where the Wild Things Are': 'Maurice Sendak'};\n for (var book in kidsBooks.keys) {\n print('$book was written by ${kidsBooks[book]}');\n }\n\nThe [List] and [Set] classes are both `Iterable`,\nas are most classes in the `dart:collection` library.\n\nSome [Iterable] collections can be modified.\nAdding an element to a `List` or `Set` will change which elements it\ncontains, and adding a new key to a `Map` changes the elements of [Map.keys].\nIterators created after the change will provide the new elements, and may\nor may not preserve the order of existing elements\n(for example, a [HashSet] may completely change its order when a single\nelement is added).\n\nChanging a collection *while* it is being iterated\nis generally *not* allowed.\nDoing so will break the iteration, which is typically signalled\nby throwing a [ConcurrentModificationError]\nthe next time [Iterator.moveNext] is called.\nThe current value of [Iterator.current] getter\nshould not be affected by the change in the collection,\nthe `current` value was set by the previous call to [Iterator.moveNext].\n\nSome iterables compute their elements dynamically every time they are\niterated, like the one returned by [Iterable.generate] or the iterable\nreturned by a `sync*` generator function. If the computation doesn't depend\non other objects that may change, then the generated sequence should be\nthe same one every time it's iterated.\n\nThe members of `Iterable`, other than `iterator` itself,\nwork by looking at the elements of the iterable.\nThis can be implemented by running through the [iterator], but some classes\nmay have more efficient ways of finding the result\n(like [last] or [length] on a [List], or [contains] on a [Set]).\n\nThe methods that return another `Iterable` (like [map] and [where])\nare all *lazy* - they will iterate the original (as necessary)\nevery time the returned iterable is iterated, and not before.\n\nSince an iterable may be iterated more than once, it's not recommended to\nhave detectable side-effects in the iterator.\nFor methods like [map] and [where], the returned iterable will execute the\nargument function on every iteration, so those functions should also not\nhave side effects.", "detail": "", "kind": 7, "label": "Iterable" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormatException", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Exception thrown when a string or some other data does not have an expected\nformat and cannot be parsed or processed.", "detail": "", "kind": 7, "label": "FormatException" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "List", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An indexable collection of objects with a length.\n\nSubclasses of this class implement different kinds of lists.\nThe most common kinds of lists are:\n\n* Fixed-length list.\n An error occurs when attempting to use operations\n that can change the length of the list.\n\n* Growable list. Full implementation of the API defined in this class.\n\nThe default growable list, as returned by `new List()` or `[]`, keeps\nan internal buffer, and grows that buffer when necessary. This guarantees\nthat a sequence of [add] operations will each execute in amortized constant\ntime. Setting the length directly may take time proportional to the new\nlength, and may change the internal capacity so that a following add\noperation will need to immediately increase the buffer capacity.\nOther list implementations may have different performance behavior.\n\nThe following code illustrates that some List implementations support\nonly a subset of the API.\n\n List<int> fixedLengthList = new List(5);\n fixedLengthList.length = 0; // Error\n fixedLengthList.add(499); // Error\n fixedLengthList[0] = 87;\n List<int> growableList = [1, 2];\n growableList.length = 0;\n growableList.add(499);\n growableList[0] = 87;\n\nLists are [Iterable]. Iteration occurs over values in index order. Changing\nthe values does not affect iteration, but changing the valid\nindices—that is, changing the list's length—between iteration\nsteps causes a [ConcurrentModificationError]. This means that only growable\nlists can throw ConcurrentModificationError. If the length changes\ntemporarily and is restored before continuing the iteration, the iterator\ndoes not detect it.\n\nIt is generally not allowed to modify the list's length (adding or removing\nelements) while an operation on the list is being performed,\nfor example during a call to [forEach] or [sort].\nChanging the list's length while it is being iterated, either by iterating it\ndirectly or through iterating an [Iterable] that is backed by the list, will\nbreak the iteration.", "detail": "", "kind": 7, "label": "List" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stream", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A source of asynchronous data events.\n\nA Stream provides a way to receive a sequence of events.\nEach event is either a data event, also called an *element* of the stream,\nor an error event, which is a notification that something has failed.\nWhen a stream has emitted all its event,\na single \"done\" event will notify the listener that the end has been reached.\n\nYou [listen] on a stream to make it start generating events,\nand to set up listeners that receive the events.\nWhen you listen, you receive a [StreamSubscription] object\nwhich is the active object providing the events,\nand which can be used to stop listening again,\nor to temporarily pause events from the subscription.\n\nThere are two kinds of streams: \"Single-subscription\" streams and\n\"broadcast\" streams.\n\n*A single-subscription stream* allows only a single listener during the whole\nlifetime of the stream.\nIt doesn't start generating events until it has a listener,\nand it stops sending events when the listener is unsubscribed,\neven if the source of events could still provide more.\n\nListening twice on a single-subscription stream is not allowed, even after\nthe first subscription has been canceled.\n\nSingle-subscription streams are generally used for streaming chunks of\nlarger contiguous data like file I/O.\n\n*A broadcast stream* allows any number of listeners, and it fires\nits events when they are ready, whether there are listeners or not.\n\nBroadcast streams are used for independent events/observers.\n\nIf several listeners want to listen to a single subscription stream,\nuse [asBroadcastStream] to create a broadcast stream on top of the\nnon-broadcast stream.\n\nOn either kind of stream, stream transformations, such as [where] and\n[skip], return the same type of stream as the one the method was called on,\nunless otherwise noted.\n\nWhen an event is fired, the listener(s) at that time will receive the event.\nIf a listener is added to a broadcast stream while an event is being fired,\nthat listener will not receive the event currently being fired.\nIf a listener is canceled, it immediately stops receiving events.\nListening on a broadcast stream can be treated as listening on a new stream\ncontaining only the events that have not yet been emitted when the [listen]\ncall occurs.\nFor example, the [first] getter listens to the stream, then returns the first\nevent that listener receives.\nThis is not necessarily the first even emitted by the stream, but the first\nof the *remaining* events of the broadcast stream.\n\nWhen the \"done\" event is fired, subscribers are unsubscribed before\nreceiving the event. After the event has been sent, the stream has no\nsubscribers. Adding new subscribers to a broadcast stream after this point\nis allowed, but they will just receive a new \"done\" event as soon\nas possible.\n\nStream subscriptions always respect \"pause\" requests. If necessary they need\nto buffer their input, but often, and preferably, they can simply request\ntheir input to pause too.\n\nThe default implementation of [isBroadcast] returns false.\nA broadcast stream inheriting from [Stream] must override [isBroadcast]\nto return `true`.", "detail": "", "kind": 7, "label": "Stream" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapEntry", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A key/value pair representing an entry in a [Map].", "detail": "", "kind": 7, "label": "MapEntry" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackOverflowError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "StackOverflowError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Pattern", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An interface for basic searches within strings.", "detail": "", "kind": 7, "label": "Pattern" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NullThrownError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when attempting to throw [:null:].", "detail": "", "kind": 7, "label": "NullThrownError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OutOfMemoryError", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "OutOfMemoryError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Object", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The base class for all Dart objects.\n\nBecause Object is the root of the Dart class hierarchy,\nevery other Dart class is a subclass of Object.\n\nWhen you define a class, you should override [toString]\nto return a string describing an instance of that class.\nYou might also need to define [hashCode] and [operator ==], as described in the\n[Implementing map\nkeys](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#implementing-map-keys)\nsection of the [library\ntour](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html).", "detail": "", "kind": 7, "label": "Object" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Runes", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The runes (integer Unicode code points) of a [String].", "detail": "", "kind": 7, "label": "Runes" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Null", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The reserved word [:null:] denotes an object that is the sole instance of\nthis class.\n\nIt is a compile-time error for a class to attempt to extend or implement\nNull.", "detail": "", "kind": 7, "label": "Null" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IsolateNameServer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Static methods to allow for simple sharing of [SendPort]s across [Isolate]s.\n\nAll isolates share a global mapping of names to ports. An isolate can\nregister a [SendPort] with a given name using [registerPortWithName];\nanother isolate can then look up that port using [lookupPortByName].\n\nTo create a [SendPort], first create a [ReceivePort], then use\n[ReceivePort.sendPort].\n\nSince multiple isolates can each obtain the same [SendPort] associated with\na particular [ReceivePort], the protocol built on top of this mechanism\nshould typically consist of a single message. If more elaborate two-way\ncommunication or multiple-message communication is necessary, it is\nrecommended to establish a separate communication channel in that first\nmessage (e.g. by passing a dedicated [SendPort]).", "detail": "", "kind": 7, "label": "IsolateNameServer" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tangent", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The geometric description of a tangent: the angle at a point.\n\nSee also:\n * [PathMetric.getTangentForOffset], which returns the tangent of an offset along a path.", "detail": "", "kind": 7, "label": "Tangent" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Vertices", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A set of vertex data used by [Canvas.drawVertices].", "detail": "", "kind": 7, "label": "Vertices" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccessibilityFeatures", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Additional accessibility features that may be enabled by the platform.\n\nIt is not possible to enable these settings from Flutter, instead they are\nused by the platform to indicate that additional accessibility features are\nenabled.", "detail": "", "kind": 7, "label": "AccessibilityFeatures" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathMetrics", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An iterable collection of [PathMetric] objects describing a [Path].\n\nA [PathMetrics] object is created by using the [Path.computeMetrics] method,\nand represents the path as it stood at the time of the call. Subsequent\nmodifications of the path do not affect the [PathMetrics] object.\n\nEach path metric corresponds to a segment, or contour, of a path.\n\nFor example, a path consisting of a [Path.lineTo], a [Path.moveTo], and\nanother [Path.lineTo] will contain two contours and thus be represented by\ntwo [PathMetric] objects.\n\nWhen iterating across a [PathMetrics]' contours, the [PathMetric] objects are only\nvalid until the next one is obtained.", "detail": "", "kind": 7, "label": "PathMetrics" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxWidthStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines various ways to horizontally bound the boxes returned by\n[Paragraph.getBoxesForRange].", "detail": "", "kind": 13, "label": "BoxWidthStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PixelFormat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The format of pixel data given to [decodeImageFromPixels].", "detail": "", "kind": 13, "label": "PixelFormat" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsAction", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The possible actions that can be conveyed from the operating system\naccessibility APIs to a semantics node.", "detail": "", "kind": 7, "label": "SemanticsAction" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paragraph", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A paragraph of text.\n\nA paragraph retains the size and position of each glyph in the text and can\nbe efficiently resized and painted.\n\nTo create a [Paragraph] object, use a [ParagraphBuilder].\n\nParagraphs can be displayed on a [Canvas] using the [Canvas.drawParagraph]\nmethod.", "detail": "", "kind": 7, "label": "Paragraph" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scene", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object representing a composited scene.\n\nTo create a Scene object, use a [SceneBuilder].\n\nScene objects can be displayed on the screen using the\n[Window.render] method.", "detail": "", "kind": 7, "label": "Scene" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EngineLayer", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A handle for the framework to hold and retain an engine layer across frames.", "detail": "", "kind": 7, "label": "EngineLayer" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxHeightStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines various ways to vertically bound the boxes returned by\n[Paragraph.getBoxesForRange].", "detail": "", "kind": 13, "label": "BoxHeightStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrameCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onBeginFrame].", "detail": "(Duration duration) → void", "kind": 7, "label": "FrameCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object that determines the size, position, and rendering of text.\n\nSee also:\n\n * [TextStyle](https://api.flutter.dev/flutter/painting/TextStyle-class.html), the class in the [painting] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParagraphStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object that determines the configuration used by\n[ParagraphBuilder] to position lines within a [Paragraph] of text.", "detail": "", "kind": 7, "label": "ParagraphStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsUpdate", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object representing a batch of semantics updates.\n\nTo create a SemanticsUpdate object, use a [SemanticsUpdateBuilder].\n\nSemantics updates can be applied to the system's retained semantics tree\nusing the [Window.updateSemantics] method.", "detail": "", "kind": 7, "label": "SemanticsUpdate" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageDecoderCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Callback signature for [decodeImageFromList].", "detail": "(Image result) → void", "kind": 7, "label": "ImageDecoderCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathMetric", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Utilities for measuring a [Path] and extracting sub-paths.\n\nIterate over the object returned by [Path.computeMetrics] to obtain\n[PathMetric] objects.\n\nOnce created, the methods on this class will only be valid while the\niterator is at the contour for which they were created. It will also only be\nvalid for the path as it was specified when [Path.computeMetrics] was called.\nIf additional contours are added or any contours are updated, the metrics\nneed to be recomputed. Previously created metrics will still refer to a\nsnapshot of the path at the time they were computed, rather than to the\nactual metrics for the new mutations to the path.", "detail": "", "kind": 7, "label": "PathMetric" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParagraphBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Builds a [Paragraph] containing text with the given styling information.\n\nTo set the paragraph's alignment, truncation, and ellipsizing behavior, pass\nan appropriately-configured [ParagraphStyle] object to the [new\nParagraphBuilder] constructor.\n\nThen, call combinations of [pushStyle], [addText], and [pop] to add styled\ntext to the object.\n\nFinally, call [build] to obtain the constructed [Paragraph] object. After\nthis point, the builder is no longer usable.\n\nAfter constructing a [Paragraph], call [Paragraph.layout] on it and then\npaint it with [Canvas.drawParagraph].", "detail": "", "kind": 7, "label": "ParagraphBuilder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Codec", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A handle to an image codec.\n\nThis class is created by the engine, and should not be instantiated\nor extended directly.\n\nTo obtain an instance of the [Codec] interface, see\n[instantiateImageCodec].", "detail": "", "kind": 7, "label": "Codec" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformMessageCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onPlatformMessage].", "detail": "(String name, ByteData data, PlatformMessageResponseCallback callback) → void", "kind": 7, "label": "PlatformMessageCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOp", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines how a new clip region should be merged with the existing clip\nregion.\n\nUsed by [Canvas.clipRect].", "detail": "", "kind": 13, "label": "ClipOp" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SceneHost", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "(Fuchsia-only) Hosts content provided by another application.", "detail": "", "kind": 7, "label": "SceneHost" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDeviceKind", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The kind of pointer device.", "detail": "", "kind": 13, "label": "PointerDeviceKind" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Picture", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An object representing a sequence of recorded graphical operations.\n\nTo create a [Picture], use a [PictureRecorder].\n\nA [Picture] can be placed in a [Scene] using a [SceneBuilder], via\nthe [SceneBuilder.addPicture] method. A [Picture] can also be\ndrawn into a [Canvas], using the [Canvas.drawPicture] method.", "detail": "", "kind": 7, "label": "Picture" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WindowPadding", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A representation of distances for each of the four edges of a rectangle,\nused to encode the view insets and padding that applications should place\naround their user interface, as exposed by [Window.viewInsets] and\n[Window.padding]. View insets and padding are preferably read via\n[MediaQuery.of].\n\nFor a generic class that represents distances around a rectangle, see the\n[EdgeInsets] class.\n\nSee also:\n\n * [WidgetsBindingObserver], for a widgets layer mechanism to receive\n notifications when the padding changes.\n * [MediaQuery.of], for the preferred mechanism for accessing these values.\n * [Scaffold], which automatically applies the padding in material design\n applications.", "detail": "", "kind": 7, "label": "WindowPadding" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsFlag", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A Boolean value that can be associated with a semantics node.", "detail": "", "kind": 7, "label": "SemanticsFlag" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OffsetBase", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for [Size] and [Offset], which are both ways to describe\na distance as a two-dimensional axis-aligned vector.", "detail": "", "kind": 7, "label": "OffsetBase" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that renders a color gradient.\n\nThere are several types of gradients, represented by the various constructors\non this class.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/painting/Gradient-class.html), the class in the [painting] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PluginUtilities", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Functionality for Flutter plugin authors.\n\nSee also:\n\n * [IsolateNameServer], which provides utilities for dealing with\n [Isolate]s.", "detail": "", "kind": 7, "label": "PluginUtilities" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Window", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The most basic interface to the host operating system's user interface.\n\nThere is a single Window instance in the system, which you can\nobtain from the [window] property.", "detail": "", "kind": 7, "label": "Window" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformMessageResponseCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for responses to platform messages.\n\nUsed as a parameter to [Window.sendPlatformMessage] and\n[Window.onPlatformMessage].", "detail": "(ByteData data) → void", "kind": 7, "label": "PlatformMessageResponseCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrameInfo", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information for a single frame of an animation.\n\nTo obtain an instance of the [FrameInfo] interface, see\n[Codec.getNextFrame].", "detail": "", "kind": 7, "label": "FrameInfo" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CallbackHandle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A wrapper for a raw callback handle.\n\nThis is the return type for [PluginUtilities.getCallbackHandle].", "detail": "", "kind": 7, "label": "CallbackHandle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathMetricIterator", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Tracks iteration from one segment of a path to the next for measurement.", "detail": "", "kind": 7, "label": "PathMetricIterator" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerChange", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "How the pointer has changed since the last report.", "detail": "", "kind": 13, "label": "PointerChange" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Opaque handle to raw decoded image data (pixels).\n\nTo obtain an [Image] object, use [instantiateImageCodec].\n\nTo draw an [Image], use one of the methods on the [Canvas] class, such as\n[Canvas.drawImage].\n\nSee also:\n\n * [Image](https://api.flutter.dev/flutter/widgets/Image-class.html), the class in the [widgets] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsUpdateBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An object that creates [SemanticsUpdate] objects.\n\nOnce created, the [SemanticsUpdate] objects can be passed to\n[Window.updateSemantics] to update the semantics conveyed to the user.", "detail": "", "kind": 7, "label": "SemanticsUpdateBuilder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageFilter", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A filter operation to apply to a raster image.\n\nSee also:\n\n * [BackdropFilter], a widget that applies [ImageFilter] to its rendering.\n * [SceneBuilder.pushBackdropFilter], which is the low-level API for using\n this class.", "detail": "", "kind": 7, "label": "ImageFilter" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDataPacketCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onPointerDataPacket].", "detail": "(PointerDataPacket packet) → void", "kind": 7, "label": "PointerDataPacketCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointMode", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of points.\n\nUsed by [Canvas.drawPoints].", "detail": "", "kind": 13, "label": "PointMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsActionCallback", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onSemanticsAction].", "detail": "(int id, SemanticsAction action, ByteData args) → void", "kind": 7, "label": "SemanticsActionCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PictureRecorder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Records a [Picture] containing a sequence of graphical operations.\n\nTo begin recording, construct a [Canvas] to record the commands.\nTo end recording, use the [PictureRecorder.endRecording] method.", "detail": "", "kind": 7, "label": "PictureRecorder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDataPacket", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A sequence of reports about the state of pointers.", "detail": "", "kind": 7, "label": "PointerDataPacket" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "See also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/painting/StrutStyle-class.html), the class in the [painting] library.\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SceneBuilder", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Builds a [Scene] containing the given visuals.\n\nA [Scene] can then be rendered using [Window.render].\n\nTo draw graphical operations onto a [Scene], first create a\n[Picture] using a [PictureRecorder] and a [Canvas], and then add\nit to the scene using [addPicture].", "detail": "", "kind": 7, "label": "SceneBuilder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalKind", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The kind of [PointerDeviceKind.signal].", "detail": "", "kind": 13, "label": "PointerSignalKind" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParagraphConstraints", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Layout constraints for [Paragraph] objects.\n\nInstances of this class are typically used with [Paragraph.layout].\n\nThe only constraint that can be specified is the [width]. See the discussion\nat [width] for more details.", "detail": "", "kind": 7, "label": "ParagraphConstraints" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerData", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information about the state of a pointer.", "detail": "", "kind": 7, "label": "PointerData" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageByteFormat", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The format in which image bytes should be returned when using\n[Image.toByteData].", "detail": "", "kind": 13, "label": "ImageByteFormat" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2682, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" } ] [Trace - 12:35:07 PM] Received response 'textDocument/hover - (70)' in 494ms. Result: { "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "```dart\ndynamic voi\n```", "kind": "markdown" } } [Trace - 12:35:07 PM] Received response 'textDocument/documentHighlight - (71)' in 495ms. Result: [ { "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } } ] [Trace - 12:35:07 PM] Received response 'textDocument/codeAction - (69)' in 500ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": ";", "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 5, "line": 96 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 10 } } ] }, "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 5, "line": 96 }, "start": { "character": 2, "line": 96 } } } ], "kind": "quickfix", "title": "Insert ';'" } ] [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:07 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Expected an identifier.", "source": "dart", "code": "missing_identifier", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:07 PM] Sending request 'textDocument/completion - (73)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 10 }, "context": { "triggerKind": 1 } } [Trace - 12:35:07 PM] Sending request 'textDocument/codeAction - (74)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 10 } }, "context": { "diagnostics": [] } } [Trace - 12:35:07 PM] Sending request 'textDocument/hover - (75)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:07 PM] Sending request 'textDocument/hover - (76)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:07 PM] Sending request 'textDocument/documentHighlight - (77)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 10 } } [Trace - 12:35:07 PM] Sending request 'textDocument/hover - (78)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 10 } } [Trace - 12:35:07 PM] Sending request 'textDocument/signatureHelp - (79)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 10 } } [Trace - 12:35:07 PM] Sending notification 'textDocument/didSave'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 15 }, "text": null } [Trace - 12:35:07 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 16 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 10 }, "end": { "line": 96, "character": 10 } }, "rangeLength": 0, "text": "c" } ] } [Trace - 12:35:07 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Expected an identifier.", "source": "dart", "code": "missing_identifier", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:07 PM] Received response 'textDocument/documentHighlight - (72)' in 52ms. Result: null [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:07 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 8, "line": 96 }, "start": { "character": 7, "line": 96 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:07 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 9, "line": 96 }, "start": { "character": 7, "line": 96 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:07 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 10, "line": 96 }, "start": { "character": 7, "line": 96 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:07 PM] Received response 'textDocument/completion - (73)' in 193ms. Result: [] [Trace - 12:35:07 PM] Received response 'textDocument/hover - (75)' in 189ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:07 PM] Received response 'textDocument/codeAction - (74)' in 245ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": ";", "range": { "end": { "character": 10, "line": 96 }, "start": { "character": 10, "line": 96 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 15 } } ] }, "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 10, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "kind": "quickfix", "title": "Insert ';'" } ] [Trace - 12:35:07 PM] Received response 'textDocument/hover - (76)' in 249ms. Result: { "range": { "end": { "character": 10, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nvoid cal\n```", "kind": "markdown" } } [Trace - 12:35:07 PM] Received response 'textDocument/documentHighlight - (77)' in 251ms. Result: [ { "range": { "end": { "character": 10, "line": 96 }, "start": { "character": 7, "line": 96 } } } ] [Trace - 12:35:07 PM] Received response 'textDocument/hover - (78)' in 250ms. Result: { "range": { "end": { "character": 10, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nvoid cal\n```", "kind": "markdown" } } [Trace - 12:35:07 PM] Received response 'textDocument/signatureHelp - (79)' in 250ms. Result: null [Trace - 12:35:07 PM] Received notification 'window/showMessage'. Params: { "message": "Unknown method textDocument/didSave", "type": 1 } [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:07 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 11, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:07 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 11, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:07 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:07 PM] Sending request 'textDocument/completion - (80)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 11 }, "context": { "triggerKind": 1 } } [Trace - 12:35:07 PM] Sending request 'textDocument/codeAction - (81)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 11 } }, "context": { "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 11, "line": 96 }, "start": { "character": 7, "line": 96 } } } ] } } [Trace - 12:35:07 PM] Sending request 'textDocument/hover - (82)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:07 PM] Sending request 'textDocument/hover - (83)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:07 PM] Sending request 'textDocument/documentHighlight - (84)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 11 } } [Trace - 12:35:07 PM] Received response 'textDocument/completion - (80)' in 16ms. Result: [] [Trace - 12:35:07 PM] Received response 'textDocument/codeAction - (81)' in 8ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": ";", "range": { "end": { "character": 11, "line": 96 }, "start": { "character": 11, "line": 96 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 16 } } ] }, "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 11, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "kind": "quickfix", "title": "Insert ';'" } ] [Trace - 12:35:07 PM] Received response 'textDocument/hover - (82)' in 12ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:07 PM] Received response 'textDocument/hover - (83)' in 12ms. Result: { "range": { "end": { "character": 11, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nvoid calc\n```", "kind": "markdown" } } [Trace - 12:35:07 PM] Received response 'textDocument/documentHighlight - (84)' in 60ms. Result: [ { "range": { "end": { "character": 11, "line": 96 }, "start": { "character": 7, "line": 96 } } } ] [Trace - 12:35:08 PM] Sending request 'textDocument/hover - (85)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 11 } } [Trace - 12:35:08 PM] Sending request 'textDocument/signatureHelp - (86)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 11 } } [Trace - 12:35:08 PM] Received response 'textDocument/hover - (85)' in 65ms. Result: { "range": { "end": { "character": 11, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nvoid calc\n```", "kind": "markdown" } } [Trace - 12:35:08 PM] Received response 'textDocument/signatureHelp - (86)' in 64ms. Result: null [Trace - 12:35:08 PM] Sending notification 'textDocument/didSave'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 16 }, "text": null } [Trace - 12:35:08 PM] Received notification 'window/showMessage'. Params: { "message": "Unknown method textDocument/didSave", "type": 1 } [Trace - 12:35:08 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 17 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 11 }, "end": { "line": 96, "character": 11 } }, "rangeLength": 0, "text": "u" } ] } [Trace - 12:35:08 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:08 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 11, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:09 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:09 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:09 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 12, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:09 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:09 PM] Sending request 'textDocument/completion - (87)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 12 }, "context": { "triggerKind": 1 } } [Trace - 12:35:09 PM] Received response 'textDocument/completion - (87)' in 3ms. Result: [] [Trace - 12:35:09 PM] Sending request 'textDocument/codeAction - (88)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 12 } }, "context": { "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 12, "line": 96 }, "start": { "character": 7, "line": 96 } } } ] } } [Trace - 12:35:09 PM] Sending request 'textDocument/hover - (89)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:09 PM] Sending request 'textDocument/hover - (90)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:09 PM] Sending request 'textDocument/documentHighlight - (91)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 12 } } [Trace - 12:35:09 PM] Received response 'textDocument/codeAction - (88)' in 41ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": ";", "range": { "end": { "character": 12, "line": 96 }, "start": { "character": 12, "line": 96 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 17 } } ] }, "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 12, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "kind": "quickfix", "title": "Insert ';'" } ] [Trace - 12:35:09 PM] Received response 'textDocument/hover - (89)' in 46ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:09 PM] Received response 'textDocument/hover - (90)' in 47ms. Result: { "range": { "end": { "character": 12, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nvoid calcu\n```", "kind": "markdown" } } [Trace - 12:35:09 PM] Received response 'textDocument/documentHighlight - (91)' in 47ms. Result: [ { "range": { "end": { "character": 12, "line": 96 }, "start": { "character": 7, "line": 96 } } } ] [Trace - 12:35:09 PM] Sending request 'textDocument/hover - (92)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 12 } } [Trace - 12:35:09 PM] Sending request 'textDocument/signatureHelp - (93)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 12 } } [Trace - 12:35:09 PM] Received response 'textDocument/hover - (92)' in 81ms. Result: { "range": { "end": { "character": 12, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nvoid calcu\n```", "kind": "markdown" } } [Trace - 12:35:09 PM] Received response 'textDocument/signatureHelp - (93)' in 80ms. Result: null [Trace - 12:35:09 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 18 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 12 }, "end": { "line": 96, "character": 12 } }, "rangeLength": 0, "text": "r" } ] } [Trace - 12:35:09 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:09 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 13, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:10 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:10 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 19 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 13 }, "end": { "line": 96, "character": 13 } }, "rangeLength": 0, "text": "a" } ] } [Trace - 12:35:10 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:10 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 14, "line": 96 }, "start": { "character": 7, "line": 96 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:10 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:10 PM] Sending request 'textDocument/completion - (94)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 14 }, "context": { "triggerKind": 1 } } [Trace - 12:35:10 PM] Received response 'textDocument/completion - (94)' in 3ms. Result: [] [Trace - 12:35:10 PM] Sending request 'textDocument/codeAction - (95)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 14 } }, "context": { "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 14, "line": 96 }, "start": { "character": 7, "line": 96 } } } ] } } [Trace - 12:35:10 PM] Sending request 'textDocument/hover - (96)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:10 PM] Sending request 'textDocument/hover - (97)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:10 PM] Sending request 'textDocument/documentHighlight - (98)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 14 } } [Trace - 12:35:10 PM] Received response 'textDocument/codeAction - (95)' in 79ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": ";", "range": { "end": { "character": 14, "line": 96 }, "start": { "character": 14, "line": 96 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 19 } } ] }, "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 14, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "kind": "quickfix", "title": "Insert ';'" } ] [Trace - 12:35:10 PM] Received response 'textDocument/hover - (96)' in 85ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:10 PM] Received response 'textDocument/hover - (97)' in 85ms. Result: { "range": { "end": { "character": 14, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nvoid calcura\n```", "kind": "markdown" } } [Trace - 12:35:10 PM] Received response 'textDocument/documentHighlight - (98)' in 85ms. Result: [ { "range": { "end": { "character": 14, "line": 96 }, "start": { "character": 7, "line": 96 } } } ] [Trace - 12:35:10 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 20 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 14 }, "end": { "line": 96, "character": 14 } }, "rangeLength": 0, "text": "t" } ] } [Trace - 12:35:10 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:10 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 15, "line": 96 }, "start": { "character": 7, "line": 96 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:10 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:10 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 21 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 15 }, "end": { "line": 96, "character": 15 } }, "rangeLength": 0, "text": "e" } ] } [Trace - 12:35:10 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:10 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:10 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:10 PM] Sending request 'textDocument/completion - (99)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 16 }, "context": { "triggerKind": 1 } } [Trace - 12:35:10 PM] Received response 'textDocument/completion - (99)' in 3ms. Result: [] [Trace - 12:35:10 PM] Sending request 'textDocument/codeAction - (100)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 16 } }, "context": { "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } } } ] } } [Trace - 12:35:10 PM] Sending request 'textDocument/hover - (101)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:10 PM] Sending request 'textDocument/hover - (102)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:10 PM] Sending request 'textDocument/documentHighlight - (103)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 16 } } [Trace - 12:35:10 PM] Received response 'textDocument/codeAction - (100)' in 77ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": ";", "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 16, "line": 96 } } } ], "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 21 } } ] }, "diagnostics": [ { "message": "Expected to find ';'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } } } ], "kind": "quickfix", "title": "Insert ';'" } ] [Trace - 12:35:10 PM] Received response 'textDocument/hover - (101)' in 81ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:10 PM] Received response 'textDocument/hover - (102)' in 82ms. Result: { "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nvoid calcurate\n```", "kind": "markdown" } } [Trace - 12:35:10 PM] Received response 'textDocument/documentHighlight - (103)' in 83ms. Result: [ { "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } } } ] [Trace - 12:35:11 PM] Sending request 'textDocument/hover - (104)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 16 } } [Trace - 12:35:11 PM] Sending request 'textDocument/signatureHelp - (105)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 16 } } [Trace - 12:35:11 PM] Received response 'textDocument/hover - (104)' in 62ms. Result: { "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nvoid calcurate\n```", "kind": "markdown" } } [Trace - 12:35:11 PM] Received response 'textDocument/signatureHelp - (105)' in 61ms. Result: null [Trace - 12:35:11 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 22 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 16 }, "end": { "line": 96, "character": 16 } }, "rangeLength": 0, "text": "(" } ] } [Trace - 12:35:11 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 23 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 16 }, "end": { "line": 96, "character": 17 } }, "rangeLength": 1, "text": "" } ] } [Trace - 12:35:11 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 24 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 16 }, "end": { "line": 96, "character": 16 } }, "rangeLength": 0, "text": "(" } ] } [Trace - 12:35:11 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 25 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 17 }, "end": { "line": 96, "character": 17 } }, "rangeLength": 0, "text": ")" } ] } [Trace - 12:35:11 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:11 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Parameters in a function type cannot have default values", "source": "dart", "code": "default_value_in_function_type", "severity": 1, "range": { "end": { "character": 60, "line": 98 }, "start": { "character": 59, "line": 98 } } }, { "message": "The method 'setLocation' isn't defined for the class '_HomePageState'.", "source": "dart", "code": "undefined_method", "severity": 1, "range": { "end": { "character": 43, "line": 150 }, "start": { "character": 32, "line": 150 } } }, { "message": "Default values aren't allowed in function typed parameters.", "source": "dart", "code": "default_value_in_function_typed_parameter", "severity": 1, "range": { "end": { "character": 65, "line": 98 }, "start": { "character": 46, "line": 98 } } }, { "message": "Conditions must have a static type of 'bool'.", "source": "dart", "code": "non_bool_condition", "severity": 1, "range": { "end": { "character": 15, "line": 101 }, "start": { "character": 8, "line": 101 } } }, { "message": "Undefined name 'lati'.", "source": "dart", "code": "undefined_identifier", "severity": 1, "range": { "end": { "character": 35, "line": 99 }, "start": { "character": 31, "line": 99 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Undefined name 'long'.", "source": "dart", "code": "undefined_identifier", "severity": 1, "range": { "end": { "character": 35, "line": 100 }, "start": { "character": 31, "line": 100 } } }, { "message": "The method 'setLocation' isn't defined for the class '_HomePageState'.", "source": "dart", "code": "undefined_method", "severity": 1, "range": { "end": { "character": 15, "line": 131 }, "start": { "character": 4, "line": 131 } } }, { "message": "The method 'setLocation' isn't defined for the class '_HomePageState'.", "source": "dart", "code": "undefined_method", "severity": 1, "range": { "end": { "character": 54, "line": 133 }, "start": { "character": 43, "line": 133 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Expected to find ')'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 69, "line": 98 }, "start": { "character": 68, "line": 98 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:11 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "A function body must be provided.", "source": "dart", "code": "missing_function_body", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:11 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:11 PM] Sending request 'textDocument/completion - (106)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 17 }, "context": { "triggerKind": 2, "triggerCharacter": "(" } } [Trace - 12:35:11 PM] Sending request 'textDocument/codeAction - (107)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 18 } }, "context": { "diagnostics": [] } } [Trace - 12:35:11 PM] Sending request 'textDocument/hover - (108)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:11 PM] Sending request 'textDocument/hover - (109)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:11 PM] Sending request 'textDocument/hover - (110)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 17 } } [Trace - 12:35:11 PM] Sending request 'textDocument/signatureHelp - (111)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 17 } } [Trace - 12:35:11 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 26 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 17 }, "end": { "line": 96, "character": 17 } }, "rangeLength": 0, "text": "d" } ] } [Trace - 12:35:11 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 27 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 18 }, "end": { "line": 96, "character": 18 } }, "rangeLength": 0, "text": "o" } ] } [Trace - 12:35:13 PM] Received response 'textDocument/completion - (106)' in 899ms. Result: [ { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "covariant", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "covariant" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "http", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 9, "label": "http" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Anim", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "Anim" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AniControler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "AniControler" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HomePage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "HomePage" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "_HomePageState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "_HomePageState" }, { "data": { "autoImportDisplayUri": "package:flutter_compass/flutter_compass.dart", "libraryId": 548, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterCompass", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[FlutterCompass] is a singleton class that provides assess to compass events\nThe heading varies from 0-360, 0 being north.", "detail": "", "kind": 7, "label": "FlutterCompass" }, { "data": { "autoImportDisplayUri": "package:location/location.dart", "libraryId": 547, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocationAccuracy", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest\nhttps://developer.apple.com/documentation/corelocation/cllocationaccuracy?language=objc\nPrecision of the Location", "detail": "", "kind": 13, "label": "LocationAccuracy" }, { "data": { "autoImportDisplayUri": "package:location/location.dart", "libraryId": 547, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocationData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A data class that contains various information about the user's location.\n\nspeedAccuracy cannot be provided on iOS and thus is always 0.", "detail": "", "kind": 7, "label": "LocationData" }, { "data": { "autoImportDisplayUri": "package:location/location.dart", "libraryId": 547, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Location", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "Location" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Theme] which automatically transitions the colors,\netc, over a given duration whenever the given theme changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].\n\nSee also:\n\n * [Theme], which [AnimatedTheme] uses to actually apply the interpolated\n theme.\n * [ThemeData], which describes the actual configuration of a theme.\n * [MaterialApp], which includes an [AnimatedTheme] widget configured via\n the [MaterialApp.theme] argument.", "detail": "", "kind": 7, "label": "AnimatedTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface that [Scrollable] widgets implement in order to use\n[ScrollPosition].\n\nSee also:\n\n * [ScrollableState], which is the most common implementation of this\n interface.\n * [ScrollPosition], which uses this interface to communicate with the\n scrollable widget.", "detail": "", "kind": 7, "label": "ScrollContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalTranslation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[FractionalTranslation], even if the contents are offset such that\nthey overflow.\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [new Transform.translate], which applies an absolute offset translation\n transformation instead of an offset scaled to the child.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbsorbPointer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this widget prevents its subtree from receiving\npointer events by terminating hit testing at itself. It still consumes space\nduring layout and paints its child as usual. It just prevents its children\nfrom being the target of located events, because it returns true from\n[RenderBox.hitTest].\n\n\nSee also:\n\n * [IgnorePointer], which also prevents its children from receiving pointer\n events but is itself invisible to hit testing.", "detail": "", "kind": 7, "label": "AbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State object for a [Scrollable] widget.\n\nTo manipulate a [Scrollable] widget's scroll position, use the object\nobtained from the [position] property.\n\nTo be informed of when a [Scrollable] widget is scrolling, use a\n[NotificationListener] to listen for [ScrollNotification] notifications.\n\nThis class is not intended to be subclassed. To specialize the behavior of a\n[Scrollable], provide it with a [ScrollPhysics].", "detail": "", "kind": 7, "label": "ScrollableState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativePositionedTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Positioned] which transitions the child's position\nbased on the value of [rect] relative to a bounding box with the\nspecified [size].\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [RelativePositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "RelativePositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Builds a [Widget] when given a concrete value of a [ValueListenable<T>].\n\nIf the `child` parameter provided to the [ValueListenableBuilder] is not\nnull, the same `child` widget is passed back to this [ValueWidgetBuilder]\nand should typically be incorporated in the returned widget tree.\n\nSee also:\n\n * [ValueListenableBuilder], a widget which invokes this builder each time\n a [ValueListenable] changes value.", "detail": "(BuildContext context, T value, Widget child) → Widget", "kind": 7, "label": "ValueWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Texture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture widget refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture widgets are repainted autonomously as dictated by the backend (e.g.\non arrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by its parent widget, and the\ntexture is automatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "Texture" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePredicate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the [Navigator.popUntil] predicate argument.", "detail": "(Route<dynamic> route) → bool", "kind": 7, "label": "RoutePredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Associates a [ScrollController] with a subtree.\n\nWhen a [ScrollView] has [ScrollView.primary] set to true and is not given\nan explicit [ScrollController], the [ScrollView] uses [of] to find the\n[ScrollController] associated with its subtree.\n\nThis mechanism can be used to provide default behavior for scroll views in a\nsubtree. For example, the [Scaffold] uses this mechanism to implement the\nscroll-to-top gesture on iOS.", "detail": "", "kind": 7, "label": "PrimaryScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MetaData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "MetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HourFormat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes how hours are formatted.", "detail": "", "kind": 13, "label": "HourFormat" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultMaterialLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "US English strings for the material widgets.\n\nSee also:\n\n * [GlobalMaterialLocalizations], which provides material localizations for\n many languages.\n * [MaterialApp.delegates], which automatically includes\n [DefaultMaterialLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultMaterialLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Element", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An instantiation of a [Widget] at a particular location in the tree.\n\nWidgets describe how to configure a subtree but the same widget can be used\nto configure multiple subtrees simultaneously because widgets are immutable.\nAn [Element] represents the use of a widget to configure a specific location\nin the tree. Over time, the widget associated with a given element can\nchange, for example, if the parent widget rebuilds and creates a new widget\nfor this location.\n\nElements form a tree. Most elements have a unique child, but some widgets\n(e.g., subclasses of [RenderObjectElement]) can have multiple children.\n\nElements have the following lifecycle:\n\n * The framework creates an element by calling [Widget.createElement] on the\n widget that will be used as the element's initial configuration.\n * The framework calls [mount] to add the newly created element to the tree\n at a given slot in a given parent. The [mount] method is responsible for\n inflating any child widgets and calling [attachRenderObject] as\n necessary to attach any associated render objects to the render tree.\n * At this point, the element is considered \"active\" and might appear on\n screen.\n * At some point, the parent might decide to change the widget used to\n configure this element, for example because the parent rebuilt with new\n state. When this happens, the framework will call [update] with the new\n widget. The new widget will always have the same [runtimeType] and key as\n old widget. If the parent wishes to change the [runtimeType] or key of\n the widget at this location in the tree, can do so by unmounting this\n element and inflating the new widget at this location.\n * At some point, an ancestor might decide to remove this element (or an\n intermediate ancestor) from the tree, which the ancestor does by calling\n [deactivateChild] on itself. Deactivating the intermediate ancestor will\n remove that element's render object from the render tree and add this\n element to the [owner]'s list of inactive elements, causing the framework\n to call [deactivate] on this element.\n * At this point, the element is considered \"inactive\" and will not appear\n on screen. An element can remain in the inactive state only until\n the end of the current animation frame. At the end of the animation\n frame, any elements that are still inactive will be unmounted.\n * If the element gets reincorporated into the tree (e.g., because it or one\n of its ancestors has a global key that is reused), the framework will\n remove the element from the [owner]'s list of inactive elements, call\n [activate] on the element, and reattach the element's render object to\n the render tree. (At this point, the element is again considered \"active\"\n and might appear on screen.)\n * If the element does not get reincorporated into the tree by the end of\n the current animation frame, the framework will call [unmount] on the\n element.\n * At this point, the element is considered \"defunct\" and will not be\n incorporated into the tree in the future.", "detail": "", "kind": 7, "label": "Element" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Mutable selection state of the inspector.", "detail": "", "kind": 7, "label": "InspectorSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State associated with a [Form] widget.\n\nA [FormState] object can be used to [save], [reset], and [validate] every\n[FormField] that is a descendant of the associated [Form].\n\nTypically obtained via [Form.of].", "detail": "", "kind": 7, "label": "FormState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OutlineInputBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Draws a rounded rectangle around an [InputDecorator]'s container.\n\nWhen the input decorator's label is floating, for example because its\ninput child has the focus, the label appears in a gap in the border outline.\n\nThe input decorator's \"container\" is the optionally filled area above the\ndecorator's helper, error, and counter.\n\nSee also:\n\n * [UnderlineInputBorder], the default [InputDecorator] border which\n draws a horizontal line at the bottom of the input decorator's container.\n * [InputDecoration], which is used to configure an [InputDecorator].", "detail": "", "kind": 7, "label": "OutlineInputBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeaderDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Delegate for configuring a [SliverPersistentHeader].", "detail": "", "kind": 7, "label": "SliverPersistentHeaderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A leaf node in the focus tree that can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nTo request focus, find the [FocusScopeNode] for the current [BuildContext]\nand call the [FocusScopeNode.requestFocus] method:\n\n```dart\nFocusScope.of(context).requestFocus(focusNode);\n```\n\nIf your widget requests focus, be sure to call\n`FocusScope.of(context).reparentIfNeeded(focusNode);` in your `build`\nmethod to reparent your [FocusNode] if your widget moves from one\nlocation in the tree to another.\n\n## Lifetime\n\nFocus nodes are long-lived objects. For example, if a stateful widget has a\nfocusable child widget, it should create a [FocusNode] in the\n[State.initState] method, and [dispose] it in the [State.dispose] method,\nproviding the same [FocusNode] to the focusable child each time the\n[State.build] method is run. In particular, creating a [FocusNode] each time\n[State.build] is invoked will cause the focus to be lost each time the\nwidget is built.\n\nSee also:\n\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusNode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterChip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design filter chip.\n\nFilter chips use tags or descriptive words as a way to filter content.\n\nFilter chips are a good alternative to [Checkbox] or [Switch] widgets.\nUnlike these alternatives, filter chips allow for clearly delineated and\nexposed options in a compact area.\n\nRequires one of its ancestors to be a [Material] widget.\n\n\n```dart\nclass ActorFilterEntry {\n const ActorFilterEntry(this.name, this.initials);\n final String name;\n final String initials;\n}\n\nclass CastFilter extends StatefulWidget {\n @override\n State createState() => CastFilterState();\n}\n\nclass CastFilterState extends State<CastFilter> {\n final List<ActorFilterEntry> _cast = <ActorFilterEntry>[\n const ActorFilterEntry('Aaron Burr', 'AB'),\n const ActorFilterEntry('Alexander Hamilton', 'AH'),\n const ActorFilterEntry('Eliza Hamilton', 'EH'),\n const ActorFilterEntry('James Madison', 'JM'),\n ];\n List<String> _filters = <String>[];\n\n Iterable<Widget> get actorWidgets sync* {\n for (ActorFilterEntry actor in _cast) {\n yield Padding(\n padding: const EdgeInsets.all(4.0),\n child: FilterChip(\n avatar: CircleAvatar(child: Text(actor.initials)),\n label: Text(actor.name),\n selected: _filters.contains(actor.name),\n onSelected: (bool value) {\n setState(() {\n if (value) {\n _filters.add(actor.name);\n } else {\n _filters.removeWhere((String name) {\n return name == actor.name;\n });\n }\n });\n },\n ),\n );\n }\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Wrap(\n children: actorWidgets.toList(),\n ),\n Text('Look for: ${_filters.join(', ')}'),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "FilterChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegion", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Annotates a region of the layer tree with a value.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer pushed into the layer tree.", "detail": "", "kind": 7, "label": "AnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the scale of a transformed widget.\n\nHere's an illustration of the [ScaleTransition] widget, with it's [alignment]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "ScaleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeableMaterial", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a list of [MergeableMaterialItem] children. The list contains\n[MaterialSlice] items whose boundaries are either \"merged\" with adjacent\nitems or separated by a [MaterialGap]. The [children] are distributed along\nthe given [mainAxis] in the same way as the children of a [ListBody]. When\nthe list of children changes, gaps are automatically animated open or closed\nas needed.\n\nTo enable this widget to correlate its list of children with the previous\none, each child must specify a key.\n\nWhen a new gap is added to the list of children the adjacent items are\nanimated apart. Similarly when a gap is removed the adjacent items are\nbrought back together.\n\nWhen a new slice is added or removed, the app is responsible for animating\nthe transition of the slices, while the gaps will be animated automatically.\n\nSee also:\n\n * [Card], a piece of material that does not support splitting and merging\n but otherwise looks the same.", "detail": "", "kind": 7, "label": "MergeableMaterial" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines the physics of a [Scrollable] widget.\n\nFor example, determines how the [Scrollable] will behave when the user\nreaches the maximum scroll extent or when the user stops scrolling.\n\nWhen starting a physics [Simulation], the current scroll position and\nvelocity are used as the initial conditions for the particle in the\nsimulation. The movement of the particle in the simulation is then used to\ndetermine the scroll position for the widget.", "detail": "", "kind": 7, "label": "ScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates that the size of one of the descendants of the object receiving\nthis notification has changed, and that therefore any assumptions about that\nlayout are no longer valid.\n\nFor example, sent by the [SizeChangedLayoutNotifier] widget whenever that\nwidget changes size.\n\nThis notification can be used for triggering repaints, but if you use this\nnotification to trigger rebuilds or relayouts, you'll create a backwards\ndependency in the frame pipeline because [SizeChangedLayoutNotification]s\nare generated during layout, which is after the build phase and in the\nmiddle of the layout phase. This backwards dependency can lead to visual\ncorruption or lags.\n\nSee [LayoutChangedNotification] for additional discussion of layout\nnotifications such as this one.\n\nSee also:\n\n * [SizeChangedLayoutNotifier], which sends this notification.\n * [LayoutChangedNotification], of which this is a subclass.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "State", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The logic and internal state for a [StatefulWidget].\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\n[State] objects are created by the framework by calling the\n[StatefulWidget.createState] method when inflating a [StatefulWidget] to\ninsert it into the tree. Because a given [StatefulWidget] instance can be\ninflated multiple times (e.g., the widget is incorporated into the tree in\nmultiple places at once), there might be more than one [State] object\nassociated with a given [StatefulWidget] instance. Similarly, if a\n[StatefulWidget] is removed from the tree and later inserted in to the tree\nagain, the framework will call [StatefulWidget.createState] again to create\na fresh [State] object, simplifying the lifecycle of [State] objects.\n\n[State] objects have the following lifecycle:\n\n * The framework creates a [State] object by calling\n [StatefulWidget.createState].\n * The newly created [State] object is associated with a [BuildContext].\n This association is permanent: the [State] object will never change its\n [BuildContext]. However, the [BuildContext] itself can be moved around\n the tree along with its subtree. At this point, the [State] object is\n considered [mounted].\n * The framework calls [initState]. Subclasses of [State] should override\n [initState] to perform one-time initialization that depends on the\n [BuildContext] or the widget, which are available as the [context] and\n [widget] properties, respectively, when the [initState] method is\n called.\n * The framework calls [didChangeDependencies]. Subclasses of [State] should\n override [didChangeDependencies] to perform initialization involving\n [InheritedWidget]s. If [BuildContext.inheritFromWidgetOfExactType] is\n called, the [didChangeDependencies] method will be called again if the\n inherited widgets subsequently change or if the widget moves in the tree.\n * At this point, the [State] object is fully initialized and the framework\n might call its [build] method any number of times to obtain a\n description of the user interface for this subtree. [State] objects can\n spontaneously request to rebuild their subtree by callings their\n [setState] method, which indicates that some of their internal state\n has changed in a way that might impact the user interface in this\n subtree.\n * During this time, a parent widget might rebuild and request that this\n location in the tree update to display a new widget with the same\n [runtimeType] and [Widget.key]. When this happens, the framework will\n update the [widget] property to refer to the new widget and then call the\n [didUpdateWidget] method with the previous widget as an argument. [State]\n objects should override [didUpdateWidget] to respond to changes in their\n associated widget (e.g., to start implicit animations). The framework\n always calls [build] after calling [didUpdateWidget], which means any\n calls to [setState] in [didUpdateWidget] are redundant.\n * During development, if a hot reload occurs (whether initiated from the\n command line `flutter` tool by pressing `r`, or from an IDE), the\n [reassemble] method is called. This provides an opportunity to\n reinitialize any data that was prepared in the [initState] method.\n * If the subtree containing the [State] object is removed from the tree\n (e.g., because the parent built a widget with a different [runtimeType]\n or [Widget.key]), the framework calls the [deactivate] method. Subclasses\n should override this method to clean up any links between this object\n and other elements in the tree (e.g. if you have provided an ancestor\n with a pointer to a descendant's [RenderObject]).\n * At this point, the framework might reinsert this subtree into another\n part of the tree. If that happens, the framework will ensure that it\n calls [build] to give the [State] object a chance to adapt to its new\n location in the tree. If the framework does reinsert this subtree, it\n will do so before the end of the animation frame in which the subtree was\n removed from the tree. For this reason, [State] objects can defer\n releasing most resources until the framework calls their [dispose]\n method.\n * If the framework does not reinsert this subtree by the end of the current\n animation frame, the framework will call [dispose], which indicates that\n this [State] object will never build again. Subclasses should override\n this method to release any resources retained by this object (e.g.,\n stop any active animations).\n * After the framework calls [dispose], the [State] object is considered\n unmounted and the [mounted] property is false. It is an error to call\n [setState] at this point. This stage of the lifecycle is terminal: there\n is no way to remount a [State] object that has been disposed.\n\nSee also:\n\n * [StatefulWidget], where the current configuration of a [State] is hosted,\n and whose documentation has sample code for [State].\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "State" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls a scrollable widget.\n\nScroll controllers are typically stored as member variables in [State]\nobjects and are reused in each [State.build]. A single scroll controller can\nbe used to control multiple scrollable widgets, but some operations, such\nas reading the scroll [offset], require the controller to be used with a\nsingle scrollable widget.\n\nA scroll controller creates a [ScrollPosition] to manage the state specific\nto an individual [Scrollable] widget. To use a custom [ScrollPosition],\nsubclass [ScrollController] and override [createScrollPosition].\n\nA [ScrollController] is a [Listenable]. It notifies its listeners whenever\nany of the attached [ScrollPosition]s notify _their_ listeners (i.e.\nwhenever any of them scroll). It does not notify its listeners when the list\nof attached [ScrollPosition]s changes.\n\nTypically used with [ListView], [GridView], [CustomScrollView].\n\nSee also:\n\n * [ListView], [GridView], [CustomScrollView], which can be controlled by a\n [ScrollController].\n * [Scrollable], which is the lower-level widget that creates and associates\n [ScrollPosition] objects with [ScrollController] objects.\n * [PageController], which is an analogous object for controlling a\n [PageView].\n * [ScrollPosition], which manages the scroll offset for an individual\n scrolling widget.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScrollView] that uses a single child layout model.\n\nSee also:\n\n * [ListView], which is a [BoxScrollView] that uses a linear layout model.\n * [GridView], which is a [BoxScrollView] that uses a 2D layout model.\n * [CustomScrollView], which can combine multiple child layout models into a\n single scroll view.", "detail": "", "kind": 7, "label": "BoxScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialSlice", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that can be used as a child to [MergeableMaterial]. It is a slice\nof [Material] that animates merging with other slices.\n\nAll [MaterialSlice] objects need a [LocalKey].", "detail": "", "kind": 7, "label": "MaterialSlice" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Slider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A Material Design slider.\n\nUsed to select from a range of values.\n\nA slider can be used to select from either a continuous or a discrete set of\nvalues. The default is to use a continuous range of values from [min] to\n[max]. To use discrete values, use a non-null value for [divisions], which\nindicates the number of discrete intervals. For example, if [min] is 0.0 and\n[max] is 50.0 and [divisions] is 5, then the slider can take on the\ndiscrete values 0.0, 10.0, 20.0, 30.0, 40.0, and 50.0.\n\nThe terms for the parts of a slider are:\n\n * The \"thumb\", which is a shape that slides horizontally when the user\n drags it.\n * The \"track\", which is the line that the slider thumb slides along.\n * The \"value indicator\", which is a shape that pops up when the user\n is dragging the thumb to indicate the value being selected.\n * The \"active\" side of the slider is the side between the thumb and the\n minimum value.\n * The \"inactive\" side of the slider is the side between the thumb and the\n maximum value.\n\nThe slider will be disabled if [onChanged] is null or if the range given by\n[min]..[max] is empty (i.e. if [min] is equal to [max]).\n\nThe slider widget itself does not maintain any state. Instead, when the state\nof the slider changes, the widget calls the [onChanged] callback. Most\nwidgets that use a slider will listen for the [onChanged] callback and\nrebuild the slider with a new [value] to update the visual appearance of the\nslider. To know when the value starts to change, or when it is done\nchanging, set the optional callbacks [onChangeStart] and/or [onChangeEnd].\n\nBy default, a slider will be as wide as possible, centered vertically. When\ngiven unbounded constraints, it will attempt to make the track 144 pixels\nwide (with margins on each side) and will shrink-wrap vertically.\n\nRequires one of its ancestors to be a [Material] widget.\n\nRequires one of its ancestors to be a [MediaQuery] widget. Typically, these\nare introduced by the [MaterialApp] or [WidgetsApp] widget at the top of\nyour application widget tree.\n\nTo determine how it should be displayed (e.g. colors, thumb shape, etc.),\na slider uses the [SliderThemeData] available from either a [SliderTheme]\nwidget or the [ThemeData.sliderTheme] a [Theme] widget above it in the\nwidget tree. You can also override some of the colors with the [activeColor]\nand [inactiveColor] properties, although more fine-grained control of the\nlook is achieved using a [SliderThemeData].\n\nSee also:\n\n * [SliderTheme] and [SliderThemeData] for information about controlling\n the visual appearance of the slider.\n * [Radio], for selecting among a set of explicit values.\n * [Checkbox] and [Switch], for toggling a particular value on or off.\n * <https://material.io/design/components/sliders.html>\n * [MediaQuery], from which the text scale factor is obtained.", "detail": "", "kind": 7, "label": "Slider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The text style to apply to descendant [Text] widgets without explicit style.", "detail": "", "kind": 7, "label": "DefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SnackBarClosedReason", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specify how a [SnackBar] was closed.\n\nThe [ScaffoldState.showSnackBar] function returns a\n[ScaffoldFeatureController]. The value of the controller's closed property\nis a Future that resolves to a SnackBarClosedReason. Applications that need\nto know how a snackbar was closed can use this value.\n\nExample:\n\n```dart\nScaffold.of(context).showSnackBar(\n SnackBar( ... )\n).closed.then((SnackBarClosedReason reason) {\n ...\n});\n```", "detail": "", "kind": 13, "label": "SnackBarClosedReason" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundSliderOverlayShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s thumb overlay.\n\nThe shape of the overlay is a circle with the same center as the thumb, but\nwith a larger radius. It animates to full size when the thumb is pressed,\nand animates back down to size 0 when it is released. It is painted behind\nthe thumb, and is expected to extend beyond the bounds of the thumb so that\nit is visible.\n\nThe overlay color is defined by [SliderThemeData.overlayColor].\n\nSee also:\n\n * [Slider], which includes an overlay defined by this shape.\n * [SliderTheme], which can be used to configure the overlay shape of all\n sliders in a widget subtree.", "detail": "", "kind": 7, "label": "RoundSliderOverlayShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Paints a [Banner].", "detail": "", "kind": 7, "label": "BannerPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget with a preferred size.\n\nThis widget does not impose any constraints on its child, and it doesn't\naffect the child's layout in any way. It just advertises a preferred size\nwhich can be used by the parent.\n\nSee also:\n\n * [AppBar.bottom] and [Scaffold.appBar], which require preferred size widgets.\n * [PreferredSizeWidget], the interface which this widget implements to expose\n its preferred size.\n * [AppBar] and [TabBar], which implement PreferredSizeWidget.", "detail": "", "kind": 7, "label": "PreferredSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [InheritedWidget] that's intended to be used as the base class for\nmodels whose dependents may only depend on one part or \"aspect\" of the\noverall model.\n\nAn inherited widget's dependents are unconditionally rebuilt when the\ninherited widget changes per [InheritedWidget.updateShouldNotify].\nThis widget is similar except that dependents aren't rebuilt\nunconditionally.\n\nWidgets that depend on an [InheritedModel] qualify their dependence\nwith a value that indicates what \"aspect\" of the model they depend\non. When the model is rebuilt, dependents will also be rebuilt, but\nonly if there was a change in the model that corresponds to the aspect\nthey provided.\n\nThe type parameter `T` is the type of the model aspect objects.\n\n\nWidgets create a dependency on an [InheritedModel] with a static method:\n[InheritedModel.inheritFrom]. This method's `context` parameter\ndefines the subtree that will be rebuilt when the model changes.\nTypically the `inheritFrom` method is called from a model-specific\nstatic `of` method. For example:\n\n```dart\nclass MyModel extends InheritedModel<String> {\n // ...\n static MyModel of(BuildContext context, String aspect) {\n return InheritedModel.inheritFrom<MyModel>(context, aspect: aspect);\n }\n}\n```\n\nCalling `MyModel.of(context, 'foo')` means that `context` should only\nbe rebuilt when the `foo` aspect of `MyModel` changes. If the aspect\nis null, then the model supports all aspects.\n\nWhen the inherited model is rebuilt the [updateShouldNotify] and\n[updateShouldNotifyDependent] methods are used to decide what\nshould be rebuilt. If [updateShouldNotify] returns true, then the\ninherited model's [updateShouldNotifyDependent] method is tested for\neach dependent and the set of aspect objects it depends on.\nThe [updateShouldNotifyDependent] method must compare the set of aspect\ndependencies with the changes in the model itself.\n\nFor example:\n\n```dart\nclass ABModel extends InheritedModel<String> {\n ABModel({ this.a, this.b, Widget child }) : super(child: child);\n\n final int a;\n final int b;\n\n @override\n bool updateShouldNotify(ABModel old) {\n return a != old.a || b != old.b;\n }\n\n @override\n bool updateShouldNotifyDependent(ABModel old, Set<String> aspects) {\n return (a != old.a && aspects.contains('a'))\n || (b != old.b && aspects.contains('b'))\n }\n\n // ...\n}\n```\n\nIn the previous example the dependencies checked by\n[updateShouldNotifyDependent] are just the aspect strings passed to\n`inheritFromWidgetOfExactType`. They're represented as a [Set] because\none Widget can depend on more than one aspect of the model.\nIf a widget depends on the model but doesn't specify an aspect,\nthen changes in the model will cause the widget to be rebuilt\nunconditionally.\n\nSee also:\n\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.", "detail": "", "kind": 7, "label": "InheritedModel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The border, labels, icons, and styles used to decorate a Material\nDesign text field.\n\nThe [TextField] and [InputDecorator] classes use [InputDecoration] objects\nto describe their decoration. (In fact, this class is merely the\nconfiguration of an [InputDecorator], which does all the heavy lifting.)\n\nSee also:\n\n * [TextField], which is a text input widget that uses an\n [InputDecoration].\n * [InputDecorator], which is a widget that draws an [InputDecoration]\n around an input child widget.\n * [Decoration] and [DecoratedBox], for drawing borders and backgrounds\n around a child widget.", "detail": "", "kind": 7, "label": "InputDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A route that displays widgets in the [Navigator]'s [Overlay].", "detail": "", "kind": 7, "label": "OverlayRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that establishes a page storage bucket for this widget subtree.", "detail": "", "kind": 7, "label": "PageStorage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPadding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Padding] which automatically transitions the\nindentation over a given duration whenever the given inset changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.", "detail": "", "kind": 7, "label": "AnimatedPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for localized resource values for the lowest levels of the Flutter\nframework.\n\nIn particular, this maps locales to a specific [Directionality] using the\n[textDirection] property.\n\nSee also:\n\n * [DefaultWidgetsLocalizations], which implements this interface and\n supports a variety of locales.", "detail": "", "kind": 7, "label": "WidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Orientation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether in portrait or landscape.", "detail": "", "kind": 13, "label": "Orientation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Factory for creating gesture recognizers.\n\n`T` is the type of gesture recognizer this class manages.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the appearance of an [InputDecorator]'s border.\n\nAn input decorator's border is specified by [InputDecoration.border].\n\nThe border is drawn relative to the input decorator's \"container\" which\nis the optionally filled area above the decorator's helper, error,\nand counter.\n\nInput border's are decorated with a line whose weight and color are defined\nby [borderSide]. The input decorator's renderer animates the input border's\nappearance in response to state changes, like gaining or losing the focus,\nby creating new copies of its input border with [copyWith].\n\nSee also:\n\n * [UnderlineInputBorder], the default [InputDecorator] border which\n draws a horizontal line at the bottom of the input decorator's container.\n * [OutlineInputBorder], an [InputDecorator] border which draws a\n rounded rectangle around the input decorator's container.\n * [InputDecoration], which is used to configure an [InputDecorator].", "detail": "", "kind": 7, "label": "InputBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A horizontal group of cells in a [Table].\n\nEvery row in a table must have the same number of children.\n\nThe alignment of individual cells in a row can be controlled using a\n[TableCell].", "detail": "", "kind": 7, "label": "TableRow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollUpdateNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has changed its scroll position.\n\nSee also:\n\n * [OverscrollNotification], which indicates that a [Scrollable] widget\n has not changed its scroll position because the change would have caused\n its scroll position to go outside its scroll bounds.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollUpdateNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The various kinds of material in material design. Used to\nconfigure the default behavior of [Material] widgets.\n\nSee also:\n\n * [Material], in particular [Material.type].\n * [kMaterialEdges]", "detail": "", "kind": 13, "label": "MaterialType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that renders an exception's message.\n\nThis widget is used when a build method fails, to help with determining\nwhere the problem lies. Exceptions are also logged to the console, which you\ncan read using `flutter logs`. The console will also include additional\ninformation such as the stack trace for the exception.", "detail": "", "kind": 7, "label": "ErrorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ThemeDataTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [ThemeData]s.\n\nThis class specializes the interpolation of [Tween<ThemeData>] to call the\n[ThemeData.lerp] method.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ThemeDataTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Material", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A piece of material.\n\nThe Material widget is responsible for:\n\n1. Clipping: If [clipBehavior] is not [Clip.none], Material clips its widget\n sub-tree to the shape specified by [shape], [type], and [borderRadius].\n By default, [clipBehavior] is [Clip.none] for performance considerations.\n2. Elevation: Material elevates its widget sub-tree on the Z axis by\n [elevation] pixels, and draws the appropriate shadow.\n3. Ink effects: Material shows ink effects implemented by [InkFeature]s\n like [InkSplash] and [InkHighlight] below its children.\n\n## The Material Metaphor\n\nMaterial is the central metaphor in material design. Each piece of material\nexists at a given elevation, which influences how that piece of material\nvisually relates to other pieces of material and how that material casts\nshadows.\n\nMost user interface elements are either conceptually printed on a piece of\nmaterial or themselves made of material. Material reacts to user input using\n[InkSplash] and [InkHighlight] effects. To trigger a reaction on the\nmaterial, use a [MaterialInkController] obtained via [Material.of].\n\nIn general, the features of a [Material] should not change over time (e.g. a\n[Material] should not change its [color], [shadowColor] or [type]).\nChanges to [elevation] and [shadowColor] are animated for [animationDuration].\nChanges to [shape] are animated if [type] is not [MaterialType.transparency]\nand [ShapeBorder.lerp] between the previous and next [shape] values is\nsupported. Shape changes are also animated for [animationDuration].\n\n\n## Shape\n\nThe shape for material is determined by [shape], [type], and [borderRadius].\n\n - If [shape] is non null, it determines the shape.\n - If [shape] is null and [borderRadius] is non null, the shape is a\n rounded rectangle, with corners specified by [borderRadius].\n - If [shape] and [borderRadius] are null, [type] determines the\n shape as follows:\n - [MaterialType.canvas]: the default material shape is a rectangle.\n - [MaterialType.card]: the default material shape is a rectangle with\n rounded edges. The edge radii is specified by [kMaterialEdges].\n - [MaterialType.circle]: the default material shape is a circle.\n - [MaterialType.button]: the default material shape is a rectangle with\n rounded edges. The edge radii is specified by [kMaterialEdges].\n - [MaterialType.transparency]: the default material shape is a rectangle.\n\n## Border\n\nIf [shape] is not null, then its border will also be painted (if any).\n\n## Layout change notifications\n\nIf the layout changes (e.g. because there's a list on the material, and it's\nbeen scrolled), a [LayoutChangedNotification] must be dispatched at the\nrelevant subtree. This in particular means that transitions (e.g.\n[SlideTransition]) should not be placed inside [Material] widgets so as to\nmove subtrees that contain [InkResponse]s, [InkWell]s, [Ink]s, or other\nwidgets that use the [InkFeature] mechanism. Otherwise, in-progress ink\nfeatures (e.g., ink splashes and ink highlights) won't move to account for\nthe new layout.\n\nSee also:\n\n * [MergeableMaterial], a piece of material that can split and re-merge.\n * [Card], a wrapper for a [Material] of [type] [MaterialType.card].\n * <https://material.io/design/>", "detail": "", "kind": 7, "label": "Material" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RaisedButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design \"raised button\".\n\nA raised button is based on a [Material] widget whose [Material.elevation]\nincreases when the button is pressed.\n\nUse raised buttons to add dimension to otherwise mostly flat layouts, e.g.\nin long busy lists of content, or in wide spaces. Avoid using raised buttons\non already-raised content such as dialogs or cards.\n\nIf the [onPressed] callback is null, then the button will be disabled and by\ndefault will resemble a flat button in the [disabledColor]. If you are\ntrying to change the button's [color] and it is not having any effect, check\nthat you are passing a non-null [onPressed] handler.\n\nIf you want an ink-splash effect for taps, but don't want to use a button,\nconsider using [InkWell] directly.\n\nRaised buttons have a minimum size of 88.0 by 36.0 which can be overridden\nwith [ButtonTheme].\n\n\nThis sample shows how to render a disabled RaisedButton, an enabled RaisedButton\nand lastly a RaisedButton with gradient background.\n\n![Three raised buttons, one enabled, another disabled, and the last one\nstyled with a blue gradient background](https://flutter.github.io/assets-for-api-docs/assets/material/raised_button.png)\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Column(\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n const RaisedButton(\n onPressed: null,\n child: Text(\n 'Disabled Button',\n style: TextStyle(fontSize: 20)\n ),\n ),\n const SizedBox(height: 30),\n RaisedButton(\n onPressed: () {},\n child: const Text(\n 'Enabled Button',\n style: TextStyle(fontSize: 20)\n ),\n ),\n const SizedBox(height: 30),\n RaisedButton(\n onPressed: () {},\n textColor: Colors.white,\n padding: const EdgeInsets.all(0.0),\n child: Container(\n decoration: const BoxDecoration(\n gradient: LinearGradient(\n colors: <Color>[\n Color(0xFF0D47A1),\n Color(0xFF1976D2),\n Color(0xFF42A5F5),\n ],\n ),\n ),\n padding: const EdgeInsets.all(10.0),\n child: const Text(\n 'Gradient Button',\n style: TextStyle(fontSize: 20)\n ),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [FlatButton], a material design button without a shadow.\n * [DropdownButton], a button that shows options to select from.\n * [FloatingActionButton], the round button in material applications.\n * [IconButton], to create buttons that just contain icons.\n * [InkWell], which implements the ink splash part of a flat button.\n * [RawMaterialButton], the widget this widget is based on.\n * <https://material.io/design/components/buttons.html>", "detail": "", "kind": 7, "label": "RaisedButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flexible", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls how a child of a [Row], [Column], or [Flex] flexes.\n\nUsing a [Flexible] widget gives a child of a [Row], [Column], or [Flex]\nthe flexibility to expand to fill the available space in the main axis\n(e.g., horizontally for a [Row] or vertically for a [Column]), but, unlike\n[Expanded], [Flexible] does not require the child to fill the available\nspace.\n\nA [Flexible] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Flexible] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\nSee also:\n\n * [Expanded], which forces the child to expand to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flexible" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AboutListTile", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] that shows an about box.\n\nThis widget is often added to an app's [Drawer]. When tapped it shows\nan about box dialog with [showAboutDialog].\n\nThe about box will include a button that shows licenses for software used by\nthe application. The licenses shown are those returned by the\n[LicenseRegistry] API, which can be used to add more licenses to the list.\n\nIf your application does not have a [Drawer], you should provide an\naffordance to call [showAboutDialog] or (at least) [showLicensePage].", "detail": "", "kind": 7, "label": "AboutListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [Viewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "NestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Row", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in a horizontal array.\n\nTo cause a child to expand to fill the available horizontal space, wrap the\nchild in an [Expanded] widget.\n\nThe [Row] widget does not scroll (and in general it is considered an error\nto have more children in a [Row] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a vertical variant, see [Column].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example divides the available space into three (horizontally), and\nplaces text centered in the first two cells and the Flutter logo centered in\nthe third:\n\n```dart\nRow(\n children: <Widget>[\n Expanded(\n child: Text('Deliver features faster', textAlign: TextAlign.center),\n ),\n Expanded(\n child: Text('Craft beautiful UIs', textAlign: TextAlign.center),\n ),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\n## Troubleshooting\n\n### Why does my row have a yellow and black warning stripe?\n\nIf the non-flexible contents of the row (those that are not wrapped in\n[Expanded] or [Flexible] widgets) are together wider than the row itself,\nthen the row is said to have overflowed. When a row overflows, the row does\nnot have any remaining space to share between its [Expanded] and [Flexible]\nchildren. The row reports this by drawing a yellow and black striped\nwarning box on the edge that is overflowing. If there is room on the outside\nof the row, the amount of overflow is printed in red lettering.\n\n\n#### Story time\n\nSuppose, for instance, that you had this code:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nThe row first asks its first child, the [FlutterLogo], to lay out, at\nwhatever size the logo would like. The logo is friendly and happily decides\nto be 24 pixels to a side. This leaves lots of room for the next child. The\nrow then asks that next child, the text, to lay out, at whatever size it\nthinks is best.\n\nAt this point, the text, not knowing how wide is too wide, says \"Ok, I will\nbe thiiiiiiiiiiiiiiiiiiiis wide.\", and goes well beyond the space that the\nrow has available, not wrapping. The row responds, \"That's not fair, now I\nhave no more room available for my other children!\", and gets angry and\nsprouts a yellow and black strip.\n\nThe fix is to wrap the second child in an [Expanded] widget, which tells the\nrow that the child should be given the remaining room:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Expanded(\n child: Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n ),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nNow, the row first asks the logo to lay out, and then asks the _icon_ to lay\nout. The [Icon], like the logo, is happy to take on a reasonable size (also\n24 pixels, not coincidentally, since both [FlutterLogo] and [Icon] honor the\nambient [IconTheme]). This leaves some room left over, and now the row tells\nthe text exactly how wide to be: the exact width of the remaining space. The\ntext, now happy to comply to a reasonable request, wraps the text within\nthat width, and you end up with a paragraph split over several lines.\n\n## Layout algorithm\n\n_This section describes how a [Row] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Row] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded horizontal constraints and the incoming\n vertical constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight vertical constraints that\n match the incoming max height.\n2. Divide the remaining horizontal space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of horizontal space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same vertical constraints\n as in step 1, but instead of using unbounded horizontal constraints, use\n horizontal constraints based on the amount of space allocated in step 2.\n Children with [Flexible.fit] properties that are [FlexFit.tight] are\n given tight constraints (i.e., forced to fill the allocated space), and\n children with [Flexible.fit] properties that are [FlexFit.loose] are\n given loose constraints (i.e., not forced to fill the allocated space).\n4. The height of the [Row] is the maximum height of the children (which will\n always satisfy the incoming vertical constraints).\n5. The width of the [Row] is determined by the [mainAxisSize] property. If\n the [mainAxisSize] property is [MainAxisSize.max], then the width of the\n [Row] is the max width of the incoming constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the width of the [Row] is the sum\n of widths of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any horizontal\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Column], for a vertical equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may by sized smaller (leaving some remaining room unused).\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Row" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A snapping physics that always lands directly on items instead of anywhere\nwithin the scroll extent.\n\nBehaves similarly to a slot machine wheel except the ballistics simulation\nnever overshoots and rolls back within a single item if it's to settle on\nthat item.\n\nMust be used with a scrollable that uses a [FixedExtentScrollController].\n\nDefers back to the parent beyond the scroll extents.", "detail": "", "kind": 7, "label": "FixedExtentScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OutlineButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Similar to a [FlatButton] with a thin grey rounded rectangle border.\n\nThe outline button's border shape is defined by [shape]\nand its appearance is defined by [borderSide], [disabledBorderColor],\nand [highlightedBorderColor]. By default the border is a one pixel\nwide grey rounded rectangle that does not change when the button is\npressed or disabled. By default the button's background is transparent.\n\nIf the [onPressed] callback is null, then the button will be disabled and by\ndefault will resemble a flat button in the [disabledColor].\n\nThe button's [highlightElevation], which defines the size of the\ndrop shadow when the button is pressed, is 0.0 (no shadow) by default.\nIf [highlightElevation] is given a value greater than 0.0 then the button\nbecomes a cross between [RaisedButton] and [FlatButton]: a bordered\nbutton whose elevation increases and whose background becomes opaque\nwhen the button is pressed.\n\nIf you want an ink-splash effect for taps, but don't want to use a button,\nconsider using [InkWell] directly.\n\nOutline buttons have a minimum size of 88.0 by 36.0 which can be overridden\nwith [ButtonTheme].\n\nSee also:\n\n * [RaisedButton], a filled material design button with a shadow.\n * [FlatButton], a material design button without a shadow.\n * [DropdownButton], a button that shows options to select from.\n * [FloatingActionButton], the round button in material applications.\n * [IconButton], to create buttons that just contain icons.\n * [InkWell], which implements the ink splash part of a flat button.\n * <https://material.io/design/components/buttons.html>", "detail": "", "kind": 7, "label": "OutlineButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedOpacity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Opacity] which automatically transitions the child's\nopacity over a given duration whenever the given opacity changes.\n\nAnimating an opacity is relatively expensive because it requires painting\nthe child into an intermediate buffer.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\n\n```dart\nclass LogoFade extends StatefulWidget {\n @override\n createState() => LogoFadeState();\n}\n\nclass LogoFadeState extends State<LogoFade> {\n double opacityLevel = 1.0;\n\n void _changeOpacity() {\n setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedOpacity(\n opacity: opacityLevel,\n duration: Duration(seconds: 3),\n child: FlutterLogo(),\n ),\n RaisedButton(\n child: Text('Fade Logo'),\n onPressed: _changeOpacity,\n ),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [FadeTransition], an explicitly animated version of this widget, where\n an [Animation] is provided by the caller instead of being built in.", "detail": "", "kind": 7, "label": "AnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButtonThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [FloatingActionButton]\nwidgets.\n\nDescendant widgets obtain the current [FloatingActionButtonThemeData] object\nusing `Theme.of(context).floatingActionButtonTheme`. Instances of\n[FloatingActionButtonThemeData] can be customized with\n[FloatingActionButtonThemeData.copyWith].\n\nTypically a [FloatingActionButtonThemeData] is specified as part of the\noverall [Theme] with [ThemeData.floatingActionButtonTheme].\n\nAll [FloatingActionButtonThemeData] properties are `null` by default.\nWhen null, the [FloatingActionButton] will use the values from [ThemeData]\nif they exist, otherwise it will provide its own defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "FloatingActionButtonThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboardListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that calls a callback whenever the user presses or releases a key\non a keyboard.\n\nA [RawKeyboardListener] is useful for listening to raw key events and\nhardware buttons that are represented as keys. Typically used by games and\nother apps that use keyboards for purposes other than text entry.\n\nFor text entry, consider using a [EditableText], which integrates with\non-screen keyboards and input method editors (IMEs).\n\nSee also:\n\n * [EditableText], which should be used instead of this widget for text\n entry.", "detail": "", "kind": 7, "label": "RawKeyboardListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownButtonFormField", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience widget that wraps a [DropdownButton] in a [FormField].", "detail": "", "kind": 7, "label": "DropdownButtonFormField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A place in an [Overlay] that can contain a widget.\n\nOverlay entries are inserted into an [Overlay] using the\n[OverlayState.insert] or [OverlayState.insertAll] functions. To find the\nclosest enclosing overlay for a given [BuildContext], use the [Overlay.of]\nfunction.\n\nAn overlay entry can be in at most one overlay at a time. To remove an entry\nfrom its overlay, call the [remove] function on the overlay entry.\n\nBecause an [Overlay] uses a [Stack] layout, overlay entries can use\n[Positioned] and [AnimatedPositioned] to position themselves within the\noverlay.\n\nFor example, [Draggable] uses an [OverlayEntry] to show the drag avatar that\nfollows the user's finger across the screen after the drag begins. Using the\noverlay to display the drag avatar lets the avatar float over the other\nwidgets in the app. As the user's finger moves, draggable calls\n[markNeedsBuild] on the overlay entry to cause it to rebuild. It its build,\nthe entry includes a [Positioned] with its top and left property set to\nposition the drag avatar near the user's finger. When the drag is over,\n[Draggable] removes the entry from the overlay to remove the drag avatar\nfrom view.\n\nBy default, if there is an entirely [opaque] entry over this one, then this\none will not be included in the widget tree (in particular, stateful widgets\nwithin the overlay entry will not be instantiated). To ensure that your\noverlay entry is still built even if it is not visible, set [maintainState]\nto true. This is more expensive, so should be done with care. In particular,\nif widgets in an overlay entry with [maintainState] set to true repeatedly\ncall [State.setState], the user's battery will be drained unnecessarily.\n\nSee also:\n\n * [Overlay]\n * [OverlayState]\n * [WidgetsApp]\n * [MaterialApp]", "detail": "", "kind": 7, "label": "OverlayEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HoldScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scroll activity that does nothing but can be released to resume\nnormal idle behavior.\n\nThis is used while the user is touching the [Scrollable] but before the\ntouch has become a [Drag].\n\nFor the purposes of [ScrollNotification]s, this activity does not constitute\nscrolling, and does not prevent the user from interacting with the contents\nof the [Scrollable] (unlike when a drag has begun or there is a scroll\nanimation underway).", "detail": "", "kind": 7, "label": "HoldScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material expansion panel list that lays out its children and animates\nexpansions.\n\n\nHere is a simple example of how to implement ExpansionPanelList.\n\n```dart\n// stores ExpansionPanel state information\nclass Item {\n Item({\n this.expandedValue,\n this.headerValue,\n this.isExpanded = false,\n });\n\n String expandedValue;\n String headerValue;\n bool isExpanded;\n}\n\nList<Item> generateItems(int numberOfItems) {\n return List.generate(numberOfItems, (int index) {\n return Item(\n headerValue: 'Panel $index',\n expandedValue: 'This is item number $index',\n );\n });\n}\n```\n\n```dart\nList<Item> _data = generateItems(8);\n\n@override\nWidget build(BuildContext context) {\n return SingleChildScrollView(\n child: Container(\n child: _buildPanel(),\n ),\n );\n}\n\nWidget _buildPanel() {\n return ExpansionPanelList(\n expansionCallback: (int index, bool isExpanded) {\n setState(() {\n _data[index].isExpanded = !isExpanded;\n });\n },\n children: _data.map<ExpansionPanel>((Item item) {\n return ExpansionPanel(\n headerBuilder: (BuildContext context, bool isExpanded) {\n return ListTile(\n title: Text(item.headerValue),\n );\n },\n body: ListTile(\n title: Text(item.expandedValue),\n subtitle: Text('To delete this panel, tap the trash can icon'),\n trailing: Icon(Icons.delete),\n onTap: () {\n setState(() {\n _data.removeWhere((currentItem) => item == currentItem);\n });\n }\n ),\n isExpanded: item.isExpanded,\n );\n }).toList(),\n );\n}\n```\n\nSee also:\n\n * [ExpansionPanel]\n * [ExpansionPanelList.radio]\n * <https://material.io/design/components/lists.html#types>", "detail": "", "kind": 7, "label": "ExpansionPanelList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a slider theme to descendant [Slider] widgets.\n\nA slider theme describes the colors and shape choices of the slider\ncomponents.\n\nDescendant widgets obtain the current theme's [SliderThemeData] object using\n[SliderTheme.of]. When a widget uses [SliderTheme.of], it is automatically\nrebuilt if the theme later changes.\n\nThe slider is as big as the largest of\nthe [SliderComponentShape.getPreferredSize] of the thumb shape,\nthe [SliderComponentShape.getPreferredSize] of the overlay shape,\nand the [SliderTickMarkShape.getPreferredSize] of the tick mark shape\n\nSee also:\n\n * [SliderThemeData], which describes the actual configuration of a slider\n theme.\n * [SliderComponentShape], which can be used to create custom shapes for\n the slider thumb, overlay, and value indicator.\n * [SliderTrackShape], which can be used to create custom shapes for the\n slider track.\n * [SliderTickMarkShape], which can be used to create custom shapes for the\n slider tick marks.", "detail": "", "kind": 7, "label": "SliderTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenableBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget whose content stays synced with a [ValueListenable].\n\nGiven a [ValueListenable<T>] and a [builder] which builds widgets from\nconcrete values of `T`, this class will automatically register itself as a\nlistener of the [ValueListenable] and call the [builder] with updated values\nwhen the value changes.\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nvalue of the [ValueListenable], it's more efficient to build that subtree\nonce instead of rebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\n[ValueListenableBuilder] will pass it back to your [builder] function so\nthat you can incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis sample shows how you could use a [ValueListenableBuilder] instead of\nsetting state on the whole [Scaffold] in the default `flutter create` app.\n\n```dart\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State<MyHomePage> {\n final ValueNotifier<int> _counter = ValueNotifier<int>(0);\n final Widget goodJob = const Text('Good job!');\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title)\n ),\n body: Center(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pushed the button this many times:'),\n ValueListenableBuilder(\n builder: (BuildContext context, int value, Widget child) {\n // This builder will only get called when the _counter\n // is updated.\n return Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: <Widget>[\n Text('$value'),\n child,\n ],\n );\n },\n valueListenable: _counter,\n // The child parameter is most helpful if the child is\n // expensive to build and does not depend on the value from\n // the notifier.\n child: goodJob,\n )\n ],\n ),\n ),\n floatingActionButton: FloatingActionButton(\n child: Icon(Icons.plus_one),\n onPressed: () => _counter.value += 1,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedBuilder], which also triggers rebuilds from a [Listenable]\n without passing back a specific value from a [ValueListenable].\n * [NotificationListener], which lets you rebuild based on [Notification]\n coming from its descendant widgets rather than a [ValueListenable] that\n you have a direct reference to.\n * [StreamBuilder], where a builder can depend on a [Stream] rather than\n a [ValueListenable] for more advanced use cases.", "detail": "", "kind": 7, "label": "ValueListenableBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A route with entrance and exit transitions.", "detail": "", "kind": 7, "label": "TransitionRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePageBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the function that builds a route's primary contents.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildPage] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) → Widget", "kind": 7, "label": "RoutePageBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of a method that provides a [BuildContext] and\n[ScrollController] for building a widget that may overflow the draggable\n[Axis] of the containing [DraggableScrollSheet].\n\nUsers should apply the [scrollController] to a [ScrollView] subclass, such\nas a [SingleChildScrollView], [ListView] or [GridView], to have the whole\nsheet be draggable.", "detail": "(BuildContext context, ScrollController scrollController) → Widget", "kind": 7, "label": "ScrollableWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that builds a widget given an [Orientation].\n\nUsed by [OrientationBuilder.builder].", "detail": "(BuildContext context, Orientation orientation) → Widget", "kind": 7, "label": "OrientationWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the constructor that is called when an error occurs while\nbuilding a widget.\n\nThe argument provides information regarding the cause of the error.\n\nSee also:\n\n * [ErrorWidget.builder], which can be set to override the default\n [ErrorWidget] builder.\n * [FlutterError.reportError], which is typically called with the same\n [FlutterErrorDetails] object immediately prior to [ErrorWidget.builder]\n being called.", "detail": "(FlutterErrorDetails details) → Widget", "kind": 7, "label": "ErrorWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes how [Scrollable] widgets should behave.\n\nUsed by [ScrollConfiguration] to configure the [Scrollable] widgets in a\nsubtree.", "detail": "", "kind": 7, "label": "ScrollBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetAccept", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for causing a [DragTarget] to accept the given data.\n\nUsed by [DragTarget.onAccept].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItemSelected", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback invoked when a menu item is selected. The\nargument is the value of the [PopupMenuItem] that caused its menu to be\ndismissed.\n\nUsed by [PopupMenuButton.onSelected].", "detail": "(T value) → void", "kind": 7, "label": "PopupMenuItemSelected" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that has a child widget provided to it, instead of building a new\nwidget.\n\nUseful as a base class for other widgets, such as [InheritedWidget] and\n[ParentDataWidget].\n\nSee also:\n\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [ParentDataWidget], for widgets that populate the\n [RenderObject.parentData] slot of their child's [RenderObject] to\n configure the parent widget's layout.\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "ProxyWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleTickerProviderStateMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides a single [Ticker] that is configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create the [AnimationController] in a [State] that only uses a single\n[AnimationController], mix in this class, then pass `vsync: this`\nto the animation controller constructor.\n\nThis mixin only supports vending a single ticker. If you might have multiple\n[AnimationController] objects over the lifetime of the [State], use a full\n[TickerProviderStateMixin] instead.", "detail": "", "kind": 7, "label": "SingleTickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpandIcon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget representing a rotating expand/collapse button. The icon rotates\n180 degrees when pressed, then reverts the animation on a second press.\nThe underlying icon is [Icons.expand_more].\n\nThe expand icon does not include a semantic label for accessibility. In\norder to be accessible it should be combined with a label using\n[MergeSemantics]. This is done automatically by the [ExpansionPanel] widget.\n\nSee [IconButton] for a more general implementation of a pressable button\nwith an icon.", "detail": "", "kind": 7, "label": "ExpandIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NeverScrollableScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics that does not allow the user to scroll.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "NeverScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectionChangedCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the selection change callback used by\n[WidgetInspectorService.selectionChangedCallback].", "detail": "() → void", "kind": 7, "label": "InspectorSelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback used by ink effects to obtain the rectangle for the effect.\n\nUsed by [InkHighlight] and [InkSplash], for example.", "detail": "() → Rect", "kind": 7, "label": "RectCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearProgressIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design linear progress indicator, also known as a progress bar.\n\nA widget that shows progress along a line. There are two kinds of linear\nprogress indicators:\n\n * _Determinate_. Determinate progress indicators have a specific value at\n each point in time, and the value should increase monotonically from 0.0\n to 1.0, at which time the indicator is complete. To create a determinate\n progress indicator, use a non-null [value] between 0.0 and 1.0.\n * _Indeterminate_. Indeterminate progress indicators do not have a specific\n value at each point in time and instead indicate that progress is being\n made without indicating how much progress remains. To create an\n indeterminate progress indicator, use a null [value].\n\nThe indicator line is displayed with [valueColor], an animated value. To\nspecify a constant color value use: `AlwaysStoppedAnimation<Color>(color)`.\n\nSee also:\n\n * [CircularProgressIndicator], which shows progress along a circular arc.\n * [RefreshIndicator], which automatically displays a [CircularProgressIndicator]\n when the underlying vertical scrollable is overscrolled.\n * <https://material.io/design/components/progress-indicators.html#linear-progress-indicators>", "detail": "", "kind": 7, "label": "LinearProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcher", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that by default does a [FadeTransition] between a new widget and\nthe widget previously set on the [AnimatedSwitcher] as a child.\n\nIf they are swapped fast enough (i.e. before [duration] elapses), more than\none previous child can exist and be transitioning out while the newest one\nis transitioning in.\n\nIf the \"new\" child is the same widget type and key as the \"old\" child, but\nwith different parameters, then [AnimatedSwitcher] will *not* do a\ntransition between them, since as far as the framework is concerned, they\nare the same widget and the existing widget can be updated with the new\nparameters. To force the transition to occur, set a [Key] on each child\nwidget that you wish to be considered unique (typically a [ValueKey] on the\nwidget data that distinguishes this child from the others).\n\nThe same key can be used for a new child as was used for an already-outgoing\nchild; the two will not be considered related. (For example, if a progress\nindicator with key A is first shown, then an image with key B, then another\nprogress indicator with key A again, all in rapid succession, then the old\nprogress indicator and the image will be fading out while a new progress\nindicator is fading in.)\n\n\n```dart\nclass ClickCounter extends StatefulWidget {\n const ClickCounter({Key key}) : super(key: key);\n\n @override\n _ClickCounterState createState() => _ClickCounterState();\n}\n\nclass _ClickCounterState extends State<ClickCounter> {\n int _count = 0;\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Material(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n AnimatedSwitcher(\n duration: const Duration(milliseconds: 500),\n transitionBuilder: (Widget child, Animation<double> animation) {\n return ScaleTransition(child: child, scale: animation);\n },\n child: Text(\n '$_count',\n // This key causes the AnimatedSwitcher to interpret this as a \"new\"\n // child each time the count changes, so that it will begin its animation\n // when the count changes.\n key: ValueKey<int>(_count),\n style: Theme.of(context).textTheme.display1,\n ),\n ),\n RaisedButton(\n child: const Text('Increment'),\n onPressed: () {\n setState(() {\n _count += 1;\n });\n },\n ),\n ],\n ),\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedCrossFade], which only fades between two children, but also\n interpolates their sizes, and is reversible.\n * [FadeTransition] which [AnimatedSwitcher] uses to perform the transition.", "detail": "", "kind": 7, "label": "AnimatedSwitcher" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPrototypeExtentList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places its box children in a linear array and constrains them\nto have the same extent as a prototype item along the main axis.\n\n[SliverPrototypeExtentList] arranges its children in a line along\nthe main axis starting at offset zero and without gaps. Each child is\nconstrained to the same extent as the [prototypeItem] along the main axis\nand the [SliverConstraints.crossAxisExtent] along the cross axis.\n\n[SliverPrototypeExtentList] is more efficient than [SliverList] because\n[SliverPrototypeExtentList] does not need to lay out its children to obtain\ntheir extent along the main axis. It's a little more flexible than\n[SliverFixedExtentList] because there's no need to determine the appropriate\nitem extent in pixels.\n\nSee also:\n\n * [SliverFixedExtentList], whose itemExtent is a pixel value.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverPrototypeExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedIcons", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Identifier for the supported material design animated icons.\n\nUse with [AnimatedIcon] class to show specific animated icons.", "detail": "", "kind": 7, "label": "AnimatedIcons" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivityDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A backend for a [ScrollActivity].\n\nUsed by subclasses of [ScrollActivity] to manipulate the scroll view that\nthey are acting upon.\n\nSee also:\n\n * [ScrollActivity], which uses this class as its delegate.\n * [ScrollPositionWithSingleContext], the main implementation of this interface.", "detail": "", "kind": 7, "label": "ScrollActivityDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkRipple", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual reaction on a piece of [Material] to user input.\n\nA circular ink feature whose origin starts at the input touch point and\nwhose radius expands from 60% of the final radius. The splash origin\nanimates to the center of its [referenceBox].\n\nThis object is rarely created directly. Instead of creating an ink ripple,\nconsider using an [InkResponse] or [InkWell] widget, which uses\ngestures (such as tap and long-press) to trigger ink splashes. This class\nis used when the [Theme]'s [ThemeData.splashFactory] is [InkRipple.splashFactory].\n\nSee also:\n\n * [InkSplash], which is an ink splash feature that expands less\n aggressively than the ripple.\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink splash is painted.\n * [InkHighlight], which is an ink feature that emphasizes a part of a\n [Material].", "detail": "", "kind": 7, "label": "InkRipple" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using a rectangle.\n\nBy default, [ClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].\n\n[ClipRect] is commonly used with these widgets, which commonly paint outside\ntheir bounds:\n\n * [CustomPaint]\n * [CustomSingleChildLayout]\n * [CustomMultiChildLayout]\n * [Align] and [Center] (e.g., if [Align.widthFactor] or\n [Align.heightFactor] is less than 1.0).\n * [OverflowBox]\n * [SizedOverflowBox]\n\n\nFor example, by combining a [ClipRect] with an [Align], one can show just\nthe top half of an [Image]:\n\n```dart\nClipRect(\n child: Align(\n alignment: Alignment.topCenter,\n heightFactor: 0.5,\n child: Image.network(userAvatarUrl),\n ),\n)\n```\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutId", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Metadata for identifying children in a [CustomMultiChildLayout].\n\nThe [MultiChildLayoutDelegate.hasChild],\n[MultiChildLayoutDelegate.layoutChild], and\n[MultiChildLayoutDelegate.positionChild] methods use these identifiers.", "detail": "", "kind": 7, "label": "LayoutId" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Placeholder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that draws a box that represents where other widgets will one day\nbe added.\n\nThis widget is useful during development to indicate that the interface is\nnot yet complete.\n\nBy default, the placeholder is sized to fit its container. If the\nplaceholder is in an unbounded space, it will size itself according to the\ngiven [fallbackWidth] and [fallbackHeight].", "detail": "", "kind": 7, "label": "Placeholder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RebuildDirtyWidgetCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for [debugOnRebuildDirtyWidget] implementations.", "detail": "(Element e, bool builtOnce) → void", "kind": 7, "label": "RebuildDirtyWidgetCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConfirmDismissCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [Dismissible] to give the application an opportunity to\nconfirm or veto a dismiss gesture.\n\nUsed by [Dismissible.confirmDismiss].", "detail": "(DismissDirection direction) → Future<bool>", "kind": 7, "label": "ConfirmDismissCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that contains a multiple box children that each fill the viewport.\n\n[SliverFillViewport] places its children in a linear array along the main\naxis. Each child is sized to fill the viewport, both in the main and cross\naxis.\n\nSee also:\n\n * [SliverFixedExtentList], which has a configurable\n [SliverFixedExtentList.itemExtent].\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Step", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material step used in [Stepper]. The step can have a title and subtitle,\nan icon within its circle, some content and a state that governs its\nstyling.\n\nSee also:\n\n * [Stepper]\n * <https://material.io/archive/guidelines/components/steppers.html>", "detail": "", "kind": 7, "label": "Step" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextField", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design text field.\n\nA text field lets the user enter text, either with hardware keyboard or with\nan onscreen keyboard.\n\nThe text field calls the [onChanged] callback whenever the user changes the\ntext in the field. If the user indicates that they are done typing in the\nfield (e.g., by pressing a button on the soft keyboard), the text field\ncalls the [onSubmitted] callback.\n\nTo control the text that is displayed in the text field, use the\n[controller]. For example, to set the initial value of the text field, use\na [controller] that already contains some text. The [controller] can also\ncontrol the selection and composing region (and to observe changes to the\ntext, selection, and composing region).\n\nBy default, a text field has a [decoration] that draws a divider below the\ntext field. You can use the [decoration] property to control the decoration,\nfor example by adding a label or an icon. If you set the [decoration]\nproperty to null, the decoration will be removed entirely, including the\nextra padding introduced by the decoration to save space for the labels.\n\nIf [decoration] is non-null (which is the default), the text field requires\none of its ancestors to be a [Material] widget. When the [TextField] is\ntapped an ink splash that paints on the material is triggered, see\n[ThemeData.splashFactory].\n\nTo integrate the [TextField] into a [Form] with other [FormField] widgets,\nconsider using [TextFormField].\n\nThis example shows how to create a [TextField] that will obscure input. The\n[InputDecoration] surrounds the field in a border using [OutlineInputBorder]\nand adds a label.\n\n```dart\nTextField(\n obscureText: true,\n decoration: InputDecoration(\n border: OutlineInputBorder(),\n labelText: 'Password',\n ),\n)\n```\n\nSee also:\n\n * <https://material.io/design/components/text-fields.html>\n * [TextFormField], which integrates with the [Form] widget.\n * [InputDecorator], which shows the labels and other visual elements that\n surround the actual text editing widget.\n * [EditableText], which is the raw text editing control at the heart of a\n [TextField]. The [EditableText] widget is rarely used directly unless\n you are implementing an entirely different design language, such as\n Cupertino.", "detail": "", "kind": 7, "label": "TextField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChipAttributes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface defining the base attributes for a material design chip.\n\nChips are compact elements that represent an attribute, text, entity, or\naction.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "ChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material widget that's displayed at the bottom of an app for selecting\namong a small number of views, typically between three and five.\n\nThe bottom navigation bar consists of multiple items in the form of\ntext labels, icons, or both, laid out on top of a piece of material. It\nprovides quick navigation between the top-level views of an app. For larger\nscreens, side navigation may be a better fit.\n\nA bottom navigation bar is usually used in conjunction with a [Scaffold],\nwhere it is provided as the [Scaffold.bottomNavigationBar] argument.\n\nThe bottom navigation bar's [type] changes how its [items] are displayed.\nIf not specified, then it's automatically set to\n[BottomNavigationBarType.fixed] when there are less than four items, and\n[BottomNavigationBarType.shifting] otherwise.\n\n * [BottomNavigationBarType.fixed], the default when there are less than\n four [items]. The selected item is rendered with the\n [selectedItemColor] if it's non-null, otherwise the theme's\n [ThemeData.primaryColor] is used. If [backgroundColor] is null, The\n navigation bar's background color defaults to the [Material] background\n color, [ThemeData.canvasColor] (essentially opaque white).\n * [BottomNavigationBarType.shifting], the default when there are four\n or more [items]. If [selectedItemColor] is null, all items are rendered\n in white. The navigation bar's background color is the same as the\n [BottomNavigationBarItem.backgroundColor] of the selected item. In this\n case it's assumed that each item will have a different background color\n and that background color will contrast well with white.\n\nThis example shows a [BottomNavigationBar] as it is used within a [Scaffold]\nwidget. The [BottomNavigationBar] has three [BottomNavigationBarItem]\nwidgets and the [currentIndex] is set to index 0. The selected item is\namber. The `_onItemTapped` function changes the selected item's index\nand displays a corresponding message in the center of the [Scaffold].\n\n![A scaffold with a bottom navigation bar containing three bottom navigation\nbar items. The first one is selected.](https://flutter.github.io/assets-for-api-docs/assets/material/bottom_navigation_bar.png)\n\n```dart\nint _selectedIndex = 0;\nstatic const TextStyle optionStyle = TextStyle(fontSize: 30, fontWeight: FontWeight.bold);\nstatic const List<Widget> _widgetOptions = <Widget>[\n Text(\n 'Index 0: Home',\n style: optionStyle,\n ),\n Text(\n 'Index 1: Business',\n style: optionStyle,\n ),\n Text(\n 'Index 2: School',\n style: optionStyle,\n ),\n];\n\nvoid _onItemTapped(int index) {\n setState(() {\n _selectedIndex = index;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('BottomNavigationBar Sample'),\n ),\n body: Center(\n child: _widgetOptions.elementAt(_selectedIndex),\n ),\n bottomNavigationBar: BottomNavigationBar(\n items: const <BottomNavigationBarItem>[\n BottomNavigationBarItem(\n icon: Icon(Icons.home),\n title: Text('Home'),\n ),\n BottomNavigationBarItem(\n icon: Icon(Icons.business),\n title: Text('Business'),\n ),\n BottomNavigationBarItem(\n icon: Icon(Icons.school),\n title: Text('School'),\n ),\n ],\n currentIndex: _selectedIndex,\n selectedItemColor: Colors.amber[800],\n onTap: _onItemTapped,\n ),\n );\n}\n```\n\nSee also:\n\n * [BottomNavigationBarItem]\n * [Scaffold]\n * <https://material.io/design/components/bottom-navigation.html>", "detail": "", "kind": 7, "label": "BottomNavigationBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay show two time series. The first shows how much time was required\non this thread to produce each frame. The second shows how much time was\nrequired on the GPU thread to produce each frame. Ideally, both these values\nwould be less than the total frame budget for the hardware on which the app\nis running. For example, if the hardware has a screen that updates at 60 Hz,\neach thread should ideally spend less than 16ms producing each frame. This\nideal condition is indicated by a green vertical line for each thread.\nOtherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "PerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildListDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for slivers using an explicit list.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[SliverChildBuilderDelegate] or by subclassing [SliverChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.\n\nThe widgets in the given [children] list are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\nSee [SliverChildBuilderDelegate] for sample code using\n`semanticIndexOffset` and `semanticIndexCallback`.\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.", "detail": "", "kind": 7, "label": "SliverChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "YearPicker", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list of years to allow picking a year.\n\nThe year picker widget is rarely used directly. Instead, consider using\n[showDatePicker], which creates a date picker dialog.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.\n * [showTimePicker], which shows a dialog that contains a material design\n time picker.", "detail": "", "kind": 7, "label": "YearPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkSplash", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual reaction on a piece of [Material] to user input.\n\nA circular ink feature whose origin starts at the input touch point\nand whose radius expands from zero.\n\nThis object is rarely created directly. Instead of creating an ink splash\ndirectly, consider using an [InkResponse] or [InkWell] widget, which uses\ngestures (such as tap and long-press) to trigger ink splashes.\n\nSee also:\n\n * [InkRipple], which is an ink splash feature that expands more\n aggressively than this class does.\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink splash is painted.\n * [InkHighlight], which is an ink feature that emphasizes a part of a\n [Material].", "detail": "", "kind": 7, "label": "InkSplash" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrolling view inside of which can be nested other scrolling views, with\ntheir scroll positions being intrinsically linked.\n\nThe most common use case for this widget is a scrollable view with a\nflexible [SliverAppBar] containing a [TabBar] in the header (build by\n[headerSliverBuilder], and with a [TabBarView] in the [body], such that the\nscrollable view's contents vary based on which tab is visible.\n\n## Motivation\n\nIn a normal [ScrollView], there is one set of slivers (the components of the\nscrolling view). If one of those slivers hosted a [TabBarView] which scrolls\nin the opposite direction (e.g. allowing the user to swipe horizontally\nbetween the pages represented by the tabs, while the list scrolls\nvertically), then any list inside that [TabBarView] would not interact with\nthe outer [ScrollView]. For example, flinging the inner list to scroll to\nthe top would not cause a collapsed [SliverAppBar] in the outer [ScrollView]\nto expand.\n\n[NestedScrollView] solves this problem by providing custom\n[ScrollController]s for the outer [ScrollView] and the inner [ScrollView]s\n(those inside the [TabBarView], hooking them together so that they appear,\nto the user, as one coherent scroll view.\n\n\nThis example shows a [NestedScrollView] whose header is the combination of a\n[TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a\n[SliverOverlapAbsorber]/[SliverOverlapInjector] pair to make the inner lists\nalign correctly, and it uses [SafeArea] to avoid any horizontal disturbances\n(e.g. the \"notch\" on iOS when the phone is horizontal). In addition,\n[PageStorageKey]s are used to remember the scroll position of each tab's\nlist.\n\nIn the example below, `_tabs` is a list of strings, one for each tab, giving\nthe tab labels. In a real application, it would be replaced by the actual\ndata model being represented.\n\n```dart\nDefaultTabController(\n length: _tabs.length, // This is the number of tabs.\n child: NestedScrollView(\n headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {\n // These are the slivers that show up in the \"outer\" scroll view.\n return <Widget>[\n SliverOverlapAbsorber(\n // This widget takes the overlapping behavior of the SliverAppBar,\n // and redirects it to the SliverOverlapInjector below. If it is\n // missing, then it is possible for the nested \"inner\" scroll view\n // below to end up under the SliverAppBar even when the inner\n // scroll view thinks it has not been scrolled.\n // This is not necessary if the \"headerSliverBuilder\" only builds\n // widgets that do not overlap the next sliver.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n child: SliverAppBar(\n title: const Text('Books'), // This is the title in the app bar.\n pinned: true,\n expandedHeight: 150.0,\n // The \"forceElevated\" property causes the SliverAppBar to show\n // a shadow. The \"innerBoxIsScrolled\" parameter is true when the\n // inner scroll view is scrolled beyond its \"zero\" point, i.e.\n // when it appears to be scrolled below the SliverAppBar.\n // Without this, there are cases where the shadow would appear\n // or not appear inappropriately, because the SliverAppBar is\n // not actually aware of the precise position of the inner\n // scroll views.\n forceElevated: innerBoxIsScrolled,\n bottom: TabBar(\n // These are the widgets to put in each tab in the tab bar.\n tabs: _tabs.map((String name) => Tab(text: name)).toList(),\n ),\n ),\n ),\n ];\n },\n body: TabBarView(\n // These are the contents of the tab views, below the tabs.\n children: _tabs.map((String name) {\n return SafeArea(\n top: false,\n bottom: false,\n child: Builder(\n // This Builder is needed to provide a BuildContext that is \"inside\"\n // the NestedScrollView, so that sliverOverlapAbsorberHandleFor() can\n // find the NestedScrollView.\n builder: (BuildContext context) {\n return CustomScrollView(\n // The \"controller\" and \"primary\" members should be left\n // unset, so that the NestedScrollView can control this\n // inner scroll view.\n // If the \"controller\" property is set, then this scroll\n // view will not be associated with the NestedScrollView.\n // The PageStorageKey should be unique to this ScrollView;\n // it allows the list to remember its scroll position when\n // the tab view is not on the screen.\n key: PageStorageKey<String>(name),\n slivers: <Widget>[\n SliverOverlapInjector(\n // This is the flip side of the SliverOverlapAbsorber above.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n ),\n SliverPadding(\n padding: const EdgeInsets.all(8.0),\n // In this example, the inner scroll view has\n // fixed-height list items, hence the use of\n // SliverFixedExtentList. However, one could use any\n // sliver widget here, e.g. SliverList or SliverGrid.\n sliver: SliverFixedExtentList(\n // The items in this example are fixed to 48 pixels\n // high. This matches the Material Design spec for\n // ListTile widgets.\n itemExtent: 48.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n // This builder is called for each child.\n // In this example, we just number each list item.\n return ListTile(\n title: Text('Item $index'),\n );\n },\n // The childCount of the SliverChildBuilderDelegate\n // specifies how many children this inner list\n // has. In this example, each tab has a list of\n // exactly 30 items, but this is arbitrary.\n childCount: 30,\n ),\n ),\n ),\n ],\n );\n },\n ),\n );\n }).toList(),\n ),\n ),\n)\n```", "detail": "", "kind": 7, "label": "NestedScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SearchDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Delegate for [showSearch] to define the content of the search page.\n\nThe search page always shows an [AppBar] at the top where users can\nenter their search queries. The buttons shown before and after the search\nquery text field can be customized via [SearchDelegate.leading] and\n[SearchDelegate.actions].\n\nThe body below the [AppBar] can either show suggested queries (returned by\n[SearchDelegate.buildSuggestions]) or - once the user submits a search - the\nresults of the search as returned by [SearchDelegate.buildResults].\n\n[SearchDelegate.query] always contains the current query entered by the user\nand should be used to build the suggestions and results.\n\nThe results can be brought on screen by calling [SearchDelegate.showResults]\nand you can go back to showing the suggestions by calling\n[SearchDelegate.showSuggestions].\n\nOnce the user has selected a search result, [SearchDelegate.close] should be\ncalled to remove the search page from the top of the navigation stack and\nto notify the caller of [showSearch] about the selected search result.\n\nA given [SearchDelegate] can only be associated with one active [showSearch]\ncall. Call [SearchDelegate.close] before re-using the same delegate instance\nfor another [showSearch] call.", "detail": "", "kind": 7, "label": "SearchDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list that works page by page.\n\nEach child of a page view is forced to be the same size as the viewport.\n\nYou can use a [PageController] to control which page is visible in the view.\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nThe [PageController] can also be used to control the\n[PageController.initialPage], which determines which page is shown when the\n[PageView] is first constructed, and the [PageController.viewportFraction],\nwhich determines the size of the pages as a fraction of the viewport size.\n\n\nSee also:\n\n * [PageController], which controls which page is visible in the view.\n * [SingleChildScrollView], when you need to make a single child scrollable.\n * [ListView], for a scrollable list of boxes.\n * [GridView], for a scrollable grid of boxes.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "PageView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBoxTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of a [DecoratedBox] that animates the different properties\nof its [Decoration].\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [DecoratedBox], which also draws a [Decoration] but is not animated.\n * [AnimatedContainer], a more full-featured container that also animates on\n decoration using an internal animation.", "detail": "", "kind": 7, "label": "DecoratedBoxTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuDivider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A horizontal divider in a material design popup menu.\n\nThis widget adapts the [Divider] for use in popup menus.\n\nSee also:\n\n * [PopupMenuItem], for the kinds of items that this widget divides.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "PopupMenuDivider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [Decoration]s.\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[Decoration.lerp].\n\nFor [ShapeDecoration]s which know how to [ShapeDecoration.lerpTo] or\n[ShapeDecoration.lerpFrom] each other, this will produce a smooth\ninterpolation between decorations.\n\nSee also:\n\n * [Tween] for a discussion on how to use interpolation objects.\n * [ShapeDecoration], [RoundedRectangleBorder], [CircleBorder], and\n [StadiumBorder] for examples of shape borders that can be smoothly\n interpolated.\n * [BoxBorder] for a border that can only be smoothly interpolated between other\n [BoxBorder]s.", "detail": "", "kind": 7, "label": "DecorationTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [RenderObjectWidget] as its configuration.\n\n[RenderObjectElement] objects have an associated [RenderObject] widget in\nthe render tree, which handles concrete operations like laying out,\npainting, and hit testing.\n\nContrast with [ComponentElement].\n\nFor details on the lifecycle of an element, see the discussion at [Element].\n\n## Writing a RenderObjectElement subclass\n\nThere are three common child models used by most [RenderObject]s:\n\n* Leaf render objects, with no children: The [LeafRenderObjectElement] class\n handles this case.\n\n* A single child: The [SingleChildRenderObjectElement] class handles this\n case.\n\n* A linked list of children: The [MultiChildRenderObjectElement] class\n handles this case.\n\nSometimes, however, a render object's child model is more complicated. Maybe\nit has a two-dimensional array of children. Maybe it constructs children on\ndemand. Maybe it features multiple lists. In such situations, the\ncorresponding [Element] for the [Widget] that configures that [RenderObject]\nwill be a new subclass of [RenderObjectElement].\n\nSuch a subclass is responsible for managing children, specifically the\n[Element] children of this object, and the [RenderObject] children of its\ncorresponding [RenderObject].\n\n### Specializing the getters\n\n[RenderObjectElement] objects spend much of their time acting as\nintermediaries between their [widget] and their [renderObject]. To make this\nmore tractable, most [RenderObjectElement] subclasses override these getters\nso that they return the specific type that the element expects, e.g.:\n\n```dart\nclass FooElement extends RenderObjectElement {\n\n @override\n Foo get widget => super.widget;\n\n @override\n RenderFoo get renderObject => super.renderObject;\n\n // ...\n}\n```\n\n### Slots\n\nEach child [Element] corresponds to a [RenderObject] which should be\nattached to this element's render object as a child.\n\nHowever, the immediate children of the element may not be the ones that\neventually produce the actual [RenderObject] that they correspond to. For\nexample a [StatelessElement] (the element of a [StatelessWidget]) simply\ncorresponds to whatever [RenderObject] its child (the element returned by\nits [StatelessWidget.build] method) corresponds to.\n\nEach child is therefore assigned a _slot_ token. This is an identifier whose\nmeaning is private to this [RenderObjectElement] node. When the descendant\nthat finally produces the [RenderObject] is ready to attach it to this\nnode's render object, it passes that slot token back to this node, and that\nallows this node to cheaply identify where to put the child render object\nrelative to the others in the parent render object.\n\n### Updating children\n\nEarly in the lifecycle of an element, the framework calls the [mount]\nmethod. This method should call [updateChild] for each child, passing in\nthe widget for that child, and the slot for that child, thus obtaining a\nlist of child [Element]s.\n\nSubsequently, the framework will call the [update] method. In this method,\nthe [RenderObjectElement] should call [updateChild] for each child, passing\nin the [Element] that was obtained during [mount] or the last time [update]\nwas run (whichever happened most recently), the new [Widget], and the slot.\nThis provides the object with a new list of [Element] objects.\n\nWhere possible, the [update] method should attempt to map the elements from\nthe last pass to the widgets in the new pass. For example, if one of the\nelements from the last pass was configured with a particular [Key], and one\nof the widgets in this new pass has that same key, they should be paired up,\nand the old element should be updated with the widget (and the slot\ncorresponding to the new widget's new position, also). The [updateChildren]\nmethod may be useful in this regard.\n\n[updateChild] should be called for children in their logical order. The\norder can matter; for example, if two of the children use [PageStorage]'s\n`writeState` feature in their build method (and neither has a [Widget.key]),\nthen the state written by the first will be overwritten by the second.\n\n#### Dynamically determining the children during the build phase\n\nThe child widgets need not necessarily come from this element's widget\nverbatim. They could be generated dynamically from a callback, or generated\nin other more creative ways.\n\n#### Dynamically determining the children during layout\n\nIf the widgets are to be generated at layout time, then generating them when\nthe [update] method won't work: layout of this element's render object\nhasn't started yet at that point. Instead, the [update] method can mark the\nrender object as needing layout (see [RenderObject.markNeedsLayout]), and\nthen the render object's [RenderObject.performLayout] method can call back\nto the element to have it generate the widgets and call [updateChild]\naccordingly.\n\nFor a render object to call an element during layout, it must use\n[RenderObject.invokeLayoutCallback]. For an element to call [updateChild]\noutside of its [update] method, it must use [BuildOwner.buildScope].\n\nThe framework provides many more checks in normal operation than it does\nwhen doing a build during layout. For this reason, creating widgets with\nlayout-time build semantics should be done with great care.\n\n#### Handling errors when building\n\nIf an element calls a builder function to obtain widgets for its children,\nit may find that the build throws an exception. Such exceptions should be\ncaught and reported using [FlutterError.reportError]. If a child is needed\nbut a builder has failed in this way, an instance of [ErrorWidget] can be\nused instead.\n\n### Detaching children\n\nIt is possible, when using [GlobalKey]s, for a child to be proactively\nremoved by another element before this element has been updated.\n(Specifically, this happens when the subtree rooted at a widget with a\nparticular [GlobalKey] is being moved from this element to an element\nprocessed earlier in the build phase.) When this happens, this element's\n[forgetChild] method will be called with a reference to the affected child\nelement.\n\nThe [forgetChild] method of a [RenderObjectElement] subclass must remove the\nchild element from its child list, so that when it next [update]s its\nchildren, the removed child is not considered.\n\nFor performance reasons, if there are many elements, it may be quicker to\ntrack which elements were forgotten by storing them in a [Set], rather than\nproactively mutating the local record of the child list and the identities\nof all the slots. For example, see the implementation of\n[MultiChildRenderObjectElement].\n\n### Maintaining the render object tree\n\nOnce a descendant produces a render object, it will call\n[insertChildRenderObject]. If the descendant's slot changes identity, it\nwill call [moveChildRenderObject]. If a descendant goes away, it will call\n[removeChildRenderObject].\n\nThese three methods should update the render tree accordingly, attaching,\nmoving, and detaching the given child render object from this element's own\nrender object respectively.\n\n### Walking the children\n\nIf a [RenderObjectElement] object has any children [Element]s, it must\nexpose them in its implementation of the [visitChildren] method. This method\nis used by many of the framework's internal mechanisms, and so should be\nfast. It is also used by the test framework and [debugDumpApp].", "detail": "", "kind": 7, "label": "RenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldFeatureController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for controlling a feature of a [Scaffold].\n\nCommonly obtained from [ScaffoldState.showSnackBar] or [ScaffoldState.showBottomSheet].", "detail": "", "kind": 7, "label": "ScaffoldFeatureController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Positioned] which takes a specific\n[Animation<RelativeRect>] to transition the child's position from a start\nposition to an end position over the lifetime of the animation.\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [PositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "PositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlockSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that drops the semantics of all widget that were painted before it\nin the same semantic container.\n\nThis is useful to hide widgets from accessibility tools that are painted\nbehind a certain widget, e.g. an alert should usually disallow interaction\nwith any widget located \"behind\" the alert (even when they are still\npartially visible). Similarly, an open [Drawer] blocks interactions with\nany widget outside the drawer.\n\nSee also:\n\n * [ExcludeSemantics] which drops all semantics of its descendants.", "detail": "", "kind": 7, "label": "BlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[SliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [SliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children.\n\n\nIf the children have a fixed extent in the main axis, consider using\n[SliverFixedExtentList] rather than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis and is therefore more efficient.\n\n\nSee also:\n\n * [SliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDetector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that detects gestures.\n\nAttempts to recognize gestures that correspond to its non-null callbacks.\n\nIf this widget has a child, it defers to that child for its sizing behavior.\nIf it does not have a child, it grows to fit the parent instead.\n\nBy default a GestureDetector with an invisible child ignores touches;\nthis behavior can be controlled with [behavior].\n\nGestureDetector also listens for accessibility events and maps\nthem to the callbacks. To ignore accessibility events, set\n[excludeFromSemantics] to true.\n\nSee <http://flutter.dev/gestures/> for additional information.\n\nMaterial design applications typically react to touches with ink splash\neffects. The [InkWell] class implements this effect and can be used in place\nof a [GestureDetector] for handling taps.\n\n\nThis example makes a rectangle react to being tapped by setting the\n`_lights` field:\n\n```dart\nGestureDetector(\n onTap: () {\n setState(() { _lights = true; });\n },\n child: Container(\n color: Colors.yellow,\n child: Text('TURN LIGHTS ON'),\n ),\n)\n```\n\n## Debugging\n\nTo see how large the hit test box of a [GestureDetector] is for debugging\npurposes, set [debugPaintPointersEnabled] to true.", "detail": "", "kind": 7, "label": "GestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalizationsDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A factory for a set of localized resources of type `T`, to be loaded by a\n[Localizations] widget.\n\nTypical applications have one [Localizations] widget which is created by the\n[WidgetsApp] and configured with the app's `localizationsDelegates`\nparameter (a list of delegates). The delegate's [type] is used to identify\nthe object created by an individual delegate's [load] method.", "detail": "", "kind": 7, "label": "LocalizationsDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature for a function that's called when the user has dragged a\n[RefreshIndicator] far enough to demonstrate that they want the app to\nrefresh. The returned [Future] must complete when the refresh operation is\nfinished.\n\nUsed by [RefreshIndicator.onRefresh].", "detail": "() → Future<void>", "kind": 7, "label": "RefreshCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProviderStateMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides [Ticker] objects that are configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create an [AnimationController] in a class that uses this mixin, pass\n`vsync: this` to the animation controller constructor whenever you\ncreate a new animation controller.\n\nIf you only have a single [Ticker] (for example only a single\n[AnimationController]) for the lifetime of your [State], then using a\n[SingleTickerProviderStateMixin] is more efficient. This is the common case.", "detail": "", "kind": 7, "label": "TickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for widgets that hook [ParentData] information to children of\n[RenderObjectWidget]s.\n\nThis can be used to provide per-child configuration for\n[RenderObjectWidget]s with more than one child. For example, [Stack] uses\nthe [Positioned] parent data widget to position each child.\n\nA [ParentDataWidget] is specific to a particular kind of [RenderObject], and\nthus also to a particular [RenderObjectWidget] class. That class is `T`, the\n[ParentDataWidget] type argument.\n\n\nThis example shows how you would build a [ParentDataWidget] to configure a\n`FrogJar` widget's children by specifying a [Size] for each one.\n\n```dart\nclass FrogSize extends ParentDataWidget<FrogJar> {\n FrogSize({\n Key key,\n @required this.size,\n @required Widget child,\n }) : assert(child != null),\n assert(size != null),\n super(key: key, child: child);\n\n final Size size;\n\n @override\n void applyParentData(RenderObject renderObject) {\n final FrogJarParentData parentData = renderObject.parentData;\n if (parentData.size != size) {\n parentData.size = size;\n final RenderFrogJar targetParent = renderObject.parent;\n targetParent.markNeedsLayout();\n }\n }\n}\n```\n\nSee also:\n\n * [RenderObject], the superclass for layout algorithms.\n * [RenderObject.parentData], the slot that this class configures.\n * [ParentData], the superclass of the data that will be placed in\n [RenderObject.parentData] slots.\n * [RenderObjectWidget], the class for widgets that wrap [RenderObject]s.\n The `T` type parameter for [ParentDataWidget] is a [RenderObjectWidget].\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.", "detail": "", "kind": 7, "label": "ParentDataWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetToRenderBoxAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An adapter for placing a specific [RenderBox] in the widget tree.\n\nA given render object can be placed at most once in the widget tree. This\nwidget enforces that restriction by keying itself using a [GlobalObjectKey]\nfor the given render object.", "detail": "", "kind": 7, "label": "WidgetToRenderBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ValueKey] that defines where [PageStorage] values will be saved.\n\n[Scrollable]s ([ScrollPosition]s really) use [PageStorage] to save their\nscroll offset. Each time a scroll completes, the scrollable's page\nstorage is updated.\n\n[PageStorage] is used to save and restore values that can outlive the widget.\nThe values are stored in a per-route [Map] whose keys are defined by the\n[PageStorageKey]s for the widget and its ancestors. To make it possible\nfor a saved value to be found when a widget is recreated, the key's values\nmust not be objects whose identity will change each time the widget is created.\n\nFor example, to ensure that the scroll offsets for the scrollable within\neach `MyScrollableTabView` below are restored when the [TabBarView]\nis recreated, we've specified [PageStorageKey]s whose values are the\ntabs' string labels.\n\n```dart\nTabBarView(\n children: myTabs.map((Tab tab) {\n MyScrollableTabView(\n key: PageStorageKey<String>(tab.text), // like 'Tab 1'\n tab: tab,\n ),\n }),\n)\n```", "detail": "", "kind": 7, "label": "PageStorageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the color and typography values for a material design theme.\n\nUse this class to configure a [Theme] widget.\n\nTo obtain the current theme, use [Theme.of].", "detail": "", "kind": 7, "label": "ThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SimpleDialogOption", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An option used in a [SimpleDialog].\n\nA simple dialog offers the user a choice between several options. This\nwidget is commonly used to represent each of the options. If the user\nselects this option, the widget will call the [onPressed] callback, which\ntypically uses [Navigator.pop] to close the dialog.\n\nThe padding on a [SimpleDialogOption] is configured to combine with the\ndefault [SimpleDialog.contentPadding] so that each option ends up 8 pixels\nfrom the other vertically, with 20 pixels of spacing between the dialog's\ntitle and the first option, and 24 pixels of spacing between the last option\nand the bottom of the dialog.\n\n\n```dart\nSimpleDialogOption(\n onPressed: () { Navigator.pop(context, Department.treasury); },\n child: const Text('Treasury department'),\n)\n```\n\nSee also:\n\n * [SimpleDialog], for a dialog in which to use this widget.\n * [showDialog], which actually displays the dialog and returns its result.\n * [FlatButton], which are commonly used as actions in other kinds of\n dialogs, such as [AlertDialog]s.\n * <https://material.io/design/components/dialogs.html#simple-dialog>", "detail": "", "kind": 7, "label": "SimpleDialogOption" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelHeaderBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that's called when the header of the\n[ExpansionPanel] needs to rebuild.", "detail": "(BuildContext context, bool isExpanded) → Widget", "kind": 7, "label": "ExpansionPanelHeaderBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DatePickerMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Initial display mode of the date picker dialog.\n\nDate picker UI mode for either showing a list of available years or a\nmonthly calendar initially in the dialog shown by calling [showDatePicker].\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.", "detail": "", "kind": 13, "label": "DatePickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [StatelessWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatelessElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeableMaterialItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base type for [MaterialSlice] and [MaterialGap].\n\nAll [MergeableMaterialItem] objects need a [LocalKey].", "detail": "", "kind": 7, "label": "MergeableMaterialItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenConstructor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a [Tween] factory.\n\nThis is the type of one of the arguments of [TweenVisitor], the signature\nused by [AnimatedWidgetBaseState.forEachTween].", "detail": "(T targetValue) → Tween<T>", "kind": 7, "label": "TweenConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigationToolbar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[NavigationToolbar] is a layout helper to position 3 widgets or groups of\nwidgets along a horizontal axis that's sensible for an application's\nnavigation bar such as in Material Design and in iOS.\n\nThe [leading] and [trailing] widgets occupy the edges of the widget with\nreasonable size constraints while the [middle] widget occupies the remaining\nspace in either a center aligned or start aligned fashion.\n\nEither directly use the themed app bars such as the Material [AppBar] or\nthe iOS [CupertinoNavigationBar] or wrap this widget with more theming\nspecifications for your own custom app bar.", "detail": "", "kind": 7, "label": "NavigationToolbar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines which portion of the content is visible in a scroll view.\n\nThe [pixels] value determines the scroll offset that the scroll view uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThe [ScrollPosition] applies [physics] to scrolling, and stores the\n[minScrollExtent] and [maxScrollExtent].\n\nScrolling is controlled by the current [activity], which is set by\n[beginActivity]. [ScrollPosition] itself does not start any activities.\nInstead, concrete subclasses, such as [ScrollPositionWithSingleContext],\ntypically start activities in response to user input or instructions from a\n[ScrollController].\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\n## Subclassing ScrollPosition\n\nOver time, a [Scrollable] might have many different [ScrollPosition]\nobjects. For example, if [Scrollable.physics] changes type, [Scrollable]\ncreates a new [ScrollPosition] with the new physics. To transfer state from\nthe old instance to the new instance, subclasses implement [absorb]. See\n[absorb] for more details.\n\nSubclasses also need to call [didUpdateScrollDirection] whenever\n[userScrollDirection] changes values.\n\nSee also:\n\n * [Scrollable], which uses a [ScrollPosition] to determine which portion of\n its content to display.\n * [ScrollController], which can be used with [ListView], [GridView] and\n other scrollable widgets to control a [ScrollPosition].\n * [ScrollPositionWithSingleContext], which is the most commonly used\n concrete subclass of [ScrollPosition].\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeMatcher", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This class is a work-around for the \"is\" operator not accepting a variable value as its right operand", "detail": "", "kind": 7, "label": "TypeMatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that rebuilds when the given [Listenable] changes value.\n\n[AnimatedWidget] is most commonly used with [Animation] objects, which are\n[Listenable], but it can be used with any [Listenable], including\n[ChangeNotifier] and [ValueNotifier].\n\n[AnimatedWidget] is most useful for widgets that are otherwise stateless. To\nuse [AnimatedWidget], simply subclass it and implement the build function.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedWidget].\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with TickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return SpinningContainer(controller: _controller);\n }\n}\n\nclass SpinningContainer extends AnimatedWidget {\n const SpinningContainer({Key key, AnimationController controller})\n : super(key: key, listenable: controller);\n\n Animation<double> get _progress => listenable;\n\n @override\n Widget build(BuildContext context) {\n return Transform.rotate(\n angle: _progress.value * 2.0 * math.pi,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n );\n }\n}\n```\n\nFor more complex case involving additional state, consider using\n[AnimatedBuilder].\n\nSee also:\n\n * [AnimatedBuilder], which is useful for more complex use cases.\n * [Animation], which is a [Listenable] object that can be used for\n [listenable].\n * [ChangeNotifier], which is another [Listenable] object that can be used\n for [listenable].", "detail": "", "kind": 7, "label": "AnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformTarget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that can be targeted by a [CompositedTransformFollower].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\nupdates the [link] object so that any [CompositedTransformFollower] widgets\nthat are subsequently composited in the same frame and were given the same\n[LayerLink] can position themselves at the same screen location.\n\nA single [CompositedTransformTarget] can be followed by multiple\n[CompositedTransformFollower] widgets.\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nany linked [CompositedTransformFollower]s.\n\nSee also:\n\n * [CompositedTransformFollower], the widget that can target this one.\n * [LeaderLayer], the layer that implements this widget's logic.", "detail": "", "kind": 7, "label": "CompositedTransformTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for being notified when a form field changes value.\n\nUsed by [FormField.onSaved].", "detail": "(T newValue) → void", "kind": 7, "label": "FormFieldSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataCell", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The data for a cell of a [DataTable].\n\nOne list of [DataCell] objects must be provided for each [DataRow]\nin the [DataTable], in the [new DataRow] constructor's `cells`\nargument.", "detail": "", "kind": 7, "label": "DataCell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides interactive behavior for [Drawer] widgets.\n\nRarely used directly. Drawer controllers are typically created automatically\nby [Scaffold] widgets.\n\nThe draw controller provides the ability to open and close a drawer, either\nvia an animation or via user interaction. When closed, the drawer collapses\nto a translucent gesture detector that can be used to listen for edge\nswipes.\n\nSee also:\n\n * [Drawer], a container with the default width of a drawer.\n * [Scaffold.drawer], the [Scaffold] slot for showing a drawer.", "detail": "", "kind": 7, "label": "DrawerController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.pageRouteBuilder].\n\nCreates a [PageRoute] using the given [RouteSettings] and [WidgetBuilder].", "detail": "(RouteSettings settings, WidgetBuilder builder) → PageRoute<T>", "kind": 7, "label": "PageRouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderComponentShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for slider thumb, thumb overlay, and value indicator shapes.\n\nCreate a subclass of this if you would like a custom shape.\n\nAll shapes are painted to the same canvas and ordering is important.\nThe overlay is painted first, then the value indicator, then the thumb.\n\nThe thumb painting can be skipped by specifying [noThumb] for\n[SliderThemeData.thumbShape].\n\nThe overlay painting can be skipped by specifying [noOverlay] for\n[SliderThemeData.overlayShape].\n\nSee also:\n\n * [RoundSliderThumbShape], which is the the default thumb shape.\n * [RoundSliderOverlayShape], which is the the default overlay shape.\n * [PaddleSliderValueIndicatorShape], which is the the default value\n indicator shape.", "detail": "", "kind": 7, "label": "SliderComponentShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverToBoxAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that contains a single box widget.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverToBoxAdapter]\nis a basic sliver that creates a bridge back to one of the usual box-based\nwidgets.\n\nRather than using multiple [SliverToBoxAdapter] widgets to display multiple\nbox widgets in a [CustomScrollView], consider using [SliverList],\n[SliverFixedExtentList], [SliverPrototypeExtentList], or [SliverGrid],\nwhich are more efficient because they instantiate only those children that\nare actually visible through the scroll view's viewport.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.\n * [SliverList], which displays multiple box widgets in a linear array.\n * [SliverFixedExtentList], which displays multiple box widgets with the\n same main-axis extent in a linear array.\n * [SliverPrototypeExtentList], which displays multiple box widgets with the\n same main-axis extent as a prototype item, in a linear array.\n * [SliverGrid], which displays multiple box widgets in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GenerateAppTitle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.onGenerateTitle].\n\nUsed to generate a value for the app's [Title.title], which the device uses\nto identify the app for the user. The `context` includes the [WidgetsApp]'s\n[Localizations] widget so that this method can be used to produce a\nlocalized title.\n\nThis function must not return null.", "detail": "(BuildContext context) → String", "kind": 7, "label": "GenerateAppTitle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An end-aligned row of buttons.\n\nPlaces the buttons horizontally according to the padding in the current\n[ButtonTheme]. The children are laid out in a [Row] with\n[MainAxisAlignment.end]. When the [Directionality] is [TextDirection.ltr],\nthe button bar's children are right justified and the last child becomes\nthe rightmost child. When the [Directionality] [TextDirection.rtl] the\nchildren are left justified and the last child becomes the leftmost child.\n\nUsed by [Dialog] to arrange the actions at the bottom of the dialog.\n\nSee also:\n\n * [RaisedButton], a kind of button.\n * [FlatButton], another kind of button.\n * [Card], at the bottom of which it is common to place a [ButtonBar].\n * [Dialog], which uses a [ButtonBar] for its actions.\n * [ButtonTheme], which configures the [ButtonBar].", "detail": "", "kind": 7, "label": "ButtonBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChipThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the color, shape, and text styles for a material design chip theme.\n\nUse this class to configure a [ChipTheme] widget, or to set the\n[ThemeData.chipTheme] for a [Theme] widget.\n\nTo obtain the current ambient chip theme, use [ChipTheme.of].\n\nThe parts of a chip are:\n\n * The \"avatar\", which is a widget that appears at the beginning of the\n chip. This is typically a [CircleAvatar] widget.\n * The \"label\", which is the widget displayed in the center of the chip.\n Typically this is a [Text] widget.\n * The \"delete icon\", which is a widget that appears at the end of the chip.\n * The chip is disabled when it is not accepting user input. Only some chips\n have a disabled state: [InputChip], [ChoiceChip], and [FilterChip].\n\nThe simplest way to create a ChipThemeData is to use [copyWith] on the one\nyou get from [ChipTheme.of], or create an entirely new one with\n[ChipThemeData..fromDefaults].\n\n\n```dart\nclass CarColor extends StatefulWidget {\n @override\n State createState() => _CarColorState();\n}\n\nclass _CarColorState extends State<CarColor> {\n Color _color = Colors.red;\n\n @override\n Widget build(BuildContext context) {\n return ChipTheme(\n data: ChipTheme.of(context).copyWith(backgroundColor: Colors.lightBlue),\n child: ChoiceChip(\n label: Text('Light Blue'),\n onSelected: (bool value) {\n setState(() {\n _color = value ? Colors.lightBlue : Colors.red;\n });\n },\n selected: _color == Colors.lightBlue,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of entities.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * [ChipTheme] widget, which can override the chip theme of its\n children.\n * [Theme] widget, which performs a similar function to [ChipTheme],\n but for overall themes.\n * [ThemeData], which has a default [ChipThemeData].", "detail": "", "kind": 7, "label": "ChipThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextCapitalization", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures how the platform keyboard will select an uppercase or\nlowercase keyboard.\n\nOnly supports text keyboards, other keyboard types will ignore this\nconfiguration. Capitalization is locale-aware.", "detail": "", "kind": 13, "label": "TextCapitalization" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlayChanged", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for reporting changes to the selection component of a\n[TextEditingValue] for the purposes of a [TextSelectionOverlay]. The\n[caretRect] argument gives the location of the caret in the coordinate space\nof the [RenderBox] given by the [TextSelectionOverlay.renderObject].\n\nUsed by [TextSelectionOverlay.onSelectionOverlayChanged].", "detail": "(TextEditingValue value, Rect caretRect) → void", "kind": 7, "label": "TextSelectionOverlayChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of the [LayoutBuilder] builder function.", "detail": "(BuildContext context, BoxConstraints constraints) → Widget", "kind": 7, "label": "LayoutWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImagePhase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The phases a [FadeInImage] goes through.", "detail": "", "kind": 13, "label": "FadeInImagePhase" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SlideTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the position of a widget relative to its normal position.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nBy default, the offsets are applied in the coordinate system of the canvas\n(so positive x offsets move the child towards the right). If a\n[textDirection] is provided, then the offsets are applied in the reading\ndirection, so in right-to-left text, positive x offsets move towards the\nleft, and in left-to-right text, positive x offsets move towards the right.\n\nHere's an illustration of the [SlideTransition] widget, with it's [position]\nanimated by a [CurvedAnimation] set to [Curves.elasticIn]:\n\nSee also:\n\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SlideTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyleTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [TextStyle]s.\n\nThis class specializes the interpolation of [Tween<TextStyle>] to use\n[TextStyle.lerp].\n\nThis will not work well if the styles don't set the same fields.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "TextStyleTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollbar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design scrollbar.\n\nA scrollbar indicates which portion of a [Scrollable] widget is actually\nvisible.\n\nDynamically changes to an iOS style scrollbar that looks like\n[CupertinoScrollbar] on the iOS platform.\n\nTo add a scrollbar to a [ScrollView], simply wrap the scroll view widget in\na [Scrollbar] widget.\n\nSee also:\n\n * [ListView], which display a linear, scrollable list of children.\n * [GridView], which display a 2 dimensional, scrollable array of children.", "detail": "", "kind": 7, "label": "Scrollbar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTabController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [TabController] for descendant widgets that don't specify one\nexplicitly.\n\n[DefaultTabController] is an inherited widget that is used to share a\n[TabController] with a [TabBar] or a [TabBarView]. It's used when sharing an\nexplicitly created [TabController] isn't convenient because the tab bar\nwidgets are created by a stateless parent widget or by different parent\nwidgets.\n\n```dart\nclass MyDemo extends StatelessWidget {\n final List<Tab> myTabs = <Tab>[\n Tab(text: 'LEFT'),\n Tab(text: 'RIGHT'),\n ];\n\n @override\n Widget build(BuildContext context) {\n return DefaultTabController(\n length: myTabs.length,\n child: Scaffold(\n appBar: AppBar(\n bottom: TabBar(\n tabs: myTabs,\n ),\n ),\n body: TabBarView(\n children: myTabs.map((Tab tab) {\n return Center(child: Text(tab.text));\n }).toList(),\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DefaultTabController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildLoopingListDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies infinite children for [ListWheelScrollView] by\nlooping an explicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildLoopingListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates its own size and clips and aligns its child.\n\n[SizeTransition] acts as a [ClipRect] that animates either its width or its\nheight, depending upon the value of [axis]. The alignment of the child along\nthe [axis] is specified by the [axisAlignment].\n\nLike most widgets, [SizeTransition] will conform to the constraints it is\ngiven, so be sure to put it in a context where it can change size. For\ninstance, if you place it into a [Container] with a fixed size, then the\n[SizeTransition] will not be able to change size, and will appear to do\nnothing.\n\nHere's an illustration of the [SizeTransition] widget, with it's [sizeFactor]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [AnimatedCrossFade], for a widget that automatically animates between\n the sizes of two children, fading between them.\n * [ScaleTransition], a widget that scales the size of the child instead of\n clipping it.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SizeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IdleScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scroll activity that does nothing.\n\nWhen a scroll view is not scrolling, it is performing the idle activity.\n\nIf the [Scrollable] changes dimensions, this activity triggers a ballistic\nactivity to restore the view.", "detail": "", "kind": 7, "label": "IdleScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for building children of a [DragTarget].\n\nThe `candidateData` argument contains the list of drag data that is hovering\nover this [DragTarget] and that has passed [DragTarget.onWillAccept]. The\n`rejectedData` argument contains the list of drag data that is hovering over\nthis [DragTarget] and that will not be accepted by the [DragTarget].\n\nUsed by [DragTarget.builder].", "detail": "(BuildContext context, List<T> candidateData, List<dynamic> rejectedData) → Widget", "kind": 7, "label": "DragTargetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticIndexCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A callback which produces a semantic index given a widget and the local index.\n\nReturn a null value to prevent a widget from receiving an index.\n\nA semantic index is used to tag child semantic nodes for accessibility\nannouncements in scroll view.\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.\n * [SliverChildBuilderDelegate], for an explanation of how this is used to\n generate indexes.", "detail": "(Widget widget, int localIndex) → int", "kind": 7, "label": "SemanticIndexCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotificationPredicate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A predicate for [ScrollNotification], used to customize widgets that\nlisten to notifications from their children.", "detail": "(ScrollNotification notification) → bool", "kind": 7, "label": "ScrollNotificationPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated widget that automatically transitions its size over a given\nduration whenever the given child's size changes.", "detail": "", "kind": 7, "label": "AnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tab", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design [TabBar] tab. If both [icon] and [text] are\nprovided, the text is displayed below the icon.\n\nSee also:\n\n * [TabBar], which displays a row of tabs.\n * [TabBarView], which displays a widget for the currently selected tab.\n * [TabController], which coordinates tab selection between a [TabBar] and a [TabBarView].\n * <https://material.io/design/components/tabs.html>", "detail": "", "kind": 7, "label": "Tab" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataRow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Row configuration and cell data for a [DataTable].\n\nOne row configuration must be provided for each row to\ndisplay in the table. The list of [DataRow] objects is passed\nas the `rows` argument to the [new DataTable] constructor.\n\nThe data for this row of the table is provided in the [cells]\nproperty of the [DataRow] object.", "detail": "", "kind": 7, "label": "DataRow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IgnorePointer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is invisible during hit testing.\n\nWhen [ignoring] is true, this widget (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because it returns\nfalse from [RenderBox.hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [AbsorbPointer], which also prevents its children from receiving pointer\n events but is itself visible to hit testing.", "detail": "", "kind": 7, "label": "IgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChoiceChip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design choice chip.\n\n[ChoiceChip]s represent a single choice from a set. Choice chips contain\nrelated descriptive text or categories.\n\nRequires one of its ancestors to be a [Material] widget. The [selected] and\n[label] arguments must not be null.\n\n\n```dart\nclass MyThreeOptions extends StatefulWidget {\n @override\n _MyThreeOptionsState createState() => _MyThreeOptionsState();\n}\n\nclass _MyThreeOptionsState extends State<MyThreeOptions> {\n int _value = 1;\n\n @override\n Widget build(BuildContext context) {\n return Wrap(\n children: List<Widget>.generate(\n 3,\n (int index) {\n return ChoiceChip(\n label: Text('Item $index'),\n selected: _value == index,\n onSelected: (bool selected) {\n setState(() {\n _value = selected ? index : null;\n });\n },\n );\n },\n ).toList(),\n );\n }\n}\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "ChoiceChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteObserver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Navigator] observer that notifies [RouteAware]s of changes to the\nstate of their [Route].\n\n[RouteObserver] informs subscribers whenever a route of type `R` is pushed\non top of their own route of type `R` or popped from it. This is for example\nuseful to keep track of page transitions, e.g. a `RouteObserver<PageRoute>`\nwill inform subscribed [RouteAware]s whenever the user navigates away from\nthe current page route to another page route.\n\nTo be informed about route changes of any type, consider instantiating a\n`RouteObserver<Route>`.\n\n## Type arguments\n\nWhen using more aggressive\n[lints](http://dart-lang.github.io/linter/lints/), in particular lints such\nas `always_specify_types`, the Dart analyzer will require that certain types\nbe given with their type arguments. Since the [Route] class and its\nsubclasses have a type argument, this includes the arguments passed to this\nclass. Consider using `dynamic` to specify the entire class of routes rather\nthan only specific subtypes. For example, to watch for all [PageRoute]\nvariants, the `RouteObserver<PageRoute<dynamic>>` type may be used.\n\n\nTo make a [StatefulWidget] aware of its current [Route] state, implement\n[RouteAware] in its [State] and subscribe it to a [RouteObserver]:\n\n```dart\n// Register the RouteObserver as a navigation observer.\nfinal RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();\nvoid main() {\n runApp(MaterialApp(\n home: Container(),\n navigatorObservers: [routeObserver],\n ));\n}\n\nclass RouteAwareWidget extends StatefulWidget {\n State<RouteAwareWidget> createState() => RouteAwareWidgetState();\n}\n\n// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.\nclass RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n routeObserver.subscribe(this, ModalRoute.of(context));\n }\n\n @override\n void dispose() {\n routeObserver.unsubscribe(this);\n super.dispose();\n }\n\n @override\n void didPush() {\n // Route was pushed onto navigator and is now topmost route.\n }\n\n @override\n void didPopNext() {\n // Covering route was popped off the navigator.\n }\n\n @override\n Widget build(BuildContext context) => Container();\n\n}\n```", "detail": "", "kind": 7, "label": "RouteObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Future].\n\nThe [future] must have been obtained earlier, e.g. during [State.initState],\n[State.didUpdateConfig], or [State.didChangeDependencies]. It must not be\ncreated during the [State.build] or [StatelessWidget.build] method call when\nconstructing the [FutureBuilder]. If the [future] is created at the same\ntime as the [FutureBuilder], then every time the [FutureBuilder]'s parent is\nrebuilt, the asynchronous task will be restarted.\n\nA general guideline is to assume that every `build` method could get called\nevery frame, and to treat omitted calls as an optimization.\n\n\n## Timing\n\nWidget rebuilding is scheduled by the completion of the future, using\n[State.setState], but is otherwise decoupled from the timing of the future.\nThe [builder] callback is called at the discretion of the Flutter pipeline, and\nwill thus receive a timing-dependent sub-sequence of the snapshots that\nrepresent the interaction with the future.\n\nA side-effect of this is that providing a new but already-completed future\nto a [FutureBuilder] will result in a single frame in the\n[ConnectionState.waiting] state. This is because there is no way to\nsynchronously determine that a [Future] has already completed.\n\n## Builder contract\n\nFor a future that completes successfully with data, assuming [initialData]\nis null, the [builder] will be called with either both or only the latter of\nthe following snapshots:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withData(ConnectionState.done, 'some data')`\n\nIf that same future instead completed with an error, the [builder] would be\ncalled with either both or only the latter of:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withError(ConnectionState.done, 'some error')`\n\nThe initial snapshot data can be controlled by specifying [initialData]. You\nwould use this facility to ensure that if the [builder] is invoked before\nthe future completes, the snapshot carries data of your choice rather than\nthe default null value.\n\nThe data and error fields of the snapshot change only as the connection\nstate field transitions from `waiting` to `done`, and they will be retained\nwhen changing the [FutureBuilder] configuration to another future. If the\nold future has already completed successfully with data as above, changing\nconfiguration to a new future results in snapshot pairs of the form:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.none, 'data of first future')`\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, 'data of second future')`\n\nIn general, the latter will be produced only when the new future is\nnon-null, and the former only when the old future is non-null.\n\nA [FutureBuilder] behaves identically to a [StreamBuilder] configured with\n`future?.asStream()`, except that snapshots with `ConnectionState.active`\nmay appear for the latter, depending on how the stream is implemented.\n\n\nThis sample shows a [FutureBuilder] configuring a text label to show the\nstate of an asynchronous calculation returning a string. Assume the\n`_calculation` field is set by pressing a button elsewhere in the UI.\n\n```dart\nFutureBuilder<String>(\n future: _calculation, // a previously-obtained Future<String> or null\n builder: (BuildContext context, AsyncSnapshot<String> snapshot) {\n switch (snapshot.connectionState) {\n case ConnectionState.none:\n return Text('Press button to start.');\n case ConnectionState.active:\n case ConnectionState.waiting:\n return Text('Awaiting result...');\n case ConnectionState.done:\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n return Text('Result: ${snapshot.data}');\n }\n return null; // unreachable\n },\n)\n```", "detail": "", "kind": 7, "label": "FutureBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design icon button.\n\nAn icon button is a picture printed on a [Material] widget that reacts to\ntouches by filling with color (ink).\n\nIcon buttons are commonly used in the [AppBar.actions] field, but they can\nbe used in many other places as well.\n\nIf the [onPressed] callback is null, then the button will be disabled and\nwill not react to touch.\n\nRequires one of its ancestors to be a [Material] widget.\n\nThe hit region of an icon button will, if possible, be at least 48.0 pixels\nin size, regardless of the actual [iconSize], to satisfy the [touch target\nsize](https://material.io/guidelines/layout/metrics-keylines.html#metrics-keylines-touch-target-size)\nrequirements in the Material Design specification. The [alignment] controls\nhow the icon itself is positioned within the hit region.\n\n\nThis sample shows an `IconButton` that uses the Material icon \"volume_up\" to\nincrease the volume.\n\n```dart\ndouble _volume = 0.0;\n```\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n body: Center(\n child: Column(\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n IconButton(\n icon: Icon(Icons.volume_up),\n tooltip: 'Increase volume by 10',\n onPressed: () {\n setState(() {\n _volume += 10;\n });\n },\n ),\n Text('Volume : $_volume')\n ],\n ),\n ),\n );\n}\n```\n\n### Adding a filled background\n\nIcon buttons don't support specifying a background color or other\nbackground decoration because typically the icon is just displayed\non top of the parent widget's background. Icon buttons that appear\nin [AppBar.actions] are an example of this.\n\nIt's easy enough to create an icon button with a filled background\nusing the [Ink] widget. The [Ink] widget renders a decoration on\nthe underlying [Material] along with the splash and highlight\n[InkResponse] contributed by descendant widgets.\n\n\nIn this sample the icon button's background color is defined with an [Ink]\nwidget whose child is an [IconButton]. The icon button's filled background\nis a light shade of blue, it's a filled circle, and it's as big as the\nbutton is.\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Container(\n child: Ink(\n decoration: ShapeDecoration(\n color: Colors.lightBlue,\n shape: CircleBorder(),\n ),\n child: IconButton(\n icon: Icon(Icons.android),\n color: Colors.white,\n onPressed: () {\n print(\"filled background\");\n },\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Icons], a library of predefined icons.\n * [BackButton], an icon button for a \"back\" affordance which adapts to the\n current platform's conventions.\n * [CloseButton], an icon button for closing pages.\n * [AppBar], to show a toolbar at the top of an application.\n * [RaisedButton] and [FlatButton], for buttons with text in them.\n * [InkResponse] and [InkWell], for the ink splash effect itself.", "detail": "", "kind": 7, "label": "IconButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimeOfDayFormat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines how the time picker invoked using [showTimePicker] formats and\nlays out the time controls.\n\nThe time picker provides layout configurations optimized for each of the\nenum values.", "detail": "", "kind": 13, "label": "TimeOfDayFormat" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of an [Align] that animates its [Align.alignment] property.\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "AlignTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherLayoutBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for builders used to generate custom layouts for\n[AnimatedSwitcher].\n\nThe builder should return a widget which contains the given children, laid\nout as desired. It must not return null. The builder should be able to\nhandle an empty list of `previousChildren`, or a null `currentChild`.\n\nThe `previousChildren` list is an unmodifiable list, sorted with the oldest\nat the beginning and the newest at the end. It does not include the\n`currentChild`.", "detail": "(Widget currentChild, List<Widget> previousChildren) → Widget", "kind": 7, "label": "AnimatedSwitcherLayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositionedDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [PositionedDirectional] which automatically transitions\nthe child's position over a given duration whenever the given position\nchanges.\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositionedDirectional] will trigger\na relayout as well. ([SlideTransition] is also text-direction-aware.)\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositioned], which specifies the widget's position visually (the\n same as this widget, but for animating [Positioned]).", "detail": "", "kind": 7, "label": "AnimatedPositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadioListTile", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] with a [Radio]. In other words, a radio button with a label.\n\nThe entire list tile is interactive: tapping anywhere in the tile selects\nthe radio button.\n\nThe [value], [groupValue], [onChanged], and [activeColor] properties of this\nwidget are identical to the similarly-named properties on the [Radio]\nwidget. The type parameter `T` serves the same purpose as that of the\n[Radio] class' type parameter.\n\nThe [title], [subtitle], [isThreeLine], and [dense] properties are like\nthose of the same name on [ListTile].\n\nThe [selected] property on this widget is similar to the [ListTile.selected]\nproperty, but the color used is that described by [activeColor], if any,\ndefaulting to the accent color of the current [Theme]. No effort is made to\ncoordinate the [selected] state and the [checked] state; to have the list\ntile appear selected when the radio button is the selected radio button, set\n[selected] to true when [value] matches [groupValue].\n\nThe radio button is shown on the left by default in left-to-right languages\n(i.e. the leading edge). This can be changed using [controlAffinity]. The\n[secondary] widget is placed on the opposite side. This maps to the\n[ListTile.leading] and [ListTile.trailing] properties of [ListTile].\n\nTo show the [RadioListTile] as disabled, pass null as the [onChanged]\ncallback.\n\n\nThis widget shows a pair of radio buttons that control the `_character`\nfield. The field is of the type `SingingCharacter`, an enum.\n\n```dart\n// At the top level:\nenum SingingCharacter { lafayette, jefferson }\n\n// In the State of a stateful widget:\nSingingCharacter _character = SingingCharacter.lafayette;\n\n// In the build function of that State:\nColumn(\n children: <Widget>[\n RadioListTile<SingingCharacter>(\n title: const Text('Lafayette'),\n value: SingingCharacter.lafayette,\n groupValue: _character,\n onChanged: (SingingCharacter value) { setState(() { _character = value; }); },\n ),\n RadioListTile<SingingCharacter>(\n title: const Text('Thomas Jefferson'),\n value: SingingCharacter.jefferson,\n groupValue: _character,\n onChanged: (SingingCharacter value) { setState(() { _character = value; }); },\n ),\n ],\n)\n```\n\nSee also:\n\n * [ListTileTheme], which can be used to affect the style of list tiles,\n including radio list tiles.\n * [CheckboxListTile], a similar widget for checkboxes.\n * [SwitchListTile], a similar widget for switches.\n * [ListTile] and [Radio], the widgets from which this widget is made.", "detail": "", "kind": 7, "label": "RadioListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCell", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls how a child of a [Table] is aligned.\n\nA [TableCell] widget must be a descendant of a [Table], and the path from\nthe [TableCell] widget to its enclosing [Table] must contain only\n[TableRow]s, [StatelessWidget]s, or [StatefulWidget]s (not\nother kinds of widgets, like [RenderObjectWidget]s).", "detail": "", "kind": 7, "label": "TableCell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteAware", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for objects that are aware of their current [Route].\n\nThis is used with [RouteObserver] to make a widget aware of changes to the\n[Navigator]'s session history.", "detail": "", "kind": 7, "label": "RouteAware" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [LeafRenderObjectWidget] as its configuration.", "detail": "", "kind": 7, "label": "LeafRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [Scaffold].\n\nCan display [SnackBar]s and [BottomSheet]s. Retrieve a [ScaffoldState] from\nthe current [BuildContext] using [Scaffold.of].", "detail": "", "kind": 7, "label": "ScaffoldState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorObserver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for observing the behavior of a [Navigator].", "detail": "", "kind": 7, "label": "NavigatorObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldPrelayoutGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The geometry of the [Scaffold] after all its contents have been laid out\nexcept the [FloatingActionButton].\n\nThe [Scaffold] passes this pre-layout geometry to its\n[FloatingActionButtonLocation], which produces an [Offset] that the\n[Scaffold] uses to position the [FloatingActionButton].\n\nFor a description of the [Scaffold]'s geometry after it has\nfinished laying out, see the [ScaffoldGeometry].", "detail": "", "kind": 7, "label": "ScaffoldPrelayoutGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBarTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a theme for [TabBar] widgets.\n\nA tab bar theme describes the color of the tab label and the size/shape of\nthe [TabBar.indicator].\n\nDescendant widgets obtain the current theme's [TabBarTheme] object using\n`TabBarTheme.of(context)`. Instances of [TabBarTheme] can be customized with\n[TabBarTheme.copyWith].\n\nSee also:\n\n * [TabBar], a widget that displays a horizontal row of tabs.\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "TabBarTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [State.setState] functions.", "detail": "(VoidCallback fn) → void", "kind": 7, "label": "StateSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that merges the semantics of its descendants.\n\nCauses all the semantics of the subtree rooted at this node to be\nmerged into one node in the semantics tree. For example, if you\nhave a widget with a Text node next to a checkbox widget, this\ncould be used to merge the label from the Text node with the\n\"checked\" semantic state of the checkbox into a single node that\nhad both the label and the checked state. Otherwise, the label\nwould be presented as a separate feature than the checkbox, and\nthe user would not be able to be sure that they were related.\n\nBe aware that if two nodes in the subtree have conflicting\nsemantics, the result may be nonsensical. For example, a subtree\nwith a checked checkbox and an unchecked checkbox will be\npresented as checked. All the labels will be merged into a single\nstring (with newlines separating each label from the other). If\nmultiple nodes in the merged subtree can handle semantic gestures,\nthe first one in tree order will be the one to receive the\ncallbacks.", "detail": "", "kind": 7, "label": "MergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomSheet", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design bottom sheet.\n\nThere are two kinds of bottom sheets in material design:\n\n * _Persistent_. A persistent bottom sheet shows information that\n supplements the primary content of the app. A persistent bottom sheet\n remains visible even when the user interacts with other parts of the app.\n Persistent bottom sheets can be created and displayed with the\n [ScaffoldState.showBottomSheet] function or by specifying the\n [Scaffold.bottomSheet] constructor parameter.\n\n * _Modal_. A modal bottom sheet is an alternative to a menu or a dialog and\n prevents the user from interacting with the rest of the app. Modal bottom\n sheets can be created and displayed with the [showModalBottomSheet]\n function.\n\nThe [BottomSheet] widget itself is rarely used directly. Instead, prefer to\ncreate a persistent bottom sheet with [ScaffoldState.showBottomSheet] or\n[Scaffold.bottomSheet], and a modal bottom sheet with [showModalBottomSheet].\n\nSee also:\n\n * [showBottomSheet] and [ScaffoldState.showBottomSheet], for showing\n non-modal \"persistent\" bottom sheets.\n * [showModalBottomSheet], which can be used to display a modal bottom\n sheet.\n * <https://material.io/design/components/sheets-bottom.html>", "detail": "", "kind": 7, "label": "BottomSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that automatically dispatches a [SizeChangedLayoutNotification]\nwhen the layout dimensions of its child change.\n\nThe notification is not sent for the initial layout (since the size doesn't\nchange in that case, it's just established).\n\nTo listen for the notification dispatched by this widget, use a\n[NotificationListener<SizeChangedLayoutNotification>].\n\nThe [Material] class listens for [LayoutChangedNotification]s, including\n[SizeChangedLayoutNotification]s, to repaint [InkResponse] and [InkWell] ink\neffects. When a widget is likely to change size, wrapping it in a\n[SizeChangedLayoutNotifier] will cause the ink effects to correctly repaint\nwhen the child changes size.\n\nSee also:\n\n * [Notification], the base class for notifications that bubble through the\n widget tree.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Notification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that can bubble up the widget tree.\n\nYou can determine the type of a notification using the `is` operator to\ncheck the [runtimeType] of the notification.\n\nTo listen for notifications in a subtree, use a [NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].", "detail": "", "kind": 7, "label": "Notification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for entries in a material design popup menu.\n\nThe popup menu widget uses this interface to interact with the menu items.\nTo show a popup menu, use the [showMenu] function. To create a button that\nshows a popup menu, consider using [PopupMenuButton].\n\nThe type `T` is the type of the value(s) the entry represents. All the\nentries in a given menu must represent values with consistent types.\n\nA [PopupMenuEntry] may represent multiple values, for example a row with\nseveral icons, or a single entry, for example a menu item with an icon (see\n[PopupMenuItem]), or no value at all (for example, [PopupMenuDivider]).\n\nSee also:\n\n * [PopupMenuItem], a popup menu entry for a single value.\n * [PopupMenuDivider], a popup menu entry that is just a horizontal line.\n * [CheckedPopupMenuItem], a popup menu item with a checkmark.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "PopupMenuEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBindingObserver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for classes that register with the Widgets layer binding.\n\nWhen used as a mixin, provides no-op method implementations.\n\nSee [WidgetsBinding.addObserver] and [WidgetsBinding.removeObserver].\n\nThis class can be extended directly, to get default behaviors for all of the\nhandlers, or can used with the `implements` keyword, in which case all the\nhandlers must be implemented (and the analyzer will list those that have\nbeen omitted).\n\n\nThis [StatefulWidget] implements the parts of the [State] and\n[WidgetsBindingObserver] protocols necessary to react to application\nlifecycle messages. See [didChangeAppLifecycleState].\n\n```dart\nclass AppLifecycleReactor extends StatefulWidget {\n const AppLifecycleReactor({ Key key }) : super(key: key);\n\n @override\n _AppLifecycleReactorState createState() => _AppLifecycleReactorState();\n}\n\nclass _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {\n @override\n void initState() {\n super.initState();\n WidgetsBinding.instance.addObserver(this);\n }\n\n @override\n void dispose() {\n WidgetsBinding.instance.removeObserver(this);\n super.dispose();\n }\n\n AppLifecycleState _notification;\n\n @override\n void didChangeAppLifecycleState(AppLifecycleState state) {\n setState(() { _notification = state; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Text('Last notification: $_notification');\n }\n}\n```\n\nTo respond to other notifications, replace the [didChangeAppLifecycleState]\nmethod above with other methods from this class.", "detail": "", "kind": 7, "label": "WidgetsBindingObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material expansion panel. It has a header and a body and can be either\nexpanded or collapsed. The body of the panel is only visible when it is\nexpanded.\n\nExpansion panels are only intended to be used as children for\n[ExpansionPanelList].\n\nSee [ExpansionPanelList] for a sample implementation.\n\nSee also:\n\n * [ExpansionPanelList]\n * <https://material.io/design/components/lists.html#types>", "detail": "", "kind": 7, "label": "ExpansionPanel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTileTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An inherited widget that defines color and style parameters for [ListTile]s\nin this widget's subtree.\n\nValues specified here are used for [ListTile] properties that are not given\nan explicit non-null value.\n\nThe [Drawer] widget specifies a tile theme for its children which sets\n[style] to [ListTileStyle.drawer].", "detail": "", "kind": 7, "label": "ListTileTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the localized resource values used by the Material widgets.\n\nSee also:\n\n * [DefaultMaterialLocalizations], the default, English-only, implementation\n of this interface.\n * [GlobalMaterialLocalizations], which provides material localizations for\n many languages.", "detail": "", "kind": 7, "label": "MaterialLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuCanceled", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback invoked when a [PopupMenuButton] is dismissed\nwithout selecting an item.\n\nUsed by [PopupMenuButton.onCanceled].", "detail": "() → void", "kind": 7, "label": "PopupMenuCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls how [Scrollable] widgets behave in a subtree.\n\nThe scroll configuration determines the [ScrollPhysics] and viewport\ndecorations used by descendants of [child].", "detail": "", "kind": 7, "label": "ScrollConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interactive button within either material's [BottomNavigationBar]\nor the iOS themed [CupertinoTabBar] with an icon and title.\n\nThis class is rarely used in isolation. It is typically embedded in one of\nthe bottom navigation widgets above.\n\nSee also:\n\n * [BottomNavigationBar]\n * <https://material.io/design/components/bottom-navigation.html>\n * [CupertinoTabBar]\n * <https://developer.apple.com/ios/human-interface-guidelines/bars/tab-bars>", "detail": "", "kind": 7, "label": "BottomNavigationBarItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that enables inspecting the child widget's structure.\n\nSelect a location on your device or emulator and view what widgets and\nrender object that best matches the location. An outline of the selected\nwidget and terse summary information is shown on device with detailed\ninformation is shown in the observatory or in IntelliJ when using the\nFlutter Plugin.\n\nThe inspector has a select mode and a view mode.\n\nIn the select mode, tapping the device selects the widget that best matches\nthe location of the touch and switches to view mode. Dragging a finger on\nthe device selects the widget under the drag location but does not switch\nmodes. Touching the very edge of the bounding box of a widget triggers\nselecting the widget even if another widget that also overlaps that\nlocation would otherwise have priority.\n\nIn the view mode, the previously selected widget is outlined, however,\ntouching the device has the same effect it would have if the inspector\nwasn't present. This allows interacting with the application and viewing how\nthe selected widget changes position. Clicking on the select icon in the\nbottom left corner of the application switches back to select mode.", "detail": "", "kind": 7, "label": "WidgetInspector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using a rounded rectangle.\n\nBy default, [ClipRRect] uses its own bounds as the base rectangle for the\nclip, but the size and location of the clip can be customized using a custom\n[clipper].\n\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Hero", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that marks its child as being a candidate for\n[hero animations](https://flutter.dev/docs/development/ui/animations/hero-animations).\n\nWhen a [PageRoute] is pushed or popped with the [Navigator], the entire\nscreen's content is replaced. An old route disappears and a new route\nappears. If there's a common visual feature on both routes then it can\nbe helpful for orienting the user for the feature to physically move from\none page to the other during the routes' transition. Such an animation\nis called a *hero animation*. The hero widgets \"fly\" in the Navigator's\noverlay during the transition and while they're in-flight they're, by\ndefault, not shown in their original locations in the old and new routes.\n\nTo label a widget as such a feature, wrap it in a [Hero] widget. When\nnavigation happens, the [Hero] widgets on each route are identified\nby the [HeroController]. For each pair of [Hero] widgets that have the\nsame tag, a hero animation is triggered.\n\nIf a [Hero] is already in flight when navigation occurs, its\nflight animation will be redirected to its new destination. The\nwidget shown in-flight during the transition is, by default, the\ndestination route's [Hero]'s child.\n\nFor a Hero animation to trigger, the Hero has to exist on the very first\nframe of the new page's animation.\n\nRoutes must not contain more than one [Hero] for each [tag].\n\n\n## Discussion\n\nHeroes and the [Navigator]'s [Overlay] [Stack] must be axis-aligned for\nall this to work. The top left and bottom right coordinates of each animated\nHero will be converted to global coordinates and then from there converted\nto that [Stack]'s coordinate space, and the entire Hero subtree will, for\nthe duration of the animation, be lifted out of its original place, and\npositioned on that stack. If the [Hero] isn't axis aligned, this is going to\nfail in a rather ugly fashion. Don't rotate your heroes!\n\nTo make the animations look good, it's critical that the widget tree for the\nhero in both locations be essentially identical. The widget of the *target*\nis, by default, used to do the transition: when going from route A to route\nB, route B's hero's widget is placed over route A's hero's widget. If a\n[flightShuttleBuilder] is supplied, its output widget is shown during the\nflight transition instead.\n\nBy default, both route A and route B's heroes are hidden while the\ntransitioning widget is animating in-flight above the 2 routes.\n[placeholderBuilder] can be used to show a custom widget in their place\ninstead once the transition has taken flight.\n\nDuring the transition, the transition widget is animated to route B's hero's\nposition, and then the widget is inserted into route B. When going back from\nB to A, route A's hero's widget is, by default, placed over where route B's\nhero's widget was, and then the animation goes the other way.\n\n### Nested Navigators\n\nIf either or both routes contain nested [Navigator]s, only [Hero]s\ncontained in the top-most routes (as defined by [Route.isCurrent]) *of those\nnested [Navigator]s* are considered for animation. Just like in the\nnon-nested case the top-most routes containing these [Hero]s in the nested\n[Navigator]s have to be [PageRoute]s.\n\n## Parts of a Hero Transition\n\n![Diagrams with parts of the Hero transition.](https://flutter.github.io/assets-for-api-docs/assets/interaction/heroes.png)", "detail": "", "kind": 7, "label": "Hero" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Drawer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design panel that slides in horizontally from the edge of a\n[Scaffold] to show navigation links in an application.\n\nDrawers are typically used with the [Scaffold.drawer] property. The child of\nthe drawer is usually a [ListView] whose first child is a [DrawerHeader]\nthat displays status information about the current user. The remaining\ndrawer children are often constructed with [ListTile]s, often concluding\nwith an [AboutListTile].\n\nAn open drawer can be closed by calling [Navigator.pop]. For example\na drawer item might close the drawer when tapped:\n\n```dart\nListTile(\n leading: Icon(Icons.change_history),\n title: Text('Change history'),\n onTap: () {\n // change app state...\n Navigator.pop(context); // close the drawer\n },\n);\n```\n\nThe [AppBar] automatically displays an appropriate [IconButton] to show the\n[Drawer] when a [Drawer] is available in the [Scaffold]. The [Scaffold]\nautomatically handles the edge-swipe gesture to show the drawer.\n\nSee also:\n\n * [Scaffold.drawer], where one specifies a [Drawer] so that it can be\n shown.\n * [Scaffold.of], to obtain the current [ScaffoldState], which manages the\n display and animation of the drawer.\n * [ScaffoldState.openDrawer], which displays its [Drawer], if any.\n * <https://material.io/design/components/navigation-drawer.html>", "detail": "", "kind": 7, "label": "Drawer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [Scrollable] to build the viewport through which the\nscrollable content is displayed.", "detail": "(BuildContext context, ViewportOffset position) → Widget", "kind": 7, "label": "ViewportBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses an [InheritedWidget] as its configuration.", "detail": "", "kind": 7, "label": "InheritedElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SimpleDialog", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A simple material design dialog.\n\nA simple dialog offers the user a choice between several options. A simple\ndialog has an optional title that is displayed above the choices.\n\nChoices are normally represented using [SimpleDialogOption] widgets. If\nother widgets are used, see [contentPadding] for notes regarding the\nconventions for obtaining the spacing expected by Material Design.\n\nFor dialogs that inform the user about a situation, consider using an\n[AlertDialog].\n\nTypically passed as the child widget to [showDialog], which displays the\ndialog.\n\n\nIn this example, the user is asked to select between two options. These\noptions are represented as an enum. The [showDialog] method here returns\na [Future] that completes to a value of that enum. If the user cancels\nthe dialog (e.g. by hitting the back button on Android, or tapping on the\nmask behind the dialog) then the future completes with the null value.\n\nThe return value in this example is used as the index for a switch statement.\nOne advantage of using an enum as the return value and then using that to\ndrive a switch statement is that the analyzer will flag any switch statement\nthat doesn't mention every value in the enum.\n\n```dart\nFuture<void> _askedToLead() async {\n switch (await showDialog<Department>(\n context: context,\n builder: (BuildContext context) {\n return SimpleDialog(\n title: const Text('Select assignment'),\n children: <Widget>[\n SimpleDialogOption(\n onPressed: () { Navigator.pop(context, Department.treasury); },\n child: const Text('Treasury department'),\n ),\n SimpleDialogOption(\n onPressed: () { Navigator.pop(context, Department.state); },\n child: const Text('State department'),\n ),\n ],\n );\n }\n )) {\n case Department.treasury:\n // Let's go.\n // ...\n break;\n case Department.state:\n // ...\n break;\n }\n}\n```\n\nSee also:\n\n * [SimpleDialogOption], which are options used in this type of dialog.\n * [AlertDialog], for dialogs that have a row of buttons below the body.\n * [Dialog], on which [SimpleDialog] and [AlertDialog] are based.\n * [showDialog], which actually displays the dialog and returns its result.\n * <https://material.io/design/components/dialogs.html#simple-dialog>", "detail": "", "kind": 7, "label": "SimpleDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabPageSelectorIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a single circle with the specified border and background colors.\n\nUsed by [TabPageSelector] to indicate the selected page.", "detail": "", "kind": 7, "label": "TabPageSelectorIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformFollower", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that follows a [CompositedTransformTarget].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\napplies a transformation that causes it to provide its child with a\ncoordinate space that matches that of the linked [CompositedTransformTarget]\nwidget, offset by [offset].\n\nThe [LayerLink] object used as the [link] must be the same object as that\nprovided to the matching [CompositedTransformTarget].\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nthis [CompositedTransformFollower].\n\nHit testing on descendants of this widget will only work if the target\nposition is within the box that this widget's parent considers to be\nhittable. If the parent covers the screen, this is trivially achievable, so\nthis widget is usually used as the root of an [OverlayEntry] in an app-wide\n[Overlay] (e.g. as created by the [MaterialApp] widget's [Navigator]).\n\nSee also:\n\n * [CompositedTransformTarget], the widget that this widget can target.\n * [FollowerLayer], the layer that implements this widget's logic.\n * [Transform], which applies an arbitrary transform to a child.", "detail": "", "kind": 7, "label": "CompositedTransformFollower" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableText", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A basic text input field.\n\nThis widget interacts with the [TextInput] service to let the user edit the\ntext it contains. It also provides scrolling, selection, and cursor\nmovement. This widget does not provide any focus management (e.g.,\ntap-to-focus).\n\n## Input Actions\n\nA [TextInputAction] can be provided to customize the appearance of the\naction button on the soft keyboard for Android and iOS. The default action\nis [TextInputAction.done].\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\nEditableText receives focus. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\n## Lifecycle\n\nUpon completion of editing, like pressing the \"done\" button on the keyboard,\ntwo actions take place:\n\n 1st: Editing is finalized. The default behavior of this step includes\n an invocation of [onChanged]. That default behavior can be overridden.\n See [onEditingComplete] for details.\n\n 2nd: [onSubmitted] is invoked with the user's input value.\n\n[onSubmitted] can be used to manually move focus to another input widget\nwhen a user finishes with the currently focused input widget.\n\nRather than using this widget directly, consider using [TextField], which\nis a full-featured, material-design text input field with placeholder text,\nlabels, and [Form] integration.\n\n## Gesture Events Handling\n\nThis widget provides rudimentary, platform-agnostic gesture handling for\nuser actions such as tapping, long-pressing and scrolling when\n[rendererIgnoresPointer] is false (false by default). To tightly conform\nto the platform behavior with respect to input gestures in text fields, use\n[TextField] or [CupertinoTextField]. For custom selection behavior, call\nmethods such as [RenderEditable.selectPosition],\n[RenderEditable.selectWord], etc. programmatically.\n\nSee also:\n\n * [TextField], which is a full-featured, material-design text input field\n with placeholder text, labels, and [Form] integration.", "detail": "", "kind": 7, "label": "EditableText" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for an editable text field.\n\nWhenever the user modifies a text field with an associated\n[TextEditingController], the text field updates [value] and the controller\nnotifies its listeners. Listeners can then read the [text] and [selection]\nproperties to learn what the user has typed or how the selection has been\nupdated.\n\nSimilarly, if you modify the [text] or [selection] properties, the text\nfield will be notified and will update itself appropriately.\n\nA [TextEditingController] can also be used to provide an initial value for a\ntext field. If you build a text field with a controller that already has\n[text], the text field will use that text as its initial value.\n\nThe [text] or [selection] properties can be set from within a listener\nadded to this controller. If both properties need to be changed then the\ncontroller's [value] should be set instead.\n\nThis example creates a [TextField] with a [TextEditingController] whose\nchange listener forces the entered text to be lower case and keeps the\ncursor at the end of the input.\n\n```dart\nfinal _controller = TextEditingController();\n\nvoid initState() {\n _controller.addListener(() {\n final text = _controller.text.toLowerCase();\n _controller.value = _controller.value.copyWith(\n text: text,\n selection: TextSelection(baseOffset: text.length, extentOffset: text.length),\n composing: TextRange.empty,\n );\n });\n super.initState();\n}\n\nvoid dispose() {\n _controller.dispose();\n super.dispose();\n}\n\nWidget build(BuildContext context) {\n return Scaffold(\n body: Container(\n alignment: Alignment.center,\n padding: const EdgeInsets.all(6),\n child: TextFormField(\n controller: _controller,\n decoration: InputDecoration(border: OutlineInputBorder()),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [TextField], which is a Material Design text field that can be controlled\n with a [TextEditingController].\n * [EditableText], which is a raw region of editable text that can be\n controlled with a [TextEditingController].", "detail": "", "kind": 7, "label": "TextEditingController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnderlineTabIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [TabBar.indicator] to draw a horizontal line below the\nselected tab.\n\nThe selected tab underline is inset from the tab's boundary by [insets].\nThe [borderSide] defines the line's color and weight.\n\nThe [TabBar.indicatorSize] property can be used to define the indicator's\nbounds in terms of its (centered) widget with [TabIndicatorSize.label],\nor the entire tab with [TabIndicatorSize.tab].", "detail": "", "kind": 7, "label": "UnderlineTabIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspectorService", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Service used by GUI tools to interact with the [WidgetInspector].\n\nCalls to this object are typically made from GUI tools such as the [Flutter\nIntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nusing the [Dart VM Service protocol](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md).\nThis class uses its own object id and manages object lifecycles itself\ninstead of depending on the [object ids](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#getobject)\nspecified by the VM Service Protocol because the VM Service Protocol ids\nexpire unpredictably. Object references are tracked in groups so that tools\nthat clients can use dereference all objects in a group with a single\noperation making it easier to avoid memory leaks.\n\nAll methods in this class are appropriate to invoke from debugging tools\nusing the Observatory service protocol to evaluate Dart expressions of the\nform `WidgetInspectorService.instance.methodName(arg1, arg2, ...)`. If you\nmake changes to any instance method of this class you need to verify that\nthe [Flutter IntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nwidget inspector support still works with the changes.\n\nAll methods returning String values return JSON.", "detail": "", "kind": 7, "label": "WidgetInspectorService" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned without\ncommitting to a specific [TextDirection].\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nA [PositionedDirectional] widget must be a descendant of a [Stack], and the\npath from the [PositionedDirectional] widget to its enclosing [Stack] must\ncontain only [StatelessWidget]s or [StatefulWidget]s (not other kinds of\nwidgets, like [RenderObjectWidget]s).\n\nIf a widget is wrapped in a [PositionedDirectional], then it is a\n_positioned_ widget in its [Stack]. If the [top] property is non-null, the\ntop edge of this child/ will be positioned [top] layout units from the top\nof the stack widget. The [start], [bottom], and [end] properties work\nanalogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [start] and [end] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nSee also:\n\n * [Positioned], which specifies the widget's position visually.\n * [Positioned.directional], which also specifies the widget's horizontal\n position using [start] and [end] but has an explicit [TextDirection].", "detail": "", "kind": 7, "label": "PositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsDebugger", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that visualizes the semantics for the child.\n\nThis widget is useful for understand how an app presents itself to\naccessibility technology.", "detail": "", "kind": 7, "label": "SemanticsDebugger" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [SingleChildRenderObjectWidget] as its configuration.\n\nThe child is optional.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [RenderObjectWithChildMixin] mixin. Such widgets are\nexpected to inherit from [SingleChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "SingleChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQueryData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Information about a piece of media (e.g., a window).\n\nFor example, the [MediaQueryData.size] property contains the width and\nheight of the current window.\n\nTo obtain the current [MediaQueryData] for a given [BuildContext], use the\n[MediaQuery.of] function. For example, to obtain the size of the current\nwindow, use `MediaQuery.of(context).size`.\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nMediaQueryData includes two [EdgeInsets] values:\n[padding] and [viewInsets]. These\nvalues reflect the configuration of the device and are used by\nmany top level widgets, like [SafeArea] and the Cupertino and\nMaterial scaffold widgets. The padding value defines areas that\nmight not be completely visible, like the display \"notch\" on the\niPhone X. The viewInsets value defines areas that aren't visible at\nall, typically because they're obscured by the device's keyboard.\n\nThe viewInsets and padding values are independent, they're both\nmeasured from the edges of the MediaQuery widget's bounds. The\nbounds of the top level MediaQuery created by [WidgetsApp] are the\nsame as the window that contains the app.\n\nWidgets whose layouts consume space defined by [viewInsets] or\n[padding] should enclose their children in secondary MediaQuery\nwidgets that reduce those properties by the same amount.\nThe [removePadding] and [removeInsets] methods are useful for this.", "detail": "", "kind": 7, "label": "MediaQueryData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalBarrier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nSee also:\n\n * [ModalRoute], which indirectly uses this widget.\n * [AnimatedModalBarrier], which is similar but takes an animated [color]\n instead of a single color value.", "detail": "", "kind": 7, "label": "ModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputChip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design input chip.\n\nInput chips represent a complex piece of information, such as an entity\n(person, place, or thing) or conversational text, in a compact form.\n\nInput chips can be made selectable by setting [onSelected], deletable by\nsetting [onDeleted], and pressable like a button with [onPressed]. They have\na [label], and they can have a leading icon (see [avatar]) and a trailing\nicon ([deleteIcon]). Colors and padding can be customized.\n\nRequires one of its ancestors to be a [Material] widget.\n\nInput chips work together with other UI elements. They can appear:\n\n * In a [Wrap] widget.\n * In a horizontally scrollable list, like a [ListView] whose\n scrollDirection is [Axis.horizontal].\n\n\n```dart\nInputChip(\n avatar: CircleAvatar(\n backgroundColor: Colors.grey.shade800,\n child: Text('AB'),\n ),\n label: Text('Aaron Burr'),\n onPressed: () {\n print('I am the one thing in life.');\n }\n)\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "InputChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DialogTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a theme for [Dialog] widgets.\n\nDescendant widgets obtain the current [DialogTheme] object using\n`DialogTheme.of(context)`. Instances of [DialogTheme] can be customized with\n[DialogTheme.copyWith].\n\nWhen Shape is `null`, the dialog defaults to a [RoundedRectangleBorder] with\na border radius of 2.0 on all corners.\n\n[titleTextStyle] and [contentTextStyle] are used in [AlertDialogs].\nIf null, they default to [ThemeData.textTheme.title] and [ThemeData.textTheme.subhead],\nrespectively.\n\nSee also:\n\n * [Dialog], a material dialog that can be customized using this [DialogTheme].\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "DialogTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyleTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of a [DefaultTextStyle] that animates the different properties\nof its [TextStyle].\n\nSee also:\n\n * [DefaultTextStyle], which also defines a [TextStyle] for its descendants\n but is not animated.", "detail": "", "kind": 7, "label": "DefaultTextStyleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderNestedScrollViewViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [RenderViewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "RenderNestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have no children.", "detail": "", "kind": 7, "label": "LeafRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dialog", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design dialog.\n\nThis dialog widget does not have any opinion about the contents of the\ndialog. Rather than using this widget directly, consider using [AlertDialog]\nor [SimpleDialog], which implement specific kinds of material design\ndialogs.\n\nSee also:\n\n * [AlertDialog], for dialogs that have a message and some buttons.\n * [SimpleDialog], for dialogs that offer a variety of options.\n * [showDialog], which actually displays the dialog and returns its result.\n * <https://material.io/design/components/dialogs.html>", "detail": "", "kind": 7, "label": "Dialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQuery", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Establishes a subtree in which media queries resolve to the given data.\n\nFor example, to learn the size of the current media (e.g., the window\ncontaining your app), you can read the [MediaQueryData.size] property from\nthe [MediaQueryData] returned by [MediaQuery.of]:\n`MediaQuery.of(context).size`.\n\nQuerying the current media using [MediaQuery.of] will cause your widget to\nrebuild automatically whenever the [MediaQueryData] changes (e.g., if the\nuser rotates their device).\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nSee also:\n\n * [WidgetsApp] and [MaterialApp], which introduce a [MediaQuery] and keep\n it up to date with the current screen metrics as they change.\n * [MediaQueryData], the data structure that represents the metrics.", "detail": "", "kind": 7, "label": "MediaQuery" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design button for selecting from a list of items.\n\nA dropdown button lets the user select from a number of items. The button\nshows the currently selected item as well as an arrow that opens a menu for\nselecting another item.\n\nThe type `T` is the type of the [value] that each dropdown item represents.\nAll the entries in a given menu must represent values with consistent types.\nTypically, an enum is used. Each [DropdownMenuItem] in [items] must be\nspecialized with that same type argument.\n\nThe [onChanged] callback should update a state variable that defines the\ndropdown's value. It should also call [State.setState] to rebuild the\ndropdown with the new value.\n\n\nThis sample shows a `DropdownButton` whose value is one of\n\"One\", \"Two\", \"Free\", or \"Four\".\n\n```dart\nString dropdownValue = 'One';\n```\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n body: Center(\n child: DropdownButton<String>(\n value: dropdownValue,\n onChanged: (String newValue) {\n setState(() {\n dropdownValue = newValue;\n });\n },\n items: <String>['One', 'Two', 'Free', 'Four']\n .map<DropdownMenuItem<String>>((String value) {\n return DropdownMenuItem<String>(\n value: value,\n child: Text(value),\n );\n })\n .toList(),\n ),\n ),\n );\n}\n```\n\nIf the [onChanged] callback is null or the list of [items] is null\nthen the dropdown button will be disabled, i.e. its arrow will be\ndisplayed in grey and it will not respond to input. A disabled button\nwill display the [disabledHint] widget if it is non-null.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [DropdownMenuItem], the class used to represent the [items].\n * [DropdownButtonHideUnderline], which prevents its descendant dropdown buttons\n from displaying their underlines.\n * [RaisedButton], [FlatButton], ordinary buttons that trigger a single action.\n * <https://material.io/design/components/menus.html#dropdown-menu>", "detail": "", "kind": 7, "label": "DropdownButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionGestureDetector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A gesture detector to respond to non-exclusive event chains for a text field.\n\nAn ordinary [GestureDetector] configured to handle events like tap and\ndouble tap will only recognize one or the other. This widget detects both:\nfirst the tap and then, if another tap down occurs within a time limit, the\ndouble tap.\n\nSee also:\n\n * [TextField], a Material text field which uses this gesture detector.\n * [CupertinoTextField], a Cupertino text field which uses this gesture\n detector.", "detail": "", "kind": 7, "label": "TextSelectionGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexibleSpaceBarSettings", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides sizing and opacity information to a [FlexibleSpaceBar].\n\nSee also:\n\n * [FlexibleSpaceBar] which creates a flexible space bar.", "detail": "", "kind": 7, "label": "FlexibleSpaceBarSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LabeledGlobalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A global key with a debugging label.\n\nThe debug label is useful for documentation and for debugging. The label\ndoes not affect the key's identity.", "detail": "", "kind": 7, "label": "LabeledGlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPositionWithSingleContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scroll position that manages scroll activities for a single\n[ScrollContext].\n\nThis class is a concrete subclass of [ScrollPosition] logic that handles a\nsingle [ScrollContext], such as a [Scrollable]. An instance of this class\nmanages [ScrollActivity] instances, which change what content is visible in\nthe [Scrollable]'s [Viewport].\n\nSee also:\n\n * [ScrollPosition], which defines the underlying model for a position\n within a [Scrollable] but is agnostic as to how that position is\n changed.\n * [ScrollView] and its subclasses such as [ListView], which use\n [ScrollPositionWithSingleContext] to manage their scroll position.\n * [ScrollController], which can manipulate one or more [ScrollPosition]s,\n and which uses [ScrollPositionWithSingleContext] as its default class for\n scroll positions.", "detail": "", "kind": 7, "label": "ScrollPositionWithSingleContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlowingOverscrollIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual indication that a scroll view has overscrolled.\n\nA [GlowingOverscrollIndicator] listens for [ScrollNotification]s in order\nto control the overscroll indication. These notifications are typically\ngenerated by a [ScrollView], such as a [ListView] or a [GridView].\n\n[GlowingOverscrollIndicator] generates [OverscrollIndicatorNotification]\nbefore showing an overscroll indication. To prevent the indicator from\nshowing the indication, call [OverscrollIndicatorNotification.disallowGlow]\non the notification.\n\nCreated automatically by [ScrollBehavior.buildViewportChrome] on platforms\n(e.g., Android) that commonly use this type of overscroll indication.\n\nIn a [MaterialApp], the edge glow color is the [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "GlowingOverscrollIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverflowBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nSee also:\n\n * [RenderConstrainedOverflowBox] for details about how [OverflowBox] is\n rendered.\n * [SizedOverflowBox], a widget that is a specific size but passes its\n original constraints through to its child, which may then overflow.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], a box with a specified size.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "OverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragSelectionUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that's dragging to select text has moved again.\n\nThe first argument [startDetails] contains the details of the event that\ninitiated the dragging.\n\nThe second argument [updateDetails] contains the details of the current\npointer movement. It's the same as the one passed to [DragGestureRecognizer.onUpdate].\n\nThis signature is different from [GestureDragUpdateCallback] to make it\neasier for various text fields to use [TextSelectionGestureDetector] without\nhaving to store the start position.", "detail": "(DragStartDetails startDetails, DragUpdateDetails updateDetails) → void", "kind": 7, "label": "DragSelectionUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverWithKeepAliveWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for sliver that have [KeepAlive] children.", "detail": "", "kind": 7, "label": "SliverWithKeepAliveWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutChangedNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates that the layout of one of the descendants of the object receiving\nthis notification has changed in some way, and that therefore any\nassumptions about that layout are no longer valid.\n\nUseful if, for instance, you're trying to align multiple descendants.\n\nTo listen for notifications in a subtree, use a\n[NotificationListener<LayoutChangedNotification>].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].\n\nIn the widgets library, only the [SizeChangedLayoutNotifier] class and\n[Scrollable] classes dispatch this notification (specifically, they dispatch\n[SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).\nTransitions, in particular, do not. Changing one's layout in one's build\nfunction does not cause this notification to be dispatched automatically. If\nan ancestor expects to be notified for any layout change, make sure you\neither only use widgets that never change layout, or that notify their\nancestors when appropriate, or alternatively, dispatch the notifications\nyourself when appropriate.\n\nAlso, since this notification is sent when the layout is changed, it is only\nuseful for paint effects that depend on the layout. If you were to use this\nnotification to change the build, for instance, you would always be one\nframe behind, which would look really ugly and laggy.", "detail": "", "kind": 7, "label": "LayoutChangedNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatusTransitionWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that rebuilds when the given animation changes status.", "detail": "", "kind": 7, "label": "StatusTransitionWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's size.\n\nSimilar to the [Builder] widget except that the framework calls the [builder]\nfunction at layout time and provides the parent widget's constraints. This\nis useful when the parent constrains the child's size and doesn't depend on\nthe child's intrinsic size. The [LayoutBuilder]'s final size will match its\nchild's size.\n\n\nIf the child should be smaller than the parent, consider wrapping the child\nin an [Align] widget. If the child might want to be bigger, consider\nwrapping it in a [SingleChildScrollView].\n\nSee also:\n\n * [Builder], which calls a `builder` function at build time.\n * [StatefulBuilder], which passes its `builder` function a `setState` callback.\n * [CustomSingleChildLayout], which positions its child during layout.", "detail": "", "kind": 7, "label": "LayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScrollView] that creates custom scroll effects using slivers.\n\nA [CustomScrollView] lets you supply [slivers] directly to create various\nscrolling effects, such as lists, grids, and expanding headers. For example,\nto create a scroll view that contains an expanding app bar followed by a\nlist and a grid, use a list of three slivers: [SliverAppBar], [SliverList],\nand [SliverGrid].\n\n[Widget]s in these [slivers] must produce [RenderSliver] objects.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n\nThis sample code shows a scroll view that contains a flexible pinned app\nbar, a grid, and an infinite list.\n\n```dart\nCustomScrollView(\n slivers: <Widget>[\n const SliverAppBar(\n pinned: true,\n expandedHeight: 250.0,\n flexibleSpace: FlexibleSpaceBar(\n title: Text('Demo'),\n ),\n ),\n SliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n ),\n SliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n ),\n ],\n)\n```\n\n## Accessibility\n\nA [CustomScrollView] can allow Talkback/VoiceOver to make announcements\nto the user when the scroll state changes. For example, on Android an\nannouncement might be read as \"showing items 1 to 10 of 23\". To produce\nthis announcement, the scroll view needs three pieces of information:\n\n * The first visible child index.\n * The total number of children.\n * The total number of visible children.\n\nThe last value can be computed exactly by the framework, however the first\ntwo must be provided. Most of the higher-level scrollable widgets provide\nthis information automatically. For example, [ListView] provides each child\nwidget with a semantic index automatically and sets the semantic child\ncount to the length of the list.\n\nTo determine visible indexes, the scroll view needs a way to associate the\ngenerated semantics of each scrollable item with a semantic index. This can\nbe done by wrapping the child widgets in an [IndexedSemantics].\n\nThis semantic index is not necessarily the same as the index of the widget in\nthe scrollable, because some widgets may not contribute semantic\ninformation. Consider a [new ListView.separated()]: every other widget is a\ndivider with no semantic information. In this case, only odd numbered\nwidgets have a semantic index (equal to the index ~/ 2). Furthermore, the\ntotal number of children in this example would be half the number of\nwidgets. (The [new ListView.separated()] constructor handles this\nautomatically; this is only used here as an example.)\n\nThe total number of visible children can be provided by the constructor\nparameter `semanticChildCount`. This should always be the same as the\nnumber of widgets wrapped in [IndexedSemantics].\n\nSee also:\n\n * [SliverList], which is a sliver that displays linear list of children.\n * [SliverFixedExtentList], which is a more efficient sliver that displays\n linear list of children that have the same extent along the scroll axis.\n * [SliverGrid], which is a sliver that displays a 2D array of children.\n * [SliverPadding], which is a sliver that adds blank space around another\n sliver.\n * [SliverAppBar], which is a sliver that displays a header that can expand\n and float as the scroll view scrolls.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].\n * [IndexedSemantics], which allows annotating child lists with an index\n for scroll announcements.", "detail": "", "kind": 7, "label": "CustomScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Typography", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The color and geometry [TextThemes] for Material apps.\n\nThe text themes provided by the overall [Theme], like\n[ThemeData.textTheme], are based on the current locale's\n[MaterialLocalizations.scriptCategory] and are created\nby merging a color text theme, [black] or [white]\nand a geometry text theme, one of [englishLike], [dense],\nor [tall], depending on the locale.\n\nTo lookup a localized text theme use\n`Theme.of(context).textTheme` or\n`Theme.of(context).primaryTextTheme` or\n`Theme.of(context).accentTextTheme`.\n\nThe color text themes are [blackMountainView],\n[whiteMountainView], and [blackCupertino] and [whiteCupertino]. The\nMountain View theme [TextStyles] are based on the Roboto fonts and the\nCupertino themes are based on the San Francisco fonts.\n\nTwo sets of geometry themes are provided: 2014 and 2018. The 2014 themes\ncorrespond to the original version of the Material Design spec and are\nthe defaults. The 2018 themes correspond the second iteration of the\nspecification and feature different font sizes, font weights, and\nletter spacing values.\n\nBy default, [ThemeData.typography] is\n`Typography(platform: platform)` which uses [englishLike2014],\n[dense2014] and [tall2014]. To use the 2018 text theme\ngeometries, specify a typography value:\n\n```dart\nTypography(\n platorm: platform,\n englishLike: Typography.englishLike2018,\n dense: Typography.dense2018,\n tall: Typography.tall2018,\n)\n```\n\nSee also:\n\n * [ThemeData.typography], which can be used to configure the\n text themes used to create [ThemeData.textTheme],\n [ThemeData.primaryTextTheme], [ThemeData.accentTextTheme].\n * <https://material.io/design/typography/>", "detail": "", "kind": 7, "label": "Typography" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexibleSpaceBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The part of a material design [AppBar] that expands and collapses.\n\nMost commonly used in in the [SliverAppBar.flexibleSpace] field, a flexible\nspace bar expands and contracts as the app scrolls so that the [AppBar]\nreaches from the top of the app to the top of the scrolling contents of the\napp.\n\nThe widget that sizes the [AppBar] must wrap it in the widget returned by\n[FlexibleSpaceBar.createSettings], to convey sizing information down to the\n[FlexibleSpaceBar].\n\nSee also:\n\n * [SliverAppBar], which implements the expanding and contracting.\n * [AppBar], which is used by [SliverAppBar].\n * <https://material.io/design/components/app-bars-top.html#behavior>", "detail": "", "kind": 7, "label": "FlexibleSpaceBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputDecorator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the appearance of a Material Design text field.\n\n[InputDecorator] displays the visual elements of a Material Design text\nfield around its input [child]. The visual elements themselves are defined\nby an [InputDecoration] object and their layout and appearance depend\non the `baseStyle`, `textAlign`, `isFocused`, and `isEmpty` parameters.\n\n[TextField] uses this widget to decorate its [EditableText] child.\n\n[InputDecorator] can be used to create widgets that look and behave like a\n[TextField] but support other kinds of input.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [TextField], which uses an [InputDecorator] to display a border,\n labels, and icons, around its [EditableText] child.\n * [Decoration] and [DecoratedBox], for drawing arbitrary decorations\n around other widgets.", "detail": "", "kind": 7, "label": "InputDecorator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays a [dart:ui.Image] directly.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nThis widget is rarely used directly. Instead, consider using [Image].", "detail": "", "kind": 7, "label": "RawImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomAppBarTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [BottomAppBar] widgets.\n\nDescendant widgets obtain the current [BottomAppBarTheme] object using\n`BottomAppBarTheme.of(context)`. Instances of [BottomAppBarTheme] can be\ncustomized with [BottomAppBarTheme.copyWith].\n\nTypically a [BottomAppBarTheme] is specified as part of the overall [Theme]\nwith [ThemeData.bottomAppBarTheme].\n\nAll [BottomAppBarTheme] properties are `null` by default. When null, the\n[BottomAppBar] constructor provides defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "BottomAppBarTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageTransitionsBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a horizontal [MaterialPageRoute]\npage transition animation that matches native iOS page transitions.\n\nSee also:\n\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.", "detail": "", "kind": 7, "label": "CupertinoPageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDivider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A one device pixel thick vertical line, with padding on either\nside.\n\nIn the material design language, this represents a divider.\n\nDividers can be used in lists, [Drawer]s, and elsewhere to separate content\nhorizontally. To create a one-pixel divider between items in a list,\nconsider using [ListTile.divideTiles], which is optimized for this case.\n\nThe box's total width is controlled by [width]. The appropriate\npadding is automatically computed from the width.\n\nSee also:\n\n * [PopupMenuDivider], which is the equivalent but for popup menus.\n * [ListTile.divideTiles], another approach to dividing widgets in a list.\n * <https://material.io/design/components/dividers.html>", "detail": "", "kind": 7, "label": "VerticalDivider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSingleChildLayout", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.\n\nSee also:\n\n * [SingleChildLayoutDelegate], which controls the layout of the child.\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [FractionallySizedBox], which sizes its child based on a fraction of its own\n size and positions the child according to an [Alignment] value.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.", "detail": "", "kind": 7, "label": "CustomSingleChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates that the subtree through which this notification bubbles must be\nkept alive even if it would normally be discarded as an optimization.\n\nFor example, a focused text field might fire this notification to indicate\nthat it should not be disposed even if the user scrolls the field off\nscreen.\n\nEach [KeepAliveNotification] is configured with a [handle] that consists of\na [Listenable] that is triggered when the subtree no longer needs to be kept\nalive.\n\nThe [handle] should be triggered any time the sending widget is removed from\nthe tree (in [State.deactivate]). If the widget is then rebuilt and still\nneeds to be kept alive, it should immediately send a new notification\n(possible with the very same [Listenable]) during build.\n\nThis notification is listened to by the [AutomaticKeepAlive] widget, which\nis added to the tree automatically by [SliverList] (and [ListView]) and\n[SliverGrid] (and [GridView]) widgets.\n\nFailure to trigger the [handle] in the manner described above will likely\ncause the [AutomaticKeepAlive] to lose track of whether the widget should be\nkept alive or not, leading to memory leaks or lost data. For example, if the\nwidget that requested keep-alive is removed from the subtree but doesn't\ntrigger its [Listenable] on the way out, then the subtree will continue to\nbe kept alive until the list itself is disposed. Similarly, if the\n[Listenable] is triggered while the widget needs to be kept alive, but a new\n[KeepAliveNotification] is not immediately sent, then the widget risks being\ngarbage collected while it wants to be kept alive.\n\nIt is an error to use the same [handle] in two [KeepAliveNotification]s\nwithin the same [AutomaticKeepAlive] without triggering that [handle] before\nthe second notification is sent.\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses\n[KeepAliveNotification] internally.", "detail": "", "kind": 7, "label": "KeepAliveNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElementVisitor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback to [BuildContext.visitChildElements].\n\nThe argument is the child being visited.\n\nIt is safe to call `element.visitChildElements` reentrantly within\nthis callback.", "detail": "(Element element) → void", "kind": 7, "label": "ElementVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListenerCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for [Notification] listeners.\n\nReturn true to cancel the notification bubbling. Return false to allow the\nnotification to continue to be dispatched to further ancestors.\n\nUsed by [NotificationListener.onNotification].", "detail": "(T notification) → bool", "kind": 7, "label": "NotificationListenerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActionChip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design action chip.\n\nAction chips are a set of options which trigger an action related to primary\ncontent. Action chips should appear dynamically and contextually in a UI.\n\nAction chips can be tapped to trigger an action or show progress and\nconfirmation. They cannot be disabled; if the action is not applicable, the\nchip should not be included in the interface. (This contrasts with buttons,\nwhere unavailable choices are usually represented as disabled controls.)\n\nAction chips are displayed after primary content, such as below a card or\npersistently at the bottom of a screen.\n\nThe material button widgets, [RaisedButton], [FlatButton], and\n[OutlineButton], are an alternative to action chips, which should appear\nstatically and consistently in a UI.\n\nRequires one of its ancestors to be a [Material] widget.\n\n\n```dart\nActionChip(\n avatar: CircleAvatar(\n backgroundColor: Colors.grey.shade800,\n child: Text('AB'),\n ),\n label: Text('Aaron Burr'),\n onPressed: () {\n print(\"If you stand for nothing, Burr, what’ll you fall for?\");\n }\n)\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "ActionChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserScrollNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that the user has changed the direction in which they are\nscrolling.\n\nSee also:\n\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "UserScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionTile", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single-line [ListTile] with a trailing button that expands or collapses\nthe tile to reveal or hide the [children].\n\nThis widget is typically used with [ListView] to create an\n\"expand / collapse\" list entry. When used with scrolling widgets like\n[ListView], a unique [PageStorageKey] must be specified to enable the\n[ExpansionTile] to save and restore its expanded state when it is scrolled\nin and out of view.\n\nSee also:\n\n * [ListTile], useful for creating expansion tile [children] when the\n expansion tile represents a sublist.\n * The \"Expand/collapse\" section of\n <https://material.io/guidelines/components/lists-controls.html>.", "detail": "", "kind": 7, "label": "ExpansionTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Align", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that aligns its child within itself and optionally sizes itself\nbased on the child's size.\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\n## How it works\n\nThe [alignment] property describes a point in the `child`'s coordinate system\nand a different point in the coordinate system of this widget. The [Align]\nwidget positions the `child` such that both points are lined up on top of\neach other.\n\nThe [Align] widget in this example uses one of the defined constants from\n[Alignment], [topRight]. This places the [FlutterLogo] in the top right corner\nof the parent blue [Container].\n\n![A blue square container with the Flutter logo in the top right corner.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_constant.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment.topRight,\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [Alignment] used in the following example defines a single point:\n\n * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height\n of [FlutterLogo]/2 + height of [FlutterLogo]/2) = (36.0, 48.0).\n\nThe [Alignment] class uses a coordinate system with an origin in the center\nof the [Container], as shown with the [Icon] above. [Align] will place the\n[FlutterLogo] at (36.0, 48.0) according to this coordinate system.\n\n![A blue square container with the Flutter logo positioned according to the\nAlignment specified above. A point is marked at the center of the container\nfor the origin of the Alignment coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_alignment.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [FractionalOffset] used in the following example defines two points:\n\n * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0)\n in the coordinate system of the blue container.\n * (0.2 * width of [Align], 0.6 * height of [Align]) = (24.0, 72.0) in the\n coordinate system of the [Align] widget.\n\nThe [Align] widget positions the [FlutterLogo] such that the two points are on\ntop of each other. In this example, the top left of the [FlutterLogo] will\nbe placed at (24.0, 72.0) - (12.0, 36.0) = (12.0, 36.0) from the top left of\nthe [Align] widget.\n\nThe [FractionalOffset] class uses a coordinate system with an origin in the top-left\ncorner of the [Container] in difference to the center-oriented system used in\nthe example above with [Alignment].\n\n![A blue square container with the Flutter logo positioned according to the\nFractionalOffset specified above. A point is marked at the top left corner\nof the container for the origin of the FractionalOffset coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_fractional_offset.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: FractionalOffset(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Center], which is the same as [Align] but with the [alignment] always\n set to [Alignment.center].\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Align" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that creates a widget for a given index, e.g., in a\nlist.\n\nUsed by [ListView.builder] and other APIs that use lazily-generated widgets.\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [TransitionBuilder], which is similar but also takes a child.", "detail": "(BuildContext context, int index) → Widget", "kind": 7, "label": "IndexedWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldValidator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for validating a form field.\n\nReturns an error string to display if the input is invalid, or null\notherwise.\n\nUsed by [FormField.validator].", "detail": "(T value) → String", "kind": 7, "label": "FormFieldValidator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotationTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the rotation of a widget.\n\nHere's an illustration of the [RotationTransition] widget, with it's [turns]\nanimated by a [CurvedAnimation] set to [Curves.elasticOut]:\nSee also:\n\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "RotationTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Stream].\n\n\nWidget rebuilding is scheduled by each interaction, using [State.setState],\nbut is otherwise decoupled from the timing of the stream. The [builder]\nis called at the discretion of the Flutter pipeline, and will thus receive a\ntiming-dependent sub-sequence of the snapshots that represent the\ninteraction with the stream.\n\nAs an example, when interacting with a stream producing the integers\n0 through 9, the [builder] may be called with any ordered sub-sequence\nof the following snapshots that includes the last one (the one with\nConnectionState.done):\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 0)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 1)`\n* ...\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 9)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.done, 9)`\n\nThe actual sequence of invocations of the [builder] depends on the relative\ntiming of events produced by the stream and the build rate of the Flutter\npipeline.\n\nChanging the [StreamBuilder] configuration to another stream during event\ngeneration introduces snapshot pairs of the form:\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.none, 5)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, 5)`\n\nThe latter will be produced only when the new stream is non-null, and the\nformer only when the old stream is non-null.\n\nThe stream may produce errors, resulting in snapshots of the form:\n\n* `new AsyncSnapshot<int>.withError(ConnectionState.active, 'some error')`\n\nThe data and error fields of snapshots produced are only changed when the\nstate is `ConnectionState.active`.\n\nThe initial snapshot data can be controlled by specifying [initialData].\nThis should be used to ensure that the first frame has the expected value,\nas the builder will always be called before the stream listener has a chance\nto be processed.\n\n\nThis sample shows a [StreamBuilder] configuring a text label to show the\nlatest bid received for a lot in an auction. Assume the `_lot` field is\nset by a selector elsewhere in the UI.\n\n```dart\nStreamBuilder<int>(\n stream: _lot?.bids, // a Stream<int> or null\n builder: (BuildContext context, AsyncSnapshot<int> snapshot) {\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n switch (snapshot.connectionState) {\n case ConnectionState.none: return Text('Select lot');\n case ConnectionState.waiting: return Text('Awaiting bids...');\n case ConnectionState.active: return Text('\\$${snapshot.data}');\n case ConnectionState.done: return Text('\\$${snapshot.data} (closed)');\n }\n return null; // unreachable\n },\n)\n```\n\nSee also:\n\n * [ValueListenableBuilder], which wraps a [ValueListenable] instead of a\n [Stream].\n * [StreamBuilderBase], which supports widget building based on a computation\n that spans all interactions made with the stream.", "detail": "", "kind": 7, "label": "StreamBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AboutDialog", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An about box. This is a dialog box with the application's icon, name,\nversion number, and copyright, plus a button to show licenses for software\nused by the application.\n\nTo show an [AboutDialog], use [showAboutDialog].\n\nIf the application has a [Drawer], the [AboutListTile] widget can make the\nprocess of showing an about dialog simpler.\n\nThe [AboutDialog] shown by [showAboutDialog] includes a button that calls\n[showLicensePage].\n\nThe licenses shown on the [LicensePage] are those returned by the\n[LicenseRegistry] API, which can be used to add more licenses to the list.", "detail": "", "kind": 7, "label": "AboutDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshIndicatorState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Contains the state for a [RefreshIndicator]. This class can be used to\nprogrammatically show the refresh indicator, see the [show] method.", "detail": "", "kind": 7, "label": "RefreshIndicatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserAccountsDrawerHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design [Drawer] header that identifies the app's user.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [DrawerHeader], for a drawer header that doesn't show user accounts.\n * <https://material.io/design/components/navigation-drawer.html#anatomy>", "detail": "", "kind": 7, "label": "UserAccountsDrawerHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialButtonWithIconMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The type of [MaterialButton]s created with [RaisedButton.icon], [FlatButton.icon],\nand [OutlineButton.icon].\n\nThis mixin only exists to give the \"label and icon\" button widgets a distinct\ntype for the sake of [ButtonTheme].", "detail": "", "kind": 7, "label": "MaterialButtonWithIconMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMask", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that applies a mask generated by a [Shader] to its child.\n\nFor example, [ShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.\n\n\nThis example makes the text look like it is on fire:\n\n```dart\nShaderMask(\n shaderCallback: (Rect bounds) {\n return RadialGradient(\n center: Alignment.topLeft,\n radius: 1.0,\n colors: <Color>[Colors.yellow, Colors.deepOrange.shade900],\n tileMode: TileMode.mirror,\n ).createShader(bounds);\n },\n child: const Text('I’m burning the memories'),\n)\n```\n\nSee also:\n\n * [Opacity], which can apply a uniform alpha effect to its child.\n * [CustomPaint], which lets you draw directly on the canvas.\n * [DecoratedBox], for another approach at decorating child widgets.\n * [BackdropFilter], which applies an image filter to the background.", "detail": "", "kind": 7, "label": "ShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Coordinates tab selection between a [TabBar] and a [TabBarView].\n\nThe [index] property is the index of the selected tab and the [animation]\nrepresents the current scroll positions of the tab bar and the tar bar view.\nThe selected tab's index can be changed with [animateTo].\n\nA stateful widget that builds a [TabBar] or a [TabBarView] can create\na [TabController] and share it directly.\n\nWhen the [TabBar] and [TabBarView] don't have a convenient stateful\nancestor, a [TabController] can be shared by providing a\n[DefaultTabController] inherited widget.\n\n\nThis widget introduces a [Scaffold] with an [AppBar] and a [TabBar].\n\n```dart\nclass MyTabbedPage extends StatefulWidget {\n const MyTabbedPage({ Key key }) : super(key: key);\n @override\n _MyTabbedPageState createState() => _MyTabbedPageState();\n}\n\nclass _MyTabbedPageState extends State<MyTabbedPage> with SingleTickerProviderStateMixin {\n final List<Tab> myTabs = <Tab>[\n Tab(text: 'LEFT'),\n Tab(text: 'RIGHT'),\n ];\n\n TabController _tabController;\n\n @override\n void initState() {\n super.initState();\n _tabController = TabController(vsync: this, length: myTabs.length);\n }\n\n @override\n void dispose() {\n _tabController.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n bottom: TabBar(\n controller: _tabController,\n tabs: myTabs,\n ),\n ),\n body: TabBarView(\n controller: _tabController,\n children: myTabs.map((Tab tab) {\n return Center(child: Text(tab.text));\n }).toList(),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "TabController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).", "detail": "(TextSelection selection, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTileStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the title font used for [ListTile] descendants of a [ListTileTheme].\n\nList tiles that appear in a [Drawer] use the theme's [TextTheme.body2]\ntext style, which is a little smaller than the theme's [TextTheme.subhead]\ntext style, which is used by default.", "detail": "", "kind": 13, "label": "ListTileStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialAccentColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a single accent color as well a swatch of four shades of the\naccent color.\n\nThe color's shades are referred to by index, the colors with smaller\nindices are lighter, larger indices are darker. There are four valid\nindices: 100, 200, 400, and 700. The value of this color should be the\nsame as the value of index 200 and [shade200].\n\nSee also:\n\n * [Colors], which defines all of the standard material colors.\n * <https://material.io/go/design-theming#color-color-schemes>", "detail": "", "kind": 7, "label": "MaterialAccentColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box in which a single widget can be scrolled.\n\nThis widget is useful when you have a single box that will normally be\nentirely visible, for example a clock face in a time picker, but you need to\nmake sure it can be scrolled if the container gets too small in one axis\n(the scroll direction).\n\nIt is also useful if you need to shrink-wrap in both axes (the main\nscrolling direction as well as the cross axis), as one might see in a dialog\nor pop-up menu. In that case, you might pair the [SingleChildScrollView]\nwith a [ListBody] child.\n\nWhen you have a list of children and do not require cross-axis\nshrink-wrapping behavior, for example a scrolling list that is always the\nwidth of the screen, consider [ListView], which is vastly more efficient\nthat a [SingleChildScrollView] containing a [ListBody] or [Column] with\nmany children.\n\n## Sample code: Using [SingleChildScrollView] with a [Column]\n\nSometimes a layout is designed around the flexible properties of a\n[Column], but there is the concern that in some cases, there might not\nbe enough room to see the entire contents. This could be because some\ndevices have unusually small screens, or because the application can\nbe used in landscape mode where the aspect ratio isn't what was\noriginally envisioned, or because the application is being shown in a\nsmall window in split-screen mode. In any case, as a result, it might\nmake sense to wrap the layout in a [SingleChildScrollView].\n\nSimply doing so, however, usually results in a conflict between the [Column],\nwhich typically tries to grow as big as it can, and the [SingleChildScrollView],\nwhich provides its children with an infinite amount of space.\n\nTo resolve this apparent conflict, there are a couple of techniques, as\ndiscussed below. These techniques should only be used when the content is\nnormally expected to fit on the screen, so that the lazy instantiation of\na sliver-based [ListView] or [CustomScrollView] is not expected to provide\nany performance benefit. If the viewport is expected to usually contain\ncontent beyond the dimensions of the screen, then [SingleChildScrollView]\nwould be very expensive.\n\n### Centering, spacing, or aligning fixed-height content\n\nIf the content has fixed (or intrinsic) dimensions but needs to be spaced out,\ncentered, or otherwise positioned using the [Flex] layout model of a [Column],\nthe following technique can be used to provide the [Column] with a minimum\ndimension while allowing it to shrink-wrap the contents when there isn't enough\nroom to apply these spacing or alignment needs.\n\nA [LayoutBuilder] is used to obtain the size of the viewport (implicitly via\nthe constraints that the [SingleChildScrollView] sees, since viewports\ntypically grow to fit their maximum height constraint). Then, inside the\nscroll view, a [ConstrainedBox] is used to set the minimum height of the\n[Column].\n\nThe [Column] has no [Expanded] children, so rather than take on the infinite\nheight from its [BoxConstraints.maxHeight], (the viewport provides no maximum height\nconstraint), it automatically tries to shrink to fit its children. It cannot\nbe smaller than its [BoxConstraints.minHeight], though, and It therefore\nbecomes the bigger of the minimum height provided by the\n[ConstrainedBox] and the sum of the heights of the children.\n\nIf the children aren't enough to fit that minimum size, the [Column] ends up\nwith some remaining space to allocate as specified by its\n[Column.mainAxisAlignment] argument.\n\nIn this example, the children are spaced out equally, unless there's no more\nroom, in which case they stack vertically and scroll.\n\nWhen using this technique, [Expanded] and [Flexible] are not useful, because\nin both cases the \"available space\" is infinite (since this is in a viewport).\nThe next section describes a technique for providing a maximum height constraint.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: Column(\n mainAxisSize: MainAxisSize.min,\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Container(\n // Another fixed-height child.\n color: const Color(0xff008000), // Green\n height: 120.0,\n ),\n ],\n ),\n ),\n );\n },\n );\n}\n```\n\n### Expanding content to fit the viewport\n\nThe following example builds on the previous one. In addition to providing a\nminimum dimension for the child [Column], an [IntrinsicHeight] widget is used\nto force the column to be exactly as big as its contents. This constraint\ncombines with the [ConstrainedBox] constraints discussed previously to ensure\nthat the column becomes either as big as viewport, or as big as the contents,\nwhichever is biggest.\n\nBoth constraints must be used to get the desired effect. If only the\n[IntrinsicHeight] was specified, then the column would not grow to fit the\nentire viewport when its children were smaller than the whole screen. If only\nthe size of the viewport was used, then the [Column] would overflow if the\nchildren were bigger than the viewport.\n\nThe widget that is to grow to fit the remaining space so provided is wrapped\nin an [Expanded] widget.\n\nThis technique is quite expensive, as it more or less requires that the contents\nof the viewport be laid out twice (once to find their intrinsic dimensions, and\nonce to actually lay them out). The number of widgets within the column should\ntherefore be kept small. Alternatively, subsets of the children that have known\ndimensions can be wrapped in a [SizedBox] that has tight vertical constraints,\nso that the intrinsic sizing algorithm can short-circuit the computation when it\nreaches those parts of the subtree.\n\nIn this example, the column becomes either as big as viewport, or as big as\nthe contents, whichever is biggest.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: IntrinsicHeight(\n child: Column(\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Expanded(\n // A flexible child that will grow to fit the viewport but\n // still be at least as big as necessary to fit its contents.\n child: Container(\n color: const Color(0xff800000), // Red\n height: 120.0,\n ),\n ),\n ],\n ),\n ),\n ),\n );\n },\n );\n}\n```\n\nSee also:\n\n * [ListView], which handles multiple children in a scrolling list.\n * [GridView], which handles multiple children in a scrolling grid.\n * [PageView], for a scrollable that works page by page.\n * [Scrollable], which handles arbitrary scrolling effects.", "detail": "", "kind": 7, "label": "SingleChildScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilderBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for widgets that build themselves based on interaction with\na specified [Stream].\n\nA [StreamBuilderBase] is stateful and maintains a summary of the interaction\nso far. The type of the summary and how it is updated with each interaction\nis defined by sub-classes.\n\nExamples of summaries include:\n\n* the running average of a stream of integers;\n* the current direction and speed based on a stream of geolocation data;\n* a graph displaying data points from a stream.\n\nIn general, the summary is the result of a fold computation over the data\nitems and errors received from the stream along with pseudo-events\nrepresenting termination or change of stream. The initial summary is\nspecified by sub-classes by overriding [initial]. The summary updates on\nreceipt of stream data and errors are specified by overriding [afterData] and\n[afterError], respectively. If needed, the summary may be updated on stream\ntermination by overriding [afterDone]. Finally, the summary may be updated\non change of stream by overriding [afterDisconnected] and [afterConnected].\n\n`T` is the type of stream events.\n\n`S` is the type of interaction summary.\n\nSee also:\n\n * [StreamBuilder], which is specialized for the case where only the most\n recent interaction is needed for widget building.", "detail": "", "kind": 7, "label": "StreamBuilderBase" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryConstructor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.constructor].", "detail": "() → T", "kind": 7, "label": "GestureRecognizerFactoryConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state for a [Navigator] widget.", "detail": "", "kind": 7, "label": "NavigatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Visibility", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether to show or hide a child.\n\nBy default, the [visible] property controls whether the [child] is included\nin the subtree or not; when it is not [visible], the [replacement] child\n(typically a zero-sized box) is included instead.\n\nA variety of flags can be used to tweak exactly how the child is hidden.\n(Changing the flags dynamically is discouraged, as it can cause the [child]\nsubtree to be rebuilt, with any state in the subtree being discarded.\nTypically, only the [visible] flag is changed dynamically.)\n\nThese widgets provide some of the facets of this one:\n\n * [Opacity], which can stop its child from being painted.\n * [Offstage], which can stop its child from being laid out or painted.\n * [TickerMode], which can stop its child from being animated.\n * [ExcludeSemantics], which can hide the child from accessibility tools.\n * [IgnorePointer], which can disable touch interactions with the child.\n\nUsing this widget is not necessary to hide children. The simplest way to\nhide a child is just to not include it, or, if a child _must_ be given (e.g.\nbecause the parent is a [StatelessWidget]) then to use [SizedBox.shrink]\ninstead of the child that would otherwise be included.\n\nSee also:\n\n * [AnimatedSwitcher], which can fade from one child to the next as the\n subtree changes.\n * [AnimatedCrossFade], which can fade between two specific children.", "detail": "", "kind": 7, "label": "Visibility" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaddleSliderValueIndicatorShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s value indicator.\n\nSee also:\n\n * [Slider], which includes a value indicator defined by this shape.\n * [SliderTheme], which can be used to configure the slider value indicator\n of all sliders in a widget subtree.", "detail": "", "kind": 7, "label": "PaddleSliderValueIndicatorShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a path.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\n[PhysicalModel] does the same but only supports shapes that can be expressed\nas rectangles with rounded corners.\n\nSee also:\n\n * [ShapeBorderClipper], which converts a [ShapeBorder] to a [CustomerClipper], as\n needed by this widget.", "detail": "", "kind": 7, "label": "PhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialBasedCupertinoThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [CupertinoThemeData] that defers unspecified theme attributes to an\nupstream Material [ThemeData].\n\nThis type of [CupertinoThemeData] is used by the Material [Theme] to\nharmonize the [CupertinoTheme] with the material theme's colors and text\nstyles.\n\nIn the most basic case, [ThemeData]'s `cupertinoOverrideTheme` is null and\nand descendant Cupertino widgets' styling is derived from the Material theme.\n\nTo override individual parts of the Material-derived Cupertino styling,\n`cupertinoOverrideTheme`'s construction parameters can be used.\n\nTo completely decouple the Cupertino styling from Material theme derivation,\nanother [CupertinoTheme] widget can be inserted as a descendant of the\nMaterial [Theme]. On a [MaterialApp], this can be done using the `builder`\nparameter on the constructor.\n\nSee also:\n\n * [CupertinoThemeData], whose null constructor parameters default to\n reasonable iOS styling defaults rather than harmonizing with a Material\n theme.\n * [Theme], widget which inserts a [CupertinoTheme] with this\n [MaterialBasedCupertinoThemeData].", "detail": "", "kind": 7, "label": "MaterialBasedCupertinoThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildOwner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manager class for the widgets framework.\n\nThis class tracks which widgets need rebuilding, and handles other tasks\nthat apply to widget trees as a whole, such as managing the inactive element\nlist for the tree and triggering the \"reassemble\" command when necessary\nduring hot reload when debugging.\n\nThe main build owner is typically owned by the [WidgetsBinding], and is\ndriven from the operating system along with the rest of the\nbuild/layout/paint pipeline.\n\nAdditional build owners can be built to manage off-screen widget trees.\n\nTo assign a build owner to a tree, use the\n[RootRenderObjectElement.assignOwner] method on the root element of the\nwidget tree.", "detail": "", "kind": 7, "label": "BuildOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderTickMarkShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for slider tick mark shapes.\n\nCreate a subclass of this if you would like a custom slider tick mark shape.\nThis is a simplified version of [SliderComponentShape] with a\n[SliderThemeData] passed when getting the preferred size.\n\nThe tick mark painting can be skipped by specifying [noTickMark] for\n[SliderThemeData.tickMarkShape].\n\nSee also:\n\n * [RoundSliderTickMarkShape] for a simple example of a tick mark shape.\n * [SliderTrackShape] for the base class for custom a track shape.\n * [SliderComponentShape] for the base class for custom a component shape.", "detail": "", "kind": 7, "label": "SliderTickMarkShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Stack] of entries that can be managed independently.\n\nOverlays let independent child widgets \"float\" visual elements on top of\nother widgets by inserting them into the overlay's [Stack]. The overlay lets\neach of these widgets manage their participation in the overlay using\n[OverlayEntry] objects.\n\nAlthough you can create an [Overlay] directly, it's most common to use the\noverlay created by the [Navigator] in a [WidgetsApp] or a [MaterialApp]. The\nnavigator uses its overlay to manage the visual appearance of its routes.\n\nSee also:\n\n * [OverlayEntry].\n * [OverlayState].\n * [WidgetsApp].\n * [MaterialApp].", "detail": "", "kind": 7, "label": "Overlay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the color, opacity, and size of icons.\n\nUsed by [IconTheme] to control the color, opacity, and size of icons in a\nwidget subtree.\n\nTo obtain the current icon theme, use [IconTheme.of]. To convert an icon\ntheme to a version with all the fields filled in, use [new\nIconThemeData.fallback].", "detail": "", "kind": 7, "label": "IconThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for sliver that have multiple box children.\n\nHelps subclasses build their children lazily using a [SliverChildDelegate].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedAlign", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Align] which automatically transitions the child's\nposition over a given duration whenever the given [alignment] changes.\n\nHere's an illustration of what this can look like, using a [curve] of\n[Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedPadding], which can animate the padding instead of the\n alignment.\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.", "detail": "", "kind": 7, "label": "AnimatedAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [ShapeBorder]s.\n\nThis class specializes the interpolation of [Tween] to use [ShapeBorder.lerp].", "detail": "", "kind": 7, "label": "ShapeBorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragAnchor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where the [Draggable] should be anchored during a drag.", "detail": "", "kind": 13, "label": "DragAnchor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A general-purpose widget for building animations.\n\nAnimatedBuilder is useful for more complex widgets that wish to include\nan animation as part of a larger build function. To use AnimatedBuilder,\nsimply construct the widget and pass it a builder function.\n\nFor simple cases without additional state, consider using\n[AnimatedWidget].\n\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nanimation, it's more efficient to build that subtree once instead of\nrebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\nAnimatedBuilder will pass it back to your builder function so that you\ncan incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedBuilder] and makes use of the\n[child] feature to avoid having to rebuild the [Container] each time.\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return AnimatedBuilder(\n animation: _controller,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n builder: (BuildContext context, Widget child) {\n return Transform.rotate(\n angle: _controller.value * 2.0 * math.pi,\n child: child,\n );\n },\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "AnimatedBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnconstrainedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that imposes no constraints on its child, allowing it to render\nat its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This container will then attempt\nto adopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the container, a warning will be\nprinted on the console, and black and yellow striped areas will appear where\nthe overflow occurs.\n\nSee also:\n\n * [ConstrainedBox], for a box which imposes constraints on its child.\n * [Align], which loosens the constraints given to the child rather than\n removing them entirely.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow\n the parent.", "detail": "", "kind": 7, "label": "UnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single list of children. (This superclass only provides the\nstorage for that child list, it doesn't actually provide the updating\nlogic.)", "detail": "", "kind": 7, "label": "MultiChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a callback that verifies that it's OK to call [Navigator.pop].\n\nUsed by [Form.onWillPop], [ModalRoute.addScopedWillPopCallback],\n[ModalRoute.removeScopedWillPopCallback], and [WillPopScope].", "detail": "() → Future<bool>", "kind": 7, "label": "WillPopCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedOverflowBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is a specific size but passes its original constraints\nthrough to its child, which may then overflow.\n\nSee also:\n\n * [OverflowBox], A widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Switch", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design switch.\n\nUsed to toggle the on/off state of a single setting.\n\nThe switch itself does not maintain any state. Instead, when the state of\nthe switch changes, the widget calls the [onChanged] callback. Most widgets\nthat use a switch will listen for the [onChanged] callback and rebuild the\nswitch with a new [value] to update the visual appearance of the switch.\n\nIf the [onChanged] callback is null, then the switch will be disabled (it\nwill not respond to input). A disabled switch's thumb and track are rendered\nin shades of grey by default. The default appearance of a disabled switch\ncan be overridden with [inactiveThumbColor] and [inactiveTrackColor].\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [SwitchListTile], which combines this widget with a [ListTile] so that\n you can give the switch a label.\n * [Checkbox], another widget with similar semantics.\n * [Radio], for selecting among a set of explicit values.\n * [Slider], for selecting a value in a range.\n * <https://material.io/design/components/selection-controls.html#switches>", "detail": "", "kind": 7, "label": "Switch" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current state of a [FormField]. Passed to the [FormFieldBuilder] method\nfor use in constructing the form field's widget.", "detail": "", "kind": 7, "label": "FormFieldState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that applies a filter to the existing painted content and then\npaints [child].\n\nThe filter will be applied to all the area within its parent or ancestor\nwidget's clip. If there's no clip, the filter will be applied to the full\nscreen.\n\n\nIf the [BackdropFilter] needs to be applied to an area that exactly matches\nits child, wraps the [BackdropFilter] with a clip widget that clips exactly\nto that child.\n\n```dart\nStack(\n fit: StackFit.expand,\n children: <Widget>[\n Text('0' * 10000),\n Center(\n child: ClipRect( // <-- clips to the 200x200 [Container] below\n child: BackdropFilter(\n filter: ui.ImageFilter.blur(\n sigmaX: 5.0,\n sigmaY: 5.0,\n ),\n child: Container(\n alignment: Alignment.center,\n width: 200.0,\n height: 200.0,\n child: Text('Hello World'),\n ),\n ),\n ),\n ),\n ],\n)\n```\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.\n\nSee also:\n\n * [DecoratedBox], which draws a background under (or over) a widget.\n * [Opacity], which changes the opacity of the widget itself.", "detail": "", "kind": 7, "label": "BackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Notification] related to scrolling.\n\n[Scrollable] widgets notify their ancestors about scrolling-related changes.\nThe notifications have the following lifecycle:\n\n * A [ScrollStartNotification], which indicates that the widget has started\n scrolling.\n * Zero or more [ScrollUpdateNotification]s, which indicate that the widget\n has changed its scroll position, mixed with zero or more\n [OverscrollNotification]s, which indicate that the widget has not changed\n its scroll position because the change would have caused its scroll\n position to go outside its scroll bounds.\n * Interspersed with the [ScrollUpdateNotification]s and\n [OverscrollNotification]s are zero or more [UserScrollNotification]s,\n which indicate that the user has changed the direction in which they are\n scrolling.\n * A [ScrollEndNotification], which indicates that the widget has stopped\n scrolling.\n * A [UserScrollNotification], with a [UserScrollNotification.direction] of\n [ScrollDirection.idle].\n\nNotifications bubble up through the tree, which means a given\n[NotificationListener] will receive notifications for all descendant\n[Scrollable] widgets. To focus on notifications from the nearest\n[Scrollable] descendant, check that the [depth] property of the notification\nis zero.\n\nWhen a scroll notification is received by a [NotificationListener], the\nlistener will have already completed build and layout, and it is therefore\ntoo late for that widget to call [State.setState]. Any attempt to adjust the\nbuild or layout based on a scroll notification would result in a layout that\nlagged one frame behind, which is a poor user experience. Scroll\nnotifications are therefore primarily useful for paint effects (since paint\nhappens after layout). The [GlowingOverscrollIndicator] and [Scrollbar]\nwidgets are examples of paint effects that use scroll notifications.\n\nTo drive layout based on the scroll position, consider listening to the\n[ScrollPosition] directly (or indirectly via a [ScrollController]).", "detail": "", "kind": 7, "label": "ScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Embeds an Android view in the Widget hierarchy.\n\nRequires Android API level 20 or greater.\n\nEmbedding Android views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\nThe embedded Android view is painted just like any other Flutter widget and transformations\napply to it as well.\n\nThe widget fills all available space, the parent of this object must provide bounded layout\nconstraints.\n\nThe widget participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified in the `gestureRecognizers` constructor parameter. If\nthe set of gesture recognizers is empty, a gesture will be dispatched to the platform\nview iff it was not claimed by any other gesture recognizer.\n\nThe Android view object is created using a [PlatformViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewFactory.html).\nPlugins can register platform view factories with [PlatformViewRegistry#registerViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewRegistry.html#registerViewFactory-java.lang.String-io.flutter.plugin.platform.PlatformViewFactory-).\n\nRegistration is typically done in the plugin's registerWith method, e.g:\n\n```java\n public static void registerWith(Registrar registrar) {\n registrar.platformViewRegistry().registerViewFactory(\"webview\", WebViewFactory(registrar.messenger()));\n }\n```\n\nThe platform view's lifetime is the same as the lifetime of the [State] object for this widget.\nWhen the [State] is disposed the platform view (and auxiliary resources) are lazily\nreleased (some resources are immediately released and some by platform garbage collector).\nA stateful widget's state is disposed when the widget is removed from the tree or when it is\nmoved within the tree. If the stateful widget has a key and it's only moved relative to its siblings,\nor it has a [GlobalKey] and it's moved within the tree, it will not be disposed.", "detail": "", "kind": 7, "label": "AndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGrid", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[SliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nThe main axis direction of a grid is the direction in which it scrolls; the\ncross axis direction is the orthogonal direction.\n\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows twenty boxes in a pretty teal grid:\n\n```dart\nSliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n)\n```\n\n\nSee also:\n\n * [SliverList], which places its children in a linear array.\n * [SliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.", "detail": "", "kind": 7, "label": "SliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An image that shows a [placeholder] image while the target [image] is\nloading, then fades in the new image when it loads.\n\nUse this class to display long-loading images, such as [new NetworkImage],\nso that the image appears on screen with a graceful animation rather than\nabruptly pops onto the screen.\n\n\nIf the [image] emits an [ImageInfo] synchronously, such as when the image\nhas been loaded and cached, the [image] is displayed immediately and the\n[placeholder] is never displayed.\n\n[fadeOutDuration] and [fadeOutCurve] control the fade-out animation of the\nplaceholder.\n\n[fadeInDuration] and [fadeInCurve] control the fade-in animation of the\ntarget [image].\n\nPrefer a [placeholder] that's already cached so that it is displayed in one\nframe. This prevents it from popping onto the screen.\n\nWhen [image] changes it is resolved to a new [ImageStream]. If the new\n[ImageStream.key] is different this widget subscribes to the new stream and\nreplaces the displayed image with images emitted by the new stream.\n\nWhen [placeholder] changes and the [image] has not yet emitted an\n[ImageInfo], then [placeholder] is resolved to a new [ImageStream]. If the\nnew [ImageStream.key] is different this widget subscribes to the new stream\nand replaces the displayed image to images emitted by the new stream.\n\nWhen either [placeholder] or [image] changes, this widget continues showing\nthe previously loaded image (if any) until the new image provider provides a\ndifferent image. This is known as \"gapless playback\" (see also\n[Image.gaplessPlayback]).\n\n\n```dart\nFadeInImage(\n // here `bytes` is a Uint8List containing the bytes for the in-memory image\n placeholder: MemoryImage(bytes),\n image: NetworkImage('https://backend.example.com/image.png'),\n)\n```", "detail": "", "kind": 7, "label": "FadeInImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Navigator] observer that manages [Hero] transitions.\n\nAn instance of [HeroController] should be used in [Navigator.observers].\nThis is done automatically by [MaterialApp].", "detail": "", "kind": 7, "label": "HeroController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModelElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [InheritedModel] as its configuration.", "detail": "", "kind": 7, "label": "InheritedModelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Metrics for a [PageView].\n\nThe metrics are available on [ScrollNotification]s generated from\n[PageView]s.", "detail": "", "kind": 7, "label": "PageMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSizeWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for widgets that can return the size this widget would prefer\nif it were otherwise unconstrained.\n\nThere are a few cases, notably [AppBar] and [TabBar], where it would be\nundesirable for the widget to constrain its own size but where the widget\nneeds to expose a preferred or \"default\" size. For example a primary\n[Scaffold] sets its app bar height to the app bar's preferred height\nplus the height of the system status bar.\n\nUse [PreferredSize] to give a preferred size to an arbitrary widget.", "detail": "", "kind": 7, "label": "PreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFixedExtentList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[SliverFixedExtentList] places its children in a linear array along the main\naxis starting at offset zero and without gaps. Each child is forced to have\nthe [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[SliverFixedExtentList] is more efficient than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis.\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows an infinite number of items in varying shades of blue:\n\n```dart\nSliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n)\n```\n\n\nSee also:\n\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Direction of the hero's flight based on the navigation operation.", "detail": "", "kind": 13, "label": "HeroFlightDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageTransitionsBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a [MaterialPageRoute] page\ntransition animation.\n\nApps can configure the map of builders for [ThemeData.platformTheme]\nto customize the default [MaterialPageRoute] page transition animation\nfor different platforms.\n\nSee also:\n\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "PageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A utility class for building Material buttons that depend on the\nambient [ButtonTheme] and [Theme].\n\nThe button's size will expand to fit the child widget, if necessary.\n\nMaterialButtons whose [onPressed] handler is null will be disabled. To have\nan enabled button, make sure to pass a non-null value for onPressed.\n\nRather than using this class directly, consider using [FlatButton],\n[OutlineButton], or [RaisedButton], which configure this class with\nappropriate defaults that match the material design specification.\n\nTo create a button directly, without inheriting theme defaults, use\n[RawMaterialButton].\n\nIf you want an ink-splash effect for taps, but don't want to use a button,\nconsider using [InkWell] directly.\n\nSee also:\n\n * [IconButton], to create buttons that contain icons rather than text.", "detail": "", "kind": 7, "label": "MaterialButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularProgressIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design circular progress indicator, which spins to indicate that\nthe application is busy.\n\nA widget that shows progress along a circle. There are two kinds of circular\nprogress indicators:\n\n * _Determinate_. Determinate progress indicators have a specific value at\n each point in time, and the value should increase monotonically from 0.0\n to 1.0, at which time the indicator is complete. To create a determinate\n progress indicator, use a non-null [value] between 0.0 and 1.0.\n * _Indeterminate_. Indeterminate progress indicators do not have a specific\n value at each point in time and instead indicate that progress is being\n made without indicating how much progress remains. To create an\n indeterminate progress indicator, use a null [value].\n\nThe indicator arc is displayed with [valueColor], an animated value. To\nspecify a constant color use: `AlwaysStoppedAnimation<Color>(color)`.\n\nSee also:\n\n * [LinearProgressIndicator], which displays progress along a line.\n * [RefreshIndicator], which automatically displays a [CircularProgressIndicator]\n when the underlying vertical scrollable is overscrolled.\n * <https://material.io/design/components/progress-indicators.html#circular-progress-indicators>", "detail": "", "kind": 7, "label": "CircularProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialApp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An application that uses material design.\n\nA convenience widget that wraps a number of widgets that are commonly\nrequired for material design applications. It builds upon a [WidgetsApp] by\nadding material-design specific functionality, such as [AnimatedTheme] and\n[GridPaper].\n\nThe [MaterialApp] configures the top-level [Navigator] to search for routes\nin the following order:\n\n 1. For the `/` route, the [home] property, if non-null, is used.\n\n 2. Otherwise, the [routes] table is used, if it has an entry for the route.\n\n 3. Otherwise, [onGenerateRoute] is called, if provided. It should return a\n non-null value for any _valid_ route not handled by [home] and [routes].\n\n 4. Finally if all else fails [onUnknownRoute] is called.\n\nIf a [Navigator] is created, at least one of these options must handle the\n`/` route, since it is used when an invalid [initialRoute] is specified on\nstartup (e.g. by another application launching this one with an intent on\nAndroid; see [Window.defaultRouteName]).\n\nThis widget also configures the observer of the top-level [Navigator] (if\nany) to perform [Hero] animations.\n\nIf [home], [routes], [onGenerateRoute], and [onUnknownRoute] are all null,\nand [builder] is not null, then no [Navigator] is created.\n\nSee also:\n\n * [Scaffold], which provides standard app elements like an [AppBar] and a [Drawer].\n * [Navigator], which is used to manage the app's stack of pages.\n * [MaterialPageRoute], which defines an app page that transitions in a material-specific way.\n * [WidgetsApp], which defines the basic app elements but does not depend on the material library.\n * The Flutter Internationalization Tutorial,\n <https://flutter.dev/tutorials/internationalization/>.", "detail": "", "kind": 7, "label": "MaterialApp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomAppBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A container that is typically used with [Scaffold.bottomNavigationBar], and\ncan have a notch along the top that makes room for an overlapping\n[FloatingActionButton].\n\nTypically used with a [Scaffold] and a [FloatingActionButton].\n\n```dart\nScaffold(\n bottomNavigationBar: BottomAppBar(\n color: Colors.white,\n child: bottomAppBarContents,\n ),\n floatingActionButton: FloatingActionButton(onPressed: null),\n)\n```\n\nSee also:\n\n * [ComputeNotch] a function used for creating a notch in a shape.\n * [ScaffoldGeometry.floatingActionBarComputeNotch] the [ComputeNotch] used to\n make a notch for the [FloatingActionButton].\n * [FloatingActionButton] which the [BottomAppBar] makes a notch for.\n * [AppBar] for a toolbar that is shown at the top of the screen.", "detail": "", "kind": 7, "label": "BottomAppBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showSnackBar]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself had been used, no [Scaffold] would have\nbeen found, and the [Scaffold.of] function would have returned null.\n\n```dart\n @override\n Widget build(BuildContext context) {\n // here, Scaffold.of(context) returns null\n return Scaffold(\n appBar: AppBar(title: Text('Demo')),\n body: Builder(\n builder: (BuildContext context) {\n return FlatButton(\n child: Text('BUTTON'),\n onPressed: () {\n // here, Scaffold.of(context) returns the locally created Scaffold\n Scaffold.of(context).showSnackBar(SnackBar(\n content: Text('Hello.')\n ));\n }\n );\n }\n )\n );\n }\n```\n\nThe [BuildContext] for a particular widget can change location over time as\nthe widget is moved around the tree. Because of this, values returned from\nthe methods on this class should not be cached beyond the execution of a\nsingle synchronous function.\n\n[BuildContext] objects are actually [Element] objects. The [BuildContext]\ninterface is used to discourage direct manipulation of [Element] objects.", "detail": "", "kind": 7, "label": "BuildContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Theme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a theme to descendant widgets.\n\nA theme describes the colors and typographic choices of an application.\n\nDescendant widgets obtain the current theme's [ThemeData] object using\n[Theme.of]. When a widget uses [Theme.of], it is automatically rebuilt if\nthe theme later changes, so that the changes can be applied.\n\nThe [Theme] widget implies an [IconTheme] widget, set to the value of the\n[ThemeData.iconTheme] of the [data] for the [Theme].\n\nSee also:\n\n * [ThemeData], which describes the actual configuration of a theme.\n * [AnimatedTheme], which animates the [ThemeData] when it changes rather\n than changing the theme all at once.\n * [MaterialApp], which includes an [AnimatedTheme] widget configured via\n the [MaterialApp.theme] argument.", "detail": "", "kind": 7, "label": "Theme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Divider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A one device pixel thick horizontal line, with padding on either\nside.\n\nIn the material design language, this represents a divider.\n\nDividers can be used in lists, [Drawer]s, and elsewhere to separate content\nvertically or horizontally depending on the value of the [axis] enum.\nTo create a one-pixel divider between items in a list, consider using\n[ListTile.divideTiles], which is optimized for this case.\n\nThe box's total height is controlled by [height]. The appropriate\npadding is automatically computed from the width or height.\n\nSee also:\n\n * [PopupMenuDivider], which is the equivalent but for popup menus.\n * [ListTile.divideTiles], another approach to dividing widgets in a list.\n * <https://material.io/design/components/dividers.html>", "detail": "", "kind": 7, "label": "Divider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataColumn", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Column configuration for a [DataTable].\n\nOne column configuration must be provided for each column to\ndisplay in the table. The list of [DataColumn] objects is passed\nas the `columns` argument to the [new DataTable] constructor.", "detail": "", "kind": 7, "label": "DataColumn" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTarget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that receives data when a [Draggable] widget is dropped.\n\nWhen a draggable is dragged on top of a drag target, the drag target is\nasked whether it will accept the data the draggable is carrying. If the user\ndoes drop the draggable on top of the drag target (and the drag target has\nindicated that it will accept the draggable's data), then the drag target is\nasked to accept the draggable's data.\n\nSee also:\n\n * [Draggable]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "DragTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Widget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the configuration for an [Element].\n\nWidgets are the central class hierarchy in the Flutter framework. A widget\nis an immutable description of part of a user interface. Widgets can be\ninflated into elements, which manage the underlying render tree.\n\nWidgets themselves have no mutable state (all their fields must be final).\nIf you wish to associate mutable state with a widget, consider using a\n[StatefulWidget], which creates a [State] object (via\n[StatefulWidget.createState]) whenever it is inflated into an element and\nincorporated into the tree.\n\nA given widget can be included in the tree zero or more times. In particular\na given widget can be placed in the tree multiple times. Each time a widget\nis placed in the tree, it is inflated into an [Element], which means a\nwidget that is incorporated into the tree multiple times will be inflated\nmultiple times.\n\nThe [key] property controls how one widget replaces another widget in the\ntree. If the [runtimeType] and [key] properties of the two widgets are\n[operator==], respectively, then the new widget replaces the old widget by\nupdating the underlying element (i.e., by calling [Element.update] with the\nnew widget). Otherwise, the old element is removed from the tree, the new\nwidget is inflated into an element, and the new element is inserted into the\ntree.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.", "detail": "", "kind": 7, "label": "Widget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerLocation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where to show a [Banner].\n\nThe start and end locations are relative to the ambient [Directionality]\n(which can be overridden by [Banner.layoutDirection]).", "detail": "", "kind": 13, "label": "BannerLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPhysicalModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [PhysicalModel].\n\nThe [borderRadius] and [elevation] are animated.\n\nThe [color] is animated if the [animateColor] property is set; otherwise,\nthe color changes immediately at the start of the animation for the other\ntwo properties. This allows the color to be animated independently (e.g.\nbecause it is being driven by an [AnimatedTheme]).\n\nThe [shape] is not animated.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].", "detail": "", "kind": 7, "label": "AnimatedPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapInjector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [SliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [Viewport], so that it will always be laid out before the\n[SliverOverlapInjector] during a particular frame.\n\nSee also:\n\n * [NestedScrollView], which uses a [SliverOverlapAbsorber] to align its\n children, and which shows sample usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightShuttleBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A function that lets [Hero]s self supply a [Widget] that is shown during the\nhero's flight from one route to another instead of default (which is to\nshow the destination route's instance of the Hero).", "detail": "(BuildContext flightContext, Animation<double> animation, HeroFlightDirection flightDirection, BuildContext fromHeroContext, BuildContext toHeroContext) → Widget", "kind": 7, "label": "HeroFlightShuttleBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a menu when pressed and calls [onSelected] when the menu is dismissed\nbecause an item was selected. The value passed to [onSelected] is the value of\nthe selected menu item.\n\nOne of [child] or [icon] may be provided, but not both. If [icon] is provided,\nthen [PopupMenuButton] behaves like an [IconButton].\n\nIf both are null, then a standard overflow icon is created (depending on the\nplatform).\n\n\nThis example shows a menu with four items, selecting between an enum's\nvalues and setting a `_selection` field based on the selection.\n\n```dart\n// This is the type used by the popup menu below.\nenum WhyFarther { harder, smarter, selfStarter, tradingCharter }\n\n// This menu button widget updates a _selection field (of type WhyFarther,\n// not shown here).\nPopupMenuButton<WhyFarther>(\n onSelected: (WhyFarther result) { setState(() { _selection = result; }); },\n itemBuilder: (BuildContext context) => <PopupMenuEntry<WhyFarther>>[\n const PopupMenuItem<WhyFarther>(\n value: WhyFarther.harder,\n child: Text('Working a lot harder'),\n ),\n const PopupMenuItem<WhyFarther>(\n value: WhyFarther.smarter,\n child: Text('Being a lot smarter'),\n ),\n const PopupMenuItem<WhyFarther>(\n value: WhyFarther.selfStarter,\n child: Text('Being a self-starter'),\n ),\n const PopupMenuItem<WhyFarther>(\n value: WhyFarther.tradingCharter,\n child: Text('Placed in charge of trading charter'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [PopupMenuItem], a popup menu entry for a single value.\n * [PopupMenuDivider], a popup menu entry that is just a horizontal line.\n * [CheckedPopupMenuItem], a popup menu item with a checkmark.\n * [showMenu], a method to dynamically show a popup menu at a given location.", "detail": "", "kind": 7, "label": "PopupMenuButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that manages a pair of text selection handles.\n\nThe selection handles are displayed in the [Overlay] that most closely\nencloses the given [BuildContext].", "detail": "", "kind": 7, "label": "TextSelectionOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundSliderTickMarkShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of each [Slider] tick mark.\n\nTick marks are only displayed if the slider is discrete, which can be done\nby setting the [Slider.divisions] as non-null.\n\nIt paints a solid circle, centered in the on the track.\nThe color is determined by the [Slider]'s enabled state and track's active\nstates. These colors are defined in:\n [SliderThemeData.activeTrackColor],\n [SliderThemeData.inactiveTrackColor],\n [SliderThemeData.disabledActiveTrackColor],\n [SliderThemeData.disabledInactiveTrackColor].\n\nSee also:\n\n * [Slider], which includes tick marks defined by this shape.\n * [SliderTheme], which can be used to configure the tick mark shape of all\n sliders in a widget subtree.", "detail": "", "kind": 7, "label": "RoundSliderTickMarkShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Navigator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that manages a set of child widgets with a stack discipline.\n\nMany apps have a navigator near the top of their widget hierarchy in order\nto display their logical history using an [Overlay] with the most recently\nvisited pages visually on top of the older pages. Using this pattern lets\nthe navigator visually transition from one page to another by moving the widgets\naround in the overlay. Similarly, the navigator can be used to show a dialog\nby positioning the dialog widget above the current page.\n\n## Using the Navigator\n\nMobile apps typically reveal their contents via full-screen elements\ncalled \"screens\" or \"pages\". In Flutter these elements are called\nroutes and they're managed by a [Navigator] widget. The navigator\nmanages a stack of [Route] objects and provides methods for managing\nthe stack, like [Navigator.push] and [Navigator.pop].\n\n### Displaying a full-screen route\n\nAlthough you can create a navigator directly, it's most common to use\nthe navigator created by a [WidgetsApp] or a [MaterialApp] widget. You\ncan refer to that navigator with [Navigator.of].\n\nA [MaterialApp] is the simplest way to set things up. The [MaterialApp]'s\nhome becomes the route at the bottom of the [Navigator]'s stack. It is what\nyou see when the app is launched.\n\n```dart\nvoid main() {\n runApp(MaterialApp(home: MyAppHome()));\n}\n```\n\nTo push a new route on the stack you can create an instance of\n[MaterialPageRoute] with a builder function that creates whatever you\nwant to appear on the screen. For example:\n\n```dart\nNavigator.push(context, MaterialPageRoute<void>(\n builder: (BuildContext context) {\n return Scaffold(\n appBar: AppBar(title: Text('My Page')),\n body: Center(\n child: FlatButton(\n child: Text('POP'),\n onPressed: () {\n Navigator.pop(context);\n },\n ),\n ),\n );\n },\n));\n```\n\nThe route defines its widget with a builder function instead of a\nchild widget because it will be built and rebuilt in different\ncontexts depending on when it's pushed and popped.\n\nAs you can see, the new route can be popped, revealing the app's home\npage, with the Navigator's pop method:\n\n```dart\nNavigator.pop(context);\n```\n\nIt usually isn't necessary to provide a widget that pops the Navigator\nin a route with a [Scaffold] because the Scaffold automatically adds a\n'back' button to its AppBar. Pressing the back button causes\n[Navigator.pop] to be called. On Android, pressing the system back\nbutton does the same thing.\n\n### Using named navigator routes\n\nMobile apps often manage a large number of routes and it's often\neasiest to refer to them by name. Route names, by convention,\nuse a path-like structure (for example, '/a/b/c').\nThe app's home page route is named '/' by default.\n\nThe [MaterialApp] can be created\nwith a [Map<String, WidgetBuilder>] which maps from a route's name to\na builder function that will create it. The [MaterialApp] uses this\nmap to create a value for its navigator's [onGenerateRoute] callback.\n\n```dart\nvoid main() {\n runApp(MaterialApp(\n home: MyAppHome(), // becomes the route named '/'\n routes: <String, WidgetBuilder> {\n '/a': (BuildContext context) => MyPage(title: 'page A'),\n '/b': (BuildContext context) => MyPage(title: 'page B'),\n '/c': (BuildContext context) => MyPage(title: 'page C'),\n },\n ));\n}\n```\n\nTo show a route by name:\n\n```dart\nNavigator.pushNamed(context, '/b');\n```\n\n### Routes can return a value\n\nWhen a route is pushed to ask the user for a value, the value can be\nreturned via the [pop] method's result parameter.\n\nMethods that push a route return a [Future]. The Future resolves when the\nroute is popped and the [Future]'s value is the [pop] method's `result`\nparameter.\n\nFor example if we wanted to ask the user to press 'OK' to confirm an\noperation we could `await` the result of [Navigator.push]:\n\n```dart\nbool value = await Navigator.push(context, MaterialPageRoute<bool>(\n builder: (BuildContext context) {\n return Center(\n child: GestureDetector(\n child: Text('OK'),\n onTap: () { Navigator.pop(context, true); }\n ),\n );\n }\n));\n```\n\nIf the user presses 'OK' then value will be true. If the user backs\nout of the route, for example by pressing the Scaffold's back button,\nthe value will be null.\n\nWhen a route is used to return a value, the route's type parameter must\nmatch the type of [pop]'s result. That's why we've used\n`MaterialPageRoute<bool>` instead of `MaterialPageRoute<void>` or just\n`MaterialPageRoute`. (If you prefer to not specify the types, though, that's\nfine too.)\n\n### Popup routes\n\nRoutes don't have to obscure the entire screen. [PopupRoute]s cover the\nscreen with a [ModalRoute.barrierColor] that can be only partially opaque to\nallow the current screen to show through. Popup routes are \"modal\" because\nthey block input to the widgets below.\n\nThere are functions which create and show popup routes. For\nexample: [showDialog], [showMenu], and [showModalBottomSheet]. These\nfunctions return their pushed route's Future as described above.\nCallers can await the returned value to take an action when the\nroute is popped, or to discover the route's value.\n\nThere are also widgets which create popup routes, like [PopupMenuButton] and\n[DropdownButton]. These widgets create internal subclasses of PopupRoute\nand use the Navigator's push and pop methods to show and dismiss them.\n\n### Custom routes\n\nYou can create your own subclass of one of the widget library route classes\nlike [PopupRoute], [ModalRoute], or [PageRoute], to control the animated\ntransition employed to show the route, the color and behavior of the route's\nmodal barrier, and other aspects of the route.\n\nThe [PageRouteBuilder] class makes it possible to define a custom route\nin terms of callbacks. Here's an example that rotates and fades its child\nwhen the route appears or disappears. This route does not obscure the entire\nscreen because it specifies `opaque: false`, just as a popup route does.\n\n```dart\nNavigator.push(context, PageRouteBuilder(\n opaque: false,\n pageBuilder: (BuildContext context, _, __) {\n return Center(child: Text('My PageRoute'));\n },\n transitionsBuilder: (___, Animation<double> animation, ____, Widget child) {\n return FadeTransition(\n opacity: animation,\n child: RotationTransition(\n turns: Tween<double>(begin: 0.5, end: 1.0).animate(animation),\n child: child,\n ),\n );\n }\n));\n```\n\nThe page route is built in two parts, the \"page\" and the\n\"transitions\". The page becomes a descendant of the child passed to\nthe `transitionsBuilder` function. Typically the page is only built once,\nbecause it doesn't depend on its animation parameters (elided with `_`\nand `__` in this example). The transition is built on every frame\nfor its duration.\n\n### Nesting Navigators\n\nAn app can use more than one Navigator. Nesting one Navigator below\nanother Navigator can be used to create an \"inner journey\" such as tabbed\nnavigation, user registration, store checkout, or other independent journeys\nthat represent a subsection of your overall application.\n\n#### Real World Example\n\nIt is standard practice for iOS apps to use tabbed navigation where each\ntab maintains its own navigation history. Therefore, each tab has its own\n[Navigator], creating a kind of \"parallel navigation.\"\n\nIn addition to the parallel navigation of the tabs, it is still possible to\nlaunch full-screen pages that completely cover the tabs. For example: an\non-boarding flow, or an alert dialog. Therefore, there must exist a \"root\"\n[Navigator] that sits above the tab navigation. As a result, each of the\ntab's [Navigator]s are actually nested [Navigator]s sitting below a single\nroot [Navigator].\n\nThe nested [Navigator]s for tabbed navigation sit in [WidgetApp] and\n[CupertinoTabView], so you don't need to worry about nested [Navigator]s\nin this situation, but it's a real world example where nested [Navigator]s\nare used.\n\nThe following example demonstrates how a nested [Navigator] can be used to\npresent a standalone user registration journey.\n\nEven though this example uses two [Navigator]s to demonstrate nested\n[Navigator]s, a similar result is possible using only a single [Navigator].\n\nRun this example with `flutter run --route=/signup` to start it with\nthe signup flow instead of on the home page.\n\n```dart\nimport 'package:flutter/material.dart';\n```\n\n```dart\nvoid main() => runApp(new MyApp());\n```\n\n```dart\nclass MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Code Sample for Navigator',\n // MaterialApp contains our top-level Navigator\n initialRoute: '/',\n routes: {\n '/': (BuildContext context) => HomePage(),\n '/signup': (BuildContext context) => SignUpPage(),\n },\n );\n }\n}\n\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: Text('Home Page'),\n ),\n );\n }\n}\n\nclass CollectPersonalInfoPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: GestureDetector(\n onTap: () {\n // This moves from the personal info page to the credentials page,\n // replacing this page with that one.\n Navigator.of(context)\n .pushReplacementNamed('signup/choose_credentials');\n },\n child: Container(\n color: Colors.lightBlue,\n alignment: Alignment.center,\n child: Text('Collect Personal Info Page'),\n ),\n ),\n );\n }\n}\n\nclass ChooseCredentialsPage extends StatelessWidget {\n const ChooseCredentialsPage({\n this.onSignupComplete,\n });\n\n final VoidCallback onSignupComplete;\n\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: onSignupComplete,\n child: DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.pinkAccent,\n alignment: Alignment.center,\n child: Text('Choose Credentials Page'),\n ),\n ),\n );\n }\n}\n\nclass SignUpPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n // SignUpPage builds its own Navigator which ends up being a nested\n // Navigator in our app.\n return Navigator(\n initialRoute: 'signup/personal_info',\n onGenerateRoute: (RouteSettings settings) {\n WidgetBuilder builder;\n switch (settings.name) {\n case 'signup/personal_info':\n // Assume CollectPersonalInfoPage collects personal info and then\n // navigates to 'signup/choose_credentials'.\n builder = (BuildContext _) => CollectPersonalInfoPage();\n break;\n case 'signup/choose_credentials':\n // Assume ChooseCredentialsPage collects new credentials and then\n // invokes 'onSignupComplete()'.\n builder = (BuildContext _) => ChooseCredentialsPage(\n onSignupComplete: () {\n // Referencing Navigator.of(context) from here refers to the\n // top level Navigator because SignUpPage is above the\n // nested Navigator that it created. Therefore, this pop()\n // will pop the entire \"sign up\" journey and return to the\n // \"/\" route, AKA HomePage.\n Navigator.of(context).pop();\n },\n );\n break;\n default:\n throw Exception('Invalid route: ${settings.name}');\n }\n return MaterialPageRoute(builder: builder, settings: settings);\n },\n );\n }\n}\n```\n\n[Navigator.of] operates on the nearest ancestor [Navigator] from the given\n[BuildContext]. Be sure to provide a [BuildContext] below the intended\n[Navigator], especially in large [build] methods where nested [Navigator]s\nare created. The [Builder] widget can be used to access a [BuildContext] at\na desired location in the widget subtree.", "detail": "", "kind": 7, "label": "Navigator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverSafeArea", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that insets another sliver by sufficient padding to avoid\nintrusions by the operating system.\n\nFor example, this will indent the sliver by enough to avoid the status bar\nat the top of the screen.\n\nIt will also indent the sliver by the amount necessary to avoid The Notch\non the iPhone X, or other similar creative physical features of the\ndisplay.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\nSee also:\n\n * [SafeArea], for insetting widgets to avoid operating system intrusions.\n * [SliverPadding], for insetting slivers in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SliverSafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Checkbox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design checkbox.\n\nThe checkbox itself does not maintain any state. Instead, when the state of\nthe checkbox changes, the widget calls the [onChanged] callback. Most\nwidgets that use a checkbox will listen for the [onChanged] callback and\nrebuild the checkbox with a new [value] to update the visual appearance of\nthe checkbox.\n\nThe checkbox can optionally display three values - true, false, and null -\nif [tristate] is true. When [value] is null a dash is displayed. By default\n[tristate] is false and the checkbox's [value] must be true or false.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [CheckboxListTile], which combines this widget with a [ListTile] so that\n you can give the checkbox a label.\n * [Switch], a widget with semantics similar to [Checkbox].\n * [Radio], for selecting among a set of explicit values.\n * [Slider], for selecting a value in a range.\n * <https://material.io/design/components/selection-controls.html#checkboxes>\n * <https://material.io/design/components/lists.html#types>", "detail": "", "kind": 7, "label": "Checkbox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlatButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design \"flat button\".\n\nA flat button is a text label displayed on a (zero elevation) [Material]\nwidget that reacts to touches by filling with color.\n\nUse flat buttons on toolbars, in dialogs, or inline with other content but\noffset from that content with padding so that the button's presence is\nobvious. Flat buttons intentionally do not have visible borders and must\ntherefore rely on their position relative to other content for context. In\ndialogs and cards, they should be grouped together in one of the bottom\ncorners. Avoid using flat buttons where they would blend in with other\ncontent, for example in the middle of lists.\n\nMaterial design flat buttons have an all-caps label, some internal padding,\nand some defined dimensions. To have a part of your application be\ninteractive, with ink splashes, without also committing to these stylistic\nchoices, consider using [InkWell] instead.\n\nIf the [onPressed] callback is null, then the button will be disabled,\nwill not react to touch, and will be colored as specified by\nthe [disabledColor] property instead of the [color] property. If you are\ntrying to change the button's [color] and it is not having any effect, check\nthat you are passing a non-null [onPressed] handler.\n\nFlat buttons have a minimum size of 88.0 by 36.0 which can be overridden\nwith [ButtonTheme].\n\nThe [clipBehavior] argument must not be null.\n\n\nThis example shows a simple [FlatButton].\n\n```dart\nFlatButton(\n onPressed: () {\n /*...*/\n },\n child: Text(\n \"Flat Button\",\n ),\n)\n```\n\n\nThis example shows a [FlatButton] that is normally white-on-blue,\nwith splashes rendered in a different shade of blue.\nIt turns black-on-grey when disabled.\nThe button has 8px of padding on each side, and the text is 20px high.\n\n```dart\nFlatButton(\n color: Colors.blue,\n textColor: Colors.white,\n disabledColor: Colors.grey,\n disabledTextColor: Colors.black,\n padding: EdgeInsets.all(8.0),\n splashColor: Colors.blueAccent,\n onPressed: () {\n /*...*/\n },\n child: Text(\n \"Flat Button\",\n style: TextStyle(fontSize: 20.0),\n ),\n)\n```\n\nSee also:\n\n * [RaisedButton], a filled button whose material elevates when pressed.\n * [DropdownButton], which offers the user a choice of a number of options.\n * [SimpleDialogOption], which is used in [SimpleDialog]s.\n * [IconButton], to create buttons that just contain icons.\n * [InkWell], which implements the ink splash part of a flat button.\n * [RawMaterialButton], the widget this widget is based on.\n * <https://material.io/design/components/buttons.html>", "detail": "", "kind": 7, "label": "FlatButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "RenderObjectWidgets provide the configuration for [RenderObjectElement]s,\nwhich wrap [RenderObject]s, which provide the actual rendering of the\napplication.", "detail": "", "kind": 7, "label": "RenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that detects gestures described by the given gesture\nfactories.\n\nFor common gestures, use a [GestureRecognizer].\n[RawGestureDetector] is useful primarily when developing your\nown gesture recognizers.\n\nConfiguring the gesture recognizers requires a carefully constructed map, as\ndescribed in [gestures] and as shown in the example below.\n\n\nThis example shows how to hook up a [TapGestureRecognizer]. It assumes that\nthe code is being used inside a [State] object with a `_last` field that is\nthen displayed as the child of the gesture detector.\n\n```dart\nRawGestureDetector(\n gestures: <Type, GestureRecognizerFactory>{\n TapGestureRecognizer: GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(\n () => TapGestureRecognizer(),\n (TapGestureRecognizer instance) {\n instance\n ..onTapDown = (TapDownDetails details) { setState(() { _last = 'down'; }); }\n ..onTapUp = (TapUpDetails details) { setState(() { _last = 'up'; }); }\n ..onTap = () { setState(() { _last = 'tap'; }); }\n ..onTapCancel = () { setState(() { _last = 'cancel'; }); };\n },\n ),\n },\n child: Container(width: 300.0, height: 300.0, color: Colors.yellow, child: Text(_last)),\n)\n```\n\nSee also:\n\n * [GestureDetector], a less flexible but much simpler widget that does the same thing.\n * [Listener], a widget that reports raw pointer events.\n * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.", "detail": "", "kind": 7, "label": "RawGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedModeBanner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a [Banner] saying \"DEBUG\" when running in checked mode.\n[MaterialApp] builds one of these by default.\nDoes nothing in release mode.", "detail": "", "kind": 7, "label": "CheckedModeBanner" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Embeds an iOS view in the Widget hierarchy.\n\n\nEmbedding iOS views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\n\n\n\nConstruction of UIViews is done asynchronously, before the UIView is ready this widget paints\nnothing while maintaining the same layout constraints.", "detail": "", "kind": 7, "label": "UiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state for a scrolling container that animates items when they are\ninserted or removed.\n\nWhen an item is inserted with [insertItem] an animation begins running. The\nanimation is passed to [AnimatedList.itemBuilder] whenever the item's widget\nis needed.\n\nWhen an item is removed with [removeItem] its animation is reversed.\nThe removed item's animation is passed to the [removeItem] builder\nparameter.\n\nAn app that needs to insert or remove items in response to an event\ncan refer to the [AnimatedList]'s state with a global key:\n\n```dart\nGlobalKey<AnimatedListState> listKey = GlobalKey<AnimatedListState>();\n...\nAnimatedList(key: listKey, ...);\n...\nlistKey.currentState.insert(123);\n```\n\n[AnimatedList] item input handlers can also refer to their [AnimatedListState]\nwith the static [AnimatedList.of] method.", "detail": "", "kind": 7, "label": "AnimatedListState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the layout and behavior of a [BottomNavigationBar].\n\nSee also:\n\n * [BottomNavigationBar]\n * [BottomNavigationBarItem]\n * <https://material.io/design/components/bottom-navigation.html#specs>", "detail": "", "kind": 13, "label": "BottomNavigationBarType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialRectCenterArcTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that interpolates a [Rect] by moving it along a circular arc from\n[begin]'s [Rect.center] to [end]'s [Rect.center] while interpolating the\nrectangle's width and height.\n\nThe arc that defines that center of the interpolated rectangle as it morphs\nfrom [begin] to [end] is a [MaterialPointArcTween].\n\nSee also:\n\n * [MaterialRectArcTween], A [Tween] that interpolates a [Rect] by having\n its opposite corners follow circular arcs.\n * [Tween], for a discussion on how to use interpolation objects.\n * [MaterialPointArcTween], the analogue for [Offset] interpolation.\n * [RectTween], which does a linear rectangle interpolation.\n * [Hero.createRectTween], which can be used to specify the tween that defines\n a hero's path.", "detail": "", "kind": 7, "label": "MaterialRectCenterArcTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dismissible", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that can be dismissed by dragging in the indicated [direction].\n\nDragging or flinging this widget in the [DismissDirection] causes the child\nto slide out of view. Following the slide animation, if [resizeDuration] is\nnon-null, the Dismissible widget animates its height (or width, whichever is\nperpendicular to the dismiss direction) to zero over the [resizeDuration].\n\n\nBackgrounds can be used to implement the \"leave-behind\" idiom. If a background\nis specified it is stacked behind the Dismissible's child and is exposed when\nthe child moves.\n\nThe widget calls the [onDismissed] callback either after its size has\ncollapsed to zero (if [resizeDuration] is non-null) or immediately after\nthe slide animation (if [resizeDuration] is null). If the Dismissible is a\nlist item, it must have a key that distinguishes it from the other items and\nits [onDismissed] callback must remove the item from the list.", "detail": "", "kind": 7, "label": "Dismissible" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionHandleType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Which type of selection handle to be displayed.\n\nWith mixed-direction text, both handles may be the same type. Examples:\n\n* LTR text: 'the <quick brown> fox':\n\n The '<' is drawn with the [left] type, the '>' with the [right]\n\n* RTL text: 'XOF <NWORB KCIUQ> EHT':\n\n Same as above.\n\n* mixed text: '<the NWOR<B KCIUQ fox'\n\n Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn\n with the [left] type.\n\nSee also:\n\n * [TextDirection], which discusses left-to-right and right-to-left text in\n more detail.", "detail": "", "kind": 13, "label": "TextSelectionHandleType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stack", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that positions its children relative to the edges of its box.\n\nThis class is useful if you want to overlap several children in a simple\nway, for example having some text and an image, overlaid with a gradient and\na button attached to the bottom.\n\nEach child of a [Stack] widget is either _positioned_ or _non-positioned_.\nPositioned children are those wrapped in a [Positioned] widget that has at\nleast one non-null property. The stack sizes itself to contain all the\nnon-positioned children, which are positioned according to [alignment]\n(which defaults to the top-left corner in left-to-right environments and the\ntop-right corner in right-to-left environments). The positioned children are\nthen placed relative to the stack according to their top, right, bottom, and\nleft properties.\n\nThe stack paints its children in order with the first child being at the\nbottom. If you want to change the order in which the children paint, you\ncan rebuild the stack with the children in the new order. If you reorder\nthe children in this way, consider giving the children non-null keys.\nThese keys will cause the framework to move the underlying objects for\nthe children to their new locations rather than recreate them at their\nnew location.\n\nFor more details about the stack layout algorithm, see [RenderStack].\n\nIf you want to lay a number of children out in a particular pattern, or if\nyou want to make a custom layout manager, you probably want to use\n[CustomMultiChildLayout] instead. In particular, when using a [Stack] you\ncan't position children relative to their size or the stack's own size.\n\n\nUsing a [Stack] you can position widgets over one another.\n\n```dart\nStack(\n children: <Widget>[\n Container(\n width: 100,\n height: 100,\n color: Colors.red,\n ),\n Container(\n width: 90,\n height: 90,\n color: Colors.green,\n ),\n Container(\n width: 80,\n height: 80,\n color: Colors.blue,\n ),\n ],\n)\n```\n\n\nThis example shows how [Stack] can be used to enhance text visibility\nby adding gradient backdrops.\n\n```dart\nSizedBox(\n width: 250,\n height: 250,\n child: Stack(\n children: <Widget>[\n Container(\n width: 250,\n height: 250,\n color: Colors.white,\n ),\n Container(\n padding: EdgeInsets.all(5.0),\n alignment: Alignment.bottomCenter,\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: <Color>[\n Colors.black.withAlpha(0),\n Colors.black12,\n Colors.black45\n ],\n ),\n ),\n child: Text(\n \"Foreground Text\",\n style: TextStyle(color: Colors.white, fontSize: 20.0),\n ),\n ),\n ],\n ),\n)\n```\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * [Flow], which provides paint-time control of its children using transform\n matrices.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Stack" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DayPicker", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays the days of a given month and allows choosing a day.\n\nThe days are arranged in a rectangular grid with one column for each day of\nthe week.\n\nThe day picker widget is rarely used directly. Instead, consider using\n[showDatePicker], which creates a date picker dialog.\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.\n * [showTimePicker], which shows a dialog that contains a material design\n time picker.", "detail": "", "kind": 7, "label": "DayPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that annotates the child semantics with an index.\n\nSemantic indexes are used by TalkBack/Voiceover to make announcements about\nthe current scroll state. Certain widgets like the [ListView] will\nautomatically provide a child index for building semantics. A user may wish\nto manually provide semantic indexes if not all child of the scrollable\ncontribute semantics.\n\n\nThe example below handles spacers in a scrollable that don't contribute\nsemantics. The automatic indexes would give the spaces a semantic index,\ncausing scroll announcements to erroneously state that there are four items\nvisible.\n\n```dart\nListView(\n addSemanticIndexes: false,\n semanticChildCount: 2,\n children: const <Widget>[\n IndexedSemantics(index: 0, child: Text('First')),\n Spacer(),\n IndexedSemantics(index: 1, child: Text('Second')),\n Spacer(),\n ],\n)\n```\n\nSee also:\n\n * [CustomScrollView], for an explanation of index semantics.", "detail": "", "kind": 7, "label": "IndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridPaper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that draws a rectilinear grid of lines one pixel wide.\n\nUseful with a [Stack] for visualizing your layout along a grid.\n\nThe grid's origin (where the first primary horizontal line and the first\nprimary vertical line intersect) is at the top left of the widget.\n\nThe grid is drawn over the [child] widget.", "detail": "", "kind": 7, "label": "GridPaper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directionality", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that determines the ambient directionality of text and\ntext-direction-sensitive render objects.\n\nFor example, [Padding] depends on the [Directionality] to resolve\n[EdgeInsetsDirectional] objects into absolute [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "Directionality" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that paints a [Decoration] either before or after its child paints.\n\n[Container] insets its child by the widths of the borders; this widget does\nnot.\n\nCommonly used with [BoxDecoration].\n\nThe [child] is not clipped. To clip a child to the shape of a particular\n[ShapeDecoration], consider using a [ClipPath] widget.\n\n\nThis sample shows a radial gradient that draws a moon on a night sky:\n\n```dart\nDecoratedBox(\n decoration: BoxDecoration(\n gradient: RadialGradient(\n center: const Alignment(-0.5, -0.6),\n radius: 0.15,\n colors: <Color>[\n const Color(0xFFEEEEEE),\n const Color(0xFF111133),\n ],\n stops: <double>[0.9, 1.0],\n ),\n ),\n)\n```\n\nSee also:\n\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * [DecoratedBoxTransition], the version of this class that animates on the\n [decoration] property.\n * [Decoration], which you can extend to provide other effects with\n [DecoratedBox].\n * [CustomPaint], another way to draw custom effects from the widget layer.", "detail": "", "kind": 7, "label": "DecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TappableChipAttributes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be tapped.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "TappableChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelRadio", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An expansion panel that allows for radio-like functionality.\nThis means that at any given time, at most, one [ExpansionPanelRadio]\ncan remain expanded.\n\nA unique identifier [value] must be assigned to each panel.\nThis identifier allows the [ExpansionPanelList] to determine\nwhich [ExpansionPanelRadio] instance should be expanded.\n\nSee [ExpansionPanelList.radio] for a sample implementation.", "detail": "", "kind": 7, "label": "ExpansionPanelRadio" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Title", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that describes this app in the operating system.", "detail": "", "kind": 7, "label": "Title" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProgressIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for material design progress indicators.\n\nThis widget cannot be instantiated directly. For a linear progress\nindicator, see [LinearProgressIndicator]. For a circular progress indicator,\nsee [CircularProgressIndicator].\n\nSee also:\n\n * <https://material.io/design/components/progress-indicators.html>", "detail": "", "kind": 7, "label": "ProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's orientation\n(distinct from the device orientation).\n\nSee also:\n\n * [LayoutBuilder], which exposes the complete constraints, not just the\n orientation.\n * [CustomSingleChildLayout], which positions its child during layout.\n * [CustomMultiChildLayout], with which you can define the precise layout\n of a list of children during the layout phase.\n * [MediaQueryData.orientation], which exposes whether the device is in\n landscape or portrait mode.", "detail": "", "kind": 7, "label": "OrientationBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expanded", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that expands a child of a [Row], [Column], or [Flex]\nso that the child fills the available space.\n\nUsing an [Expanded] widget makes a child of a [Row], [Column], or [Flex]\nexpand to fill the available space along the main axis (e.g., horizontally for\na [Row] or vertically for a [Column]). If multiple children are expanded,\nthe available space is divided among them according to the [flex] factor.\n\nAn [Expanded] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Expanded] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\n\nThis example shows how to use an [Expanded] widget in a [Column] so that\nit's middle child, a [Container] here, expands to fill the space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Column Sample'),\n ),\n body: Center(\n child: Column(\n children: <Widget>[\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n Expanded(\n child: Container(\n color: Colors.blue,\n width: 100,\n ),\n ),\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n ],\n ),\n ),\n );\n}\n```\n\nThis example shows how to use an [Expanded] widget in a [Row] with multiple\nchildren expanded, utilizing the [flex] factor to prioritize available space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Row Sample'),\n ),\n body: Center(\n child: Row(\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n Container(\n color: Colors.blue,\n height: 100,\n width: 50,\n ),\n Expanded(\n flex: 1,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Flexible], which does not force the child to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Expanded" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DayPeriod", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether the [TimeOfDay] is before or after noon.", "detail": "", "kind": 13, "label": "DayPeriod" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextFormField", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [FormField] that contains a [TextField].\n\nThis is a convenience widget that wraps a [TextField] widget in a\n[FormField].\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nWhen a [controller] is specified, its [TextEditingController.text]\ndefines the [initialValue]. If this [FormField] is part of a scrolling\ncontainer that lazily constructs its children, like a [ListView] or a\n[CustomScrollView], then a [controller] should be specified.\nThe controller's lifetime should be managed by a stateful widget ancestor\nof the scrolling container.\n\nIf a [controller] is not specified, [initialValue] can be used to give\nthe automatically generated controller an initial value.\n\nFor a documentation about the various parameters, see [TextField].\n\n\nCreates a [TextFormField] with an [InputDecoration] and validator function.\n\n```dart\nTextFormField(\n decoration: const InputDecoration(\n icon: Icon(Icons.person),\n hintText: 'What do people call you?',\n labelText: 'Name *',\n ),\n onSaved: (String value) {\n // This optional block of code can be used to run\n // code when the user saves the form.\n },\n validator: (String value) {\n return value.contains('@') ? 'Do not use the @ char.' : null;\n },\n)\n```\n\nSee also:\n\n * <https://material.io/design/components/text-fields.html>\n * [TextField], which is the underlying text field without the [Form]\n integration.\n * [InputDecorator], which shows the labels and other visual elements that\n surround the actual text editing widget.", "detail": "", "kind": 7, "label": "TextFormField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BallisticScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An activity that animates a scroll view based on a physics [Simulation].\n\nA [BallisticScrollActivity] is typically used when the user lifts their\nfinger off the screen to continue the scrolling gesture with the current velocity.\n\n[BallisticScrollActivity] is also used to restore a scroll view to a valid\nscroll offset when the geometry of the scroll view changes. In these\nsituations, the [Simulation] typically starts with a zero velocity.\n\nSee also:\n\n * [DrivenScrollActivity], which animates a scroll view based on a set of\n animation parameters.", "detail": "", "kind": 7, "label": "BallisticScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverAppBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design app bar that integrates with a [CustomScrollView].\n\nAn app bar consists of a toolbar and potentially other widgets, such as a\n[TabBar] and a [FlexibleSpaceBar]. App bars typically expose one or more\ncommon actions with [IconButton]s which are optionally followed by a\n[PopupMenuButton] for less common operations.\n\n\nSliver app bars are typically used as the first child of a\n[CustomScrollView], which lets the app bar integrate with the scroll view so\nthat it can vary in height according to the scroll offset or float above the\nother content in the scroll view. For a fixed-height app bar at the top of\nthe screen see [AppBar], which is used in the [Scaffold.appBar] slot.\n\nThe AppBar displays the toolbar widgets, [leading], [title], and\n[actions], above the [bottom] (if any). If a [flexibleSpace] widget is\nspecified then it is stacked behind the toolbar and the bottom widget.\n\n\nThis is an example that could be included in a [CustomScrollView]'s\n[CustomScrollView.slivers] list:\n\n```dart\nSliverAppBar(\n expandedHeight: 150.0,\n flexibleSpace: const FlexibleSpaceBar(\n title: Text('Available seats'),\n ),\n actions: <Widget>[\n IconButton(\n icon: const Icon(Icons.add_circle),\n tooltip: 'Add new entry',\n onPressed: () { /* ... */ },\n ),\n ]\n)\n```\n\n## Animated Examples\n\nThe following animations show how app bars with different configurations\nbehave when a user scrolls up and then down again.\n\n* App bar with [floating]: false, [pinned]: false, [snap]: false:\n\n* App bar with [floating]: true, [pinned]: false, [snap]: false:\n\n* App bar with [floating]: true, [pinned]: false, [snap]: true:\n\n* App bar with [floating]: true, [pinned]: true, [snap]: false:\n\n* App bar with [floating]: true, [pinned]: true, [snap]: true:\n\n* App bar with [floating]: false, [pinned]: true, [snap]: false:\n\nThe property [snap] can only be set to true if [floating] is also true.\n\nSee also:\n\n * [CustomScrollView], which integrates the [SliverAppBar] into its\n scrolling.\n * [AppBar], which is a fixed-height app bar for use in [Scaffold.appBar].\n * [TabBar], which is typically placed in the [bottom] slot of the [AppBar]\n if the screen has multiple pages arranged in tabs.\n * [IconButton], which is used with [actions] to show buttons on the app bar.\n * [PopupMenuButton], to show a popup menu on the app bar, via [actions].\n * [FlexibleSpaceBar], which is used with [flexibleSpace] when the app bar\n can expand and collapse.\n * <https://material.io/design/components/app-bars-top.html>", "detail": "", "kind": 7, "label": "SliverAppBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenVisitor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks passed to [AnimatedWidgetBaseState.forEachTween].", "detail": "(Tween<T> tween, T targetValue, TweenConstructor<T> constructor) → Tween<T>", "kind": 7, "label": "TweenVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An action the user has requested the text input control to perform.\n\nEach action represents a logical meaning, and also configures the soft\nkeyboard to display a certain kind of action button. The visual appearance\nof the action button might differ between versions of the same OS.\n\nDespite the logical meaning of each action, choosing a particular\n[TextInputAction] does not necessarily cause any specific behavior to\nhappen. It is up to the developer to ensure that the behavior that occurs\nwhen an action button is pressed is appropriate for the action button chosen.\n\nFor example: If the user presses the keyboard action button on iOS when it\nreads \"Emergency Call\", the result should not be a focus change to the next\nTextField. This behavior is not logically appropriate for a button that says\n\"Emergency Call\".\n\nSee [EditableText] for more information about customizing action button\nbehavior.\n\nMost [TextInputAction]s are supported equally by both Android and iOS.\nHowever, there is not a complete, direct mapping between Android's IME input\ntypes and iOS's keyboard return types. Therefore, some [TextInputAction]s\nare inappropriate for one of the platforms. If a developer chooses an\ninappropriate [TextInputAction] when running in debug mode, an error will be\nthrown. If the same thing is done in release mode, then instead of sending\nthe inappropriate value, Android will use \"unspecified\" on the platform\nside and iOS will use \"default\" on the platform side.\n\nSee also:\n\n * [TextInput], which configures the platform's keyboard setup.\n * [EditableText], which invokes callbacks when the action button is pressed.", "detail": "", "kind": 13, "label": "TextInputAction" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two relative rects.\n\nThis class specializes the interpolation of [Tween<RelativeRect>] to\nuse [RelativeRect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RelativeRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonBarLayoutBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonTheme] and [ButtonThemeData] to define how the button bar\nshould size itself with either constraints or internal padding.", "detail": "", "kind": 13, "label": "ButtonBarLayoutBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkResponse", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An area of a [Material] that responds to touch. Has a configurable shape and\ncan be configured to clip splashes that extend outside its bounds or not.\n\nFor a variant of this widget that is specialized for rectangular areas that\nalways clip splashes, see [InkWell].\n\nAn [InkResponse] widget does two things when responding to a tap:\n\n * It starts to animate a _highlight_. The shape of the highlight is\n determined by [highlightShape]. If it is a [BoxShape.circle], the\n default, then the highlight is a circle of fixed size centered in the\n [InkResponse]. If it is [BoxShape.rectangle], then the highlight is a box\n the size of the [InkResponse] itself, unless [getRectCallback] is\n provided, in which case that callback defines the rectangle. The color of\n the highlight is set by [highlightColor].\n\n * Simultaneously, it starts to animate a _splash_. This is a growing circle\n initially centered on the tap location. If this is a [containedInkWell],\n the splash grows to the [radius] while remaining centered at the tap\n location. Otherwise, the splash migrates to the center of the box as it\n grows.\n\nThe following two diagrams show how [InkResponse] looks when tapped if the\n[highlightShape] is [BoxShape.circle] (the default) and [containedInkWell]\nis false (also the default).\n\nThe first diagram shows how it looks if the [InkResponse] is relatively\nlarge:\n\n![The highlight is a disc centered in the box, smaller than the child widget.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_response_large.png)\n\nThe second diagram shows how it looks if the [InkResponse] is small:\n\n![The highlight is a disc overflowing the box, centered on the child.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_response_small.png)\n\nThe main thing to notice from these diagrams is that the splashes happily\nexceed the bounds of the widget (because [containedInkWell] is false).\n\nThe following diagram shows the effect when the [InkResponse] has a\n[highlightShape] of [BoxShape.rectangle] with [containedInkWell] set to\ntrue. These are the values used by [InkWell].\n\n![The highlight is a rectangle the size of the box.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_well.png)\n\nThe [InkResponse] widget must have a [Material] widget as an ancestor. The\n[Material] widget is where the ink reactions are actually painted. This\nmatches the material design premise wherein the [Material] is what is\nactually reacting to touches by spreading ink.\n\nIf a Widget uses this class directly, it should include the following line\nat the top of its build function to call [debugCheckHasMaterial]:\n\n```dart\nassert(debugCheckHasMaterial(context));\n```\n\n## Troubleshooting\n\n### The ink splashes aren't visible!\n\nIf there is an opaque graphic, e.g. painted using a [Container], [Image], or\n[DecoratedBox], between the [Material] widget and the [InkResponse] widget,\nthen the splash won't be visible because it will be under the opaque graphic.\nThis is because ink splashes draw on the underlying [Material] itself, as\nif the ink was spreading inside the material.\n\nThe [Ink] widget can be used as a replacement for [Image], [Container], or\n[DecoratedBox] to ensure that the image or decoration also paints in the\n[Material] itself, below the ink.\n\nIf this is not possible for some reason, e.g. because you are using an\nopaque [CustomPaint] widget, alternatively consider using a second\n[Material] above the opaque widget but below the [InkResponse] (as an\nancestor to the ink response). The [MaterialType.transparency] material\nkind can be used for this purpose.\n\nSee also:\n\n * [GestureDetector], for listening for gestures without ink splashes.\n * [RaisedButton] and [FlatButton], two kinds of buttons in material design.\n * [IconButton], which combines [InkResponse] with an [Icon].", "detail": "", "kind": 7, "label": "InkResponse" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that has mutable state.\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\nA stateful widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\nStateful widgets are useful when the part of the user interface you are\ndescribing can change dynamically, e.g. due to having an internal\nclock-driven state, or depending on some system state. For compositions that\ndepend only on the configuration information in the object itself and the\n[BuildContext] in which the widget is inflated, consider using\n[StatelessWidget].\n\n\n[StatefulWidget] instances themselves are immutable and store their mutable\nstate either in separate [State] objects that are created by the\n[createState] method, or in objects to which that [State] subscribes, for\nexample [Stream] or [ChangeNotifier] objects, to which references are stored\nin final fields on the [StatefulWidget] itself.\n\nThe framework calls [createState] whenever it inflates a\n[StatefulWidget], which means that multiple [State] objects might be\nassociated with the same [StatefulWidget] if that widget has been inserted\ninto the tree in multiple places. Similarly, if a [StatefulWidget] is\nremoved from the tree and later inserted in to the tree again, the framework\nwill call [createState] again to create a fresh [State] object, simplifying\nthe lifecycle of [State] objects.\n\nA [StatefulWidget] keeps the same [State] object when moving from one\nlocation in the tree to another if its creator used a [GlobalKey] for its\n[key]. Because a widget with a [GlobalKey] can be used in at most one\nlocation in the tree, a widget that uses a [GlobalKey] has at most one\nassociated element. The framework takes advantage of this property when\nmoving a widget with a global key from one location in the tree to another\nby grafting the (unique) subtree associated with that widget from the old\nlocation to the new location (instead of recreating the subtree at the new\nlocation). The [State] objects associated with [StatefulWidget] are grafted\nalong with the rest of the subtree, which means the [State] object is reused\n(instead of being recreated) in the new location. However, in order to be\neligible for grafting, the widget must be inserted into the new location in\nthe same animation frame in which it was removed from the old location.\n\n## Performance considerations\n\nThere are two primary categories of [StatefulWidget]s.\n\nThe first is one which allocates resources in [State.initState] and disposes\nof them in [State.dispose], but which does not depend on [InheritedWidget]s\nor call [State.setState]. Such widgets are commonly used at the root of an\napplication or page, and communicate with subwidgets via [ChangeNotifier]s,\n[Stream]s, or other such objects. Stateful widgets following such a pattern\nare relatively cheap (in terms of CPU and GPU cycles), because they are\nbuilt once then never update. They can, therefore, have somewhat complicated\nand deep build methods.\n\nThe second category is widgets that use [State.setState] or depend on\n[InheritedWidget]s. These will typically rebuild many times during the\napplication's lifetime, and it is therefore important to minimize the impact\nof rebuilding such a widget. (They may also use [State.initState] or\n[State.didChangeDependencies] and allocate resources, but the important part\nis that they rebuild.)\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateful widget:\n\n * Push the state to the leaves. For example, if your page has a ticking\n clock, rather than putting the state at the top of the page and\n rebuilding the entire page each time the clock ticks, create a dedicated\n clock widget that only updates itself.\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. Ideally, a stateful widget would only create a\n single widget, and that widget would be a [RenderObjectWidget].\n (Obviously this isn't always practical, but the closer a widget gets to\n this ideal, the more efficient it will be.)\n\n * If a subtree does not change, cache the widget that represents that\n subtree and re-use it each time it can be used. It is massively more\n efficient for a widget to be re-used than for a new (but\n identically-configured) widget to be created. Factoring out the stateful\n part into a widget that takes a child argument is a common way of doing\n this.\n\n * Use `const` widgets where possible. (This is equivalent to caching a\n widget and re-using it.)\n\n * Avoid changing the depth of any created subtrees or changing the type of\n any widgets in the subtree. For example, rather than returning either the\n child or the child wrapped in an [IgnorePointer], always wrap the child\n widget in an [IgnorePointer] and control the [IgnorePointer.ignoring]\n property. This is because changing the depth of the subtree requires\n rebuilding, laying out, and painting the entire subtree, whereas just\n changing the property will require the least possible change to the\n render tree (in the case of [IgnorePointer], for example, no layout or\n repaint is necessary at all).\n\n * If the depth must be changed for some reason, consider wrapping the\n common parts of the subtrees in widgets that have a [GlobalKey] that\n remains consistent for the life of the stateful widget. (The\n [KeyedSubtree] widget may be useful for this purpose if no other widget\n can conveniently be assigned the key.)\n\n\nThis is a skeleton of a stateful widget subclass called `YellowBird`.\n\nIn this example. the [State] has no actual state. State is normally\nrepresented as private member fields. Also, normally widgets have more\nconstructor arguments, each of which corresponds to a `final` property.\n\n```dart\nclass YellowBird extends StatefulWidget {\n const YellowBird({ Key key }) : super(key: key);\n\n @override\n _YellowBirdState createState() => _YellowBirdState();\n}\n\nclass _YellowBirdState extends State<YellowBird> {\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFFFFE306));\n }\n}\n```\n\nThis example shows the more generic widget `Bird` which can be given a\ncolor and a child, and which has some internal state with a method that\ncan be called to mutate it:\n\n```dart\nclass Bird extends StatefulWidget {\n const Bird({\n Key key,\n this.color = const Color(0xFFFFE306),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n _BirdState createState() => _BirdState();\n}\n\nclass _BirdState extends State<Bird> {\n double _size = 1.0;\n\n void grow() {\n setState(() { _size += 0.1; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(\n color: widget.color,\n transform: Matrix4.diagonal3Values(_size, _size, 1.0),\n child: widget.child,\n );\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [State], where the logic behind a [StatefulWidget] is hosted.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatefulWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildListDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using an\nexplicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for slivers.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. Rather than receiving\ntheir children as an explicit [List], they receive their children using a\n[SliverChildDelegate].\n\nIt's uncommon to subclass [SliverChildDelegate]. Instead, consider using one\nof the existing subclasses that provide adaptors to builder callbacks or\nexplicit child lists.\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as in the\ncase of [SliverChildListDelegate]) or lazily provided ones (such as in the\ncase of [SliverChildBuilderDelegate]).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree, states\nand render objects are destroyed. A new child at the same position in the\nsliver will be lazily recreated along with new elements, states and render\nobjects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the sliver child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the sliver child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child widget\n subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the sliver child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the sliver keeps the child's\n render object (and by extension, its associated elements and states) in a\n cache list instead of destroying them. When scrolled back into view, the\n render object is repainted as-is (if it wasn't marked dirty in the\n interim).\n\n This only works if the [SliverChildDelegate] subclasses don't wrap the\n child widget subtree with other widgets such as [AutomaticKeepAlive] and\n [RepaintBoundary] via `addAutomaticKeepAlives` and\n `addRepaintBoundaries`.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default in\n [SliverChildListDelegate] or [SliverChildListDelegate]). Instead of\n unconditionally caching the child element subtree when scrolling\n off-screen like [KeepAlive], [AutomaticKeepAlive] can let whether to\n cache the subtree be determined by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its sliver child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the sliver child element subtree will be\n destroyed when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive by\n using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.", "detail": "", "kind": 7, "label": "SliverChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollIndicatorNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that an [GlowingOverscrollIndicator] will start showing an\noverscroll indication.\n\nTo prevent the indicator from showing the indication, call [disallowGlow] on\nthe notification.\n\nSee also:\n\n * [GlowingOverscrollIndicator], which generates this type of notification.", "detail": "", "kind": 7, "label": "OverscrollIndicatorNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OpenUpwardsPageTransitionsBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a vertical [MaterialPageRoute] page\ntransition animation that looks like the default page transition\nused on Android P.\n\nSee also:\n\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "OpenUpwardsPageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButtonAnimator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provider of animations to move the [FloatingActionButton] between [FloatingActionButtonLocation]s.\n\nThe [Scaffold] uses [Scaffold.floatingActionButtonAnimator] to define:\n\n * The [Offset] of the [FloatingActionButton] between the old and new\n [FloatingActionButtonLocation]s as part of the transition animation.\n * An [Animation] to scale the [FloatingActionButton] during the transition.\n * An [Animation] to rotate the [FloatingActionButton] during the transition.\n * Where to start a new animation from if an animation is interrupted.\n\nSee also:\n\n * [FloatingActionButton], which is a circular button typically shown in the\n bottom right corner of the app.\n * [FloatingActionButtonLocation], which the [Scaffold] uses to place the\n [Scaffold.floatingActionButton] within the [Scaffold]'s layout.", "detail": "", "kind": 7, "label": "FloatingActionButtonAnimator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that supports the Material \"swipe to refresh\" idiom.\n\nWhen the child's [Scrollable] descendant overscrolls, an animated circular\nprogress indicator is faded into view. When the scroll ends, if the\nindicator has been dragged far enough for it to become completely opaque,\nthe [onRefresh] callback is called. The callback is expected to update the\nscrollable's contents and then complete the [Future] it returns. The refresh\nindicator disappears after the callback's [Future] has completed.\n\nIf the [Scrollable] might not have enough content to overscroll, consider\nsettings its `physics` property to [AlwaysScrollableScrollPhysics]:\n\n```dart\nListView(\n physics: const AlwaysScrollableScrollPhysics(),\n children: ...\n```\n\nUsing [AlwaysScrollableScrollPhysics] will ensure that the scroll view is\nalways scrollable and, therefore, can trigger the [RefreshIndicator].\n\nA [RefreshIndicator] can only be used with a vertical scroll view.\n\nSee also:\n\n * <https://material.io/design/platform-guidance/android-swipe-to-refresh.html>\n * [RefreshIndicatorState], can be used to programmatically show the refresh indicator.\n * [RefreshProgressIndicator], widget used by [RefreshIndicator] to show\n the inner circular progress spinner during refreshes.\n * [CupertinoSliverRefreshControl], an iOS equivalent of the pull-to-refresh pattern.\n Must be used as a sliver inside a [CustomScrollView] instead of wrapping\n around a [ScrollView] because it's a part of the scrollable instead of\n being overlaid on top of it.", "detail": "", "kind": 7, "label": "RefreshIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReorderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The callback used by [ReorderableListView] to move an item to a new\nposition in a list.\n\nImplementations should remove the corresponding list item at [oldIndex]\nand reinsert it at [newIndex].\n\nIf [oldIndex] is before [newIndex], removing the item at [oldIndex] from the\nlist will reduce the list's length by one. Implementations used by\n[ReorderableListView] will need to account for this when inserting before\n[newIndex].\n\n\n```dart\nfinal List<MyDataObject> backingList = <MyDataObject>[/* ... */];\n\nvoid handleReorder(int oldIndex, int newIndex) {\n if (oldIndex < newIndex) {\n // removing the item at oldIndex will shorten the list by 1.\n newIndex -= 1;\n }\n final MyDataObject element = backingList.removeAt(oldIndex);\n backingList.insert(newIndex, element);\n}\n```", "detail": "(int oldIndex, int newIndex) → void", "kind": 7, "label": "ReorderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollbarPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [CustomPainter] for painting scrollbars.\n\nUnlike [CustomPainter]s that subclasses [CustomPainter] and only repaint\nwhen [shouldRepaint] returns true (which requires this [CustomPainter] to\nbe rebuilt), this painter has the added optimization of repainting and not\nrebuilding when:\n\n * the scroll position changes; and\n * when the scrollbar fades away.\n\nCalling [update] with the new [ScrollMetrics] will repaint the new scrollbar\nposition.\n\nUpdating the value on the provided [fadeoutOpacityAnimation] will repaint\nwith the new opacity.\n\nYou must call [dispose] on this [ScrollbarPainter] when it's no longer used.\n\nSee also:\n\n * [Scrollbar] for a widget showing a scrollbar around a [Scrollable] in the\n Material Design style.\n * [CupertinoScrollbar] for a widget showing a scrollbar around a\n [Scrollable] in the iOS style.", "detail": "", "kind": 7, "label": "ScrollbarPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeUpwardsPageTransitionsBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a default [MaterialPageRoute] page\ntransition animation.\n\nThe default animation fades the new page in while translating it upwards,\nstarting from about 25% below the top of the screen.\n\nSee also:\n\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "FadeUpwardsPageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design widget that displays a horizontal row of tabs.\n\nTypically created as the [AppBar.bottom] part of an [AppBar] and in\nconjunction with a [TabBarView].\n\nIf a [TabController] is not provided, then a [DefaultTabController] ancestor\nmust be provided instead. The tab controller's [TabController.length] must\nequal the length of the [tabs] list.\n\nRequires one of its ancestors to be a [Material] widget.\n\nUses values from [TabBarTheme] if it is set in the current context.\n\nSee also:\n\n * [TabBarView], which displays page views that correspond to each tab.", "detail": "", "kind": 7, "label": "TabBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListItemBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedList].", "detail": "(BuildContext context, int index, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionControls", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for building the selection UI, to be provided by the\nimplementor of the toolbar widget.\n\nOverride text operations such as [handleCut] if needed.", "detail": "", "kind": 7, "label": "TextSelectionControls" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the opacity of a widget.\n\nFor a widget that automatically animates between the sizes of two children,\nfading between them, see [AnimatedCrossFade].\n\n\nHere's an illustration of the [FadeTransition] widget, with it's [opacity]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:", "detail": "", "kind": 7, "label": "FadeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that listens for [Notification]s bubbling up the tree.\n\nNotifications will trigger the [onNotification] callback only if their\n[runtimeType] is a subtype of `T`.\n\nTo dispatch notifications, use the [Notification.dispatch] method.", "detail": "", "kind": 7, "label": "NotificationListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics used by a [PageView].\n\nThese physics cause the page view to snap to page boundaries.\n\nSee also:\n\n * [ScrollPhysics], the base class which defines the API for scrolling\n physics.\n * [PageView.physics], which can override the physics used by a page view.", "detail": "", "kind": 7, "label": "PageScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Metrics for a [ScrollPosition] to a scroll view with fixed item sizes.\n\nThe metrics are available on [ScrollNotification]s generated from a scroll\nviews such as [ListWheelScrollView]s with a [FixedExtentScrollController] and\nexposes the current [itemIndex] and the scroll view's [itemExtent].\n\n`FixedExtent` refers to the fact that the scrollable items have the same size.\nThis is distinct from `Fixed` in the parent class name's [FixedScrollMetric]\nwhich refers to its immutability.", "detail": "", "kind": 7, "label": "FixedExtentMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimeOfDay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A value representing a time during the day, independent of the date that\nday might fall on or the time zone.\n\nThe time is represented by [hour] and [minute] pair. Once created, both\nvalues cannot be changed.\n\nYou can create TimeOfDay using the constructor which requires both hour and\nminute or using [DateTime] object.\nHours are specified between 0 and 23, as in a 24-hour clock.\n\n\n```dart\nTimeOfDay now = TimeOfDay.now();\nTimeOfDay releaseTime = TimeOfDay(hour: 15, minute: 0); // 3:00pm\nTimeOfDay roomBooked = TimeOfDay.fromDateTime(DateTime.parse('2018-10-20 16:30:04Z')); // 4:30pm\n```\n\nSee also:\n\n * [showTimePicker], which returns this type.\n * [MaterialLocalizations], which provides methods for formatting values of\n this type according to the chosen [Locale].\n * [DateTime], which represents date and time, and is subject to eras and\n time zones.", "detail": "", "kind": 7, "label": "TimeOfDay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFade", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that cross-fades between two given children and animates itself\nbetween their sizes.\n\nThe animation is controlled through the [crossFadeState] parameter.\n[firstCurve] and [secondCurve] represent the opacity curves of the two\nchildren. The [firstCurve] is inverted, i.e. it fades out when providing a\ngrowing curve like [Curves.linear]. The [sizeCurve] is the curve used to\nanimate between the size of the fading-out child and the size of the\nfading-in child.\n\nThis widget is intended to be used to fade a pair of widgets with the same\nwidth. In the case where the two children have different heights, the\nanimation crops overflowing children during the animation by aligning their\ntop edge, which means that the bottom will be clipped.\n\nThe animation is automatically triggered when an existing\n[AnimatedCrossFade] is rebuilt with a different value for the\n[crossFadeState] property.\n\n\nThis code fades between two representations of the Flutter logo. It depends\non a boolean field `_first`; when `_first` is true, the first logo is shown,\notherwise the second logo is shown. When the field changes state, the\n[AnimatedCrossFade] widget cross-fades between the two forms of the logo\nover three seconds.\n\n```dart\nAnimatedCrossFade(\n duration: const Duration(seconds: 3),\n firstChild: const FlutterLogo(style: FlutterLogoStyle.horizontal, size: 100.0),\n secondChild: const FlutterLogo(style: FlutterLogoStyle.stacked, size: 100.0),\n crossFadeState: _first ? CrossFadeState.showFirst : CrossFadeState.showSecond,\n)\n```\n\nSee also:\n\n * [AnimatedSize], the lower-level widget which [AnimatedCrossFade] uses to\n automatically change size.\n * [AnimatedSwitcher], which switches out a child for a new one with a\n customizable transition.", "detail": "", "kind": 7, "label": "AnimatedCrossFade" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScriptCategory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A characterization of the of a [TextTheme]'s glyphs that is used to define\nits localized [TextStyle] geometry for [ThemeData.textTheme].\n\nThe script category defines the overall geometry of a [TextTheme] for\nthe static [MaterialTextGeometry.localizedFor] method in terms of the\nthree language categories defined in <https://material.io/go/design-typography>.\n\nGenerally speaking, font sizes for [ScriptCategory.tall] and\n[ScriptCategory.dense] scripts - for text styles that are smaller than the\ntitle style - are one unit larger than they are for\n[ScriptCategory.englishLike] scripts.", "detail": "", "kind": 13, "label": "ScriptCategory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tooltip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design tooltip.\n\nTooltips provide text labels that help explain the function of a button or\nother user interface action. Wrap the button in a [Tooltip] widget to\nshow a label when the widget long pressed (or when the user takes some\nother appropriate action).\n\n\nMany widgets, such as [IconButton], [FloatingActionButton], and\n[PopupMenuButton] have a `tooltip` property that, when non-null, causes the\nwidget to include a [Tooltip] in its build.\n\nTooltips improve the accessibility of visual widgets by proving a textual\nrepresentation of the widget, which, for example, can be vocalized by a\nscreen reader.\n\nSee also:\n\n * <https://material.io/design/components/tooltips.html>", "detail": "", "kind": 7, "label": "Tooltip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrivenScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An activity that animates a scroll view based on animation parameters.\n\nFor example, a [DrivenScrollActivity] is used to implement\n[ScrollController.animateTo].\n\nSee also:\n\n * [BallisticScrollActivity], which animates a scroll view based on a\n physics [Simulation].", "detail": "", "kind": 7, "label": "DrivenScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Spacer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Spacer creates an adjustable, empty spacer that can be used to tune the\nspacing between widgets in a [Flex] container, like [Row] or [Column].\n\nThe [Spacer] widget will take up any available space, so setting the\n[Flex.mainAxisAlignment] on a flex container that contains a [Spacer] to\n[MainAxisAlignment.spaceAround], [MainAxisAlignment.spaceBetween], or\n[MainAxisAlignment.spaceEvenly] will not have any visible effect: the\n[Spacer] has taken up all of the additional space, therefore there is none\nleft to redistribute.\n\n\n```dart\nRow(\n children: <Widget>[\n Text('Begin'),\n Spacer(), // Defaults to a flex of one.\n Text('Middle'),\n // Gives twice the space between Middle and End than Begin and Middle.\n Spacer(flex: 2),\n Text('End'),\n ],\n)\n```\n\nSee also:\n\n * [Row] and [Column], which are the most common containers to use a Spacer\n in.\n * [SizedBox], to create a box with a specific size and an optional child.", "detail": "", "kind": 7, "label": "Spacer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollStartNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has started scrolling.\n\nSee also:\n\n * [ScrollEndNotification], which indicates that scrolling has stopped.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollStartNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveHandle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Listenable] which can be manually triggered.\n\nUsed with [KeepAliveNotification] objects as their\n[KeepAliveNotification.handle].\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses a\n[KeepAliveHandle] internally.", "detail": "", "kind": 7, "label": "KeepAliveHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SafeArea", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that insets its child by sufficient padding to avoid intrusions by\nthe operating system.\n\nFor example, this will indent the child by enough to avoid the status bar at\nthe top of the screen.\n\nIt will also indent the child by the amount necessary to avoid The Notch on\nthe iPhone X, or other similar creative physical features of the display.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\n\nSee also:\n\n * [SliverSafeArea], for insetting slivers to avoid operating system\n intrusions.\n * [Padding], for insetting widgets in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTileControlAffinity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where to place the control in widgets that use [ListTile] to position a\ncontrol next to a label.\n\nSee also:\n\n * [CheckboxListTile], which combines a [ListTile] with a [Checkbox].\n * [RadioListTile], which combines a [ListTile] with a [Radio] button.", "detail": "", "kind": 13, "label": "ListTileControlAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedDefaultTextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [DefaultTextStyle] which automatically transitions the\ndefault text style (the text style to apply to descendant [Text] widgets\nwithout explicit style) over a given duration whenever the given style\nchanges.\n\nThe [textAlign], [softWrap], [textOverflow], and [maxLines] properties are\nnot animated and take effect immediately when changed.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].", "detail": "", "kind": 7, "label": "AnimatedDefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that composes other [Element]s.\n\nRather than creating a [RenderObject] directly, a [ComponentElement] creates\n[RenderObject]s indirectly by creating other [Element]s.\n\nContrast with [RenderObjectElement].", "detail": "", "kind": 7, "label": "ComponentElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialTapTargetSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures the tap target and layout size of certain Material widgets.\n\nChanging the value in [ThemeData.materialTapTargetSize] will affect the\naccessibility experience.\n\nSome of the impacted widgets include:\n\n * [FloatingActionButton], only the mini tap target size is increased.\n * [MaterialButton]\n * [OutlineButton]\n * [FlatButton]\n * [RaisedButton]\n * [TimePicker]\n * [SnackBar]\n * [Chip]\n * [RawChip]\n * [InputChip]\n * [ChoiceChip]\n * [FilterChip]\n * [ActionChip]\n * [Radio]\n * [Switch]\n * [Checkbox]", "detail": "", "kind": 13, "label": "MaterialTapTargetSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleListResolutionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.localeListResolutionCallback].\n\nA [LocaleListResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the list of\nlocales for the device.\n\nThe [locales] list is the device's preferred locales when the app started, or the\ndevice's preferred locales the user selected after the app was started. This list\nis in order of preference. If this list is null or empty, then Flutter has not yet\nreceived the locale information from the platform. The [supportedLocales] parameter\nis just the value of [WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleResolutionCallback], which takes only one default locale (instead of a list)\n and is attempted only after this callback fails or is null. [LocaleListResolutionCallback]\n is recommended over [LocaleResolutionCallback].", "detail": "(List<Locale> locales, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleListResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SnackBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A lightweight message with an optional action which briefly displays at the\nbottom of the screen.\n\nTo display a snack bar, call `Scaffold.of(context).showSnackBar()`, passing\nan instance of [SnackBar] that describes the message.\n\nTo control how long the [SnackBar] remains visible, specify a [duration].\n\nA SnackBar with an action will not time out when TalkBack or VoiceOver are\nenabled. This is controlled by [AccessibilityFeatures.accessibleNavigation].\n\nSee also:\n\n * [Scaffold.of], to obtain the current [ScaffoldState], which manages the\n display and animation of snack bars.\n * [ScaffoldState.showSnackBar], which displays a [SnackBar].\n * [ScaffoldState.removeCurrentSnackBar], which abruptly hides the currently\n displayed snack bar, if any, and allows the next to be displayed.\n * [SnackBarAction], which is used to specify an [action] button to show\n on the snack bar.\n * <https://material.io/design/components/snackbars.html>", "detail": "", "kind": 7, "label": "SnackBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of a [Scrollable]'s contents, useful for modeling the state\nof its viewport.\n\nThis class defines a current position, [pixels], and a range of values\nconsidered \"in bounds\" for that position. The range has a minimum value at\n[minScrollExtent] and a maximum value at [maxScrollExtent] (inclusive). The\nviewport scrolls in the direction and axis described by [axisDirection]\nand [axis].\n\nThe [outOfRange] getter will return true if [pixels] is outside this defined\nrange. The [atEdge] getter will return true if the [pixels] position equals\neither the [minScrollExtent] or the [maxScrollExtent].\n\nThe dimensions of the viewport in the given [axis] are described by\n[viewportDimension].\n\nThe above values are also exposed in terms of [extentBefore],\n[extentInside], and [extentAfter], which may be more useful for use cases\nsuch as scroll bars; for example, see [Scrollbar].\n\nSee also:\n\n * [FixedScrollMetrics], which is an immutable object that implements this\n interface.", "detail": "", "kind": 7, "label": "ScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAliveClientMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin with convenience methods for clients of [AutomaticKeepAlive]. Used\nwith [State] subclasses.\n\nSubclasses must implement [wantKeepAlive], and their [build] methods must\ncall `super.build` (the return value will always return null, and should be\nignored).\n\nThen, whenever [wantKeepAlive]'s value changes (or might change), the\nsubclass should call [updateKeepAlive].\n\nThe type argument `T` is the type of the [StatefulWidget] subclass of the\n[State] into which this class is being mixed.\n\nSee also:\n\n * [AutomaticKeepAlive], which listens to messages from this mixin.\n * [KeepAliveNotification], the notifications sent by this mixin.", "detail": "", "kind": 7, "label": "AutomaticKeepAliveClientMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offstage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that lays the child out as if it was in the tree, but without\npainting anything, without making the child available for hit testing, and\nwithout taking any room in the parent.\n\nAnimations continue to run in offstage children, and therefore use battery\nand CPU time, regardless of whether the animations end up being visible.\n\n[Offstage] can be used to measure the dimensions of a widget without\nbringing it on screen (yet). To hide a widget from view while it is not\nneeded, prefer removing the widget from the tree entirely rather than\nkeeping it alive in an [Offstage] subtree.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly).\n * [TickerMode], which can be used to disable animations in a subtree.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Offstage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialGap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that represents a gap within [MergeableMaterial].\n\nAll [MaterialGap] objects need a [LocalKey].", "detail": "", "kind": 7, "label": "MaterialGap" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state of connection to an asynchronous computation.\n\nSee also:\n\n * [AsyncSnapshot], which augments a connection state with information\n received from the asynchronous computation.", "detail": "", "kind": 13, "label": "ConnectionState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [ParentDataWidget] as its configuration.", "detail": "", "kind": 7, "label": "ParentDataElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderToggleable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for material style toggleable controls with toggle animations.\n\nThis class handles storing the current value, dispatching ValueChanged on a\ntap gesture and driving a changed animation. Subclasses are responsible for\npainting.", "detail": "", "kind": 7, "label": "RenderToggleable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A viewport showing a subset of children on a wheel.\n\nTypically used with [ListWheelScrollView], this viewport is similar to\n[Viewport] in that it shows a subset of children in a scrollable based\non the scrolling offset and the children's dimensions. But uses\n[RenderListWheelViewport] to display the children on a wheel.\n\nSee also:\n\n * [ListWheelScrollView], widget that combines this viewport with a scrollable.\n * [RenderListWheelViewport], the render object that renders the children\n on a wheel.", "detail": "", "kind": 7, "label": "ListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that creates a widget, e.g. [StatelessWidget.build]\nor [State.build].\n\nUsed by [Builder.builder], [OverlayEntry.builder], etc.\n\nSee also:\n\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [TransitionBuilder], which is similar but also takes a child.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context) → Widget", "kind": 7, "label": "WidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the draggable is dropped.\n\nThe velocity and offset at which the pointer was moving when the draggable\nwas dropped is available in the [DraggableDetails]. Also included in the\n`details` is whether the draggable's [DragTarget] accepted it.\n\nUsed by [Draggable.onDragEnd]", "detail": "(DraggableDetails details) → void", "kind": 7, "label": "DragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewHeaderSliversBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [NestedScrollView] for building its header.\n\nThe `innerBoxIsScrolled` argument is typically used to control the\n[SliverAppBar.forceElevated] property to ensure that the app bar shows a\nshadow, since it would otherwise not necessarily be aware that it had\ncontent ostensibly below it.", "detail": "(BuildContext context, bool innerBoxIsScrolled) → List<Widget>", "kind": 7, "label": "NestedScrollViewHeaderSliversBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialPageRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A modal route that replaces the entire screen with a platform-adaptive\ntransition.\n\nFor Android, the entrance transition for the page slides the page upwards\nand fades it in. The exit transition is the same, but in reverse.\n\nThe transition is adaptive to the platform and on iOS, the page slides in\nfrom the right and exits in reverse. The page also shifts to the left in\nparallax when another page enters to cover it. (These directions are flipped\nin environments with a right-to-left reading direction.)\n\nBy default, when a modal route is replaced by another, the previous route\nremains in memory. To free all the resources when this is not necessary, set\n[maintainState] to false.\n\nThe `fullscreenDialog` property specifies whether the incoming page is a\nfullscreen modal dialog. On iOS, those pages animate from the bottom to the\ntop rather than horizontally.\n\nThe type `T` specifies the return type of the route which can be supplied as\nthe route is popped from the stack via [Navigator.pop] by providing the\noptional `result` argument.\n\nSee also:\n\n * [PageTransitionsTheme], which defines the default page transitions used\n by [MaterialPageRoute.buildTransitions].", "detail": "", "kind": 7, "label": "MaterialPageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AspectRatio", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that attempts to size the child to a specific aspect ratio.\n\nThe widget first tries the largest width permitted by the layout\nconstraints. The height of the widget is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The widget will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the widget would\ncontinue iterating through the constraints. If the widget does not\nfind a feasible size after consulting each constraint, the widget\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "AspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A modal route that overlays a widget over the current route.", "detail": "", "kind": 7, "label": "PopupRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design app bar.\n\nAn app bar consists of a toolbar and potentially other widgets, such as a\n[TabBar] and a [FlexibleSpaceBar]. App bars typically expose one or more\ncommon [actions] with [IconButton]s which are optionally followed by a\n[PopupMenuButton] for less common operations (sometimes called the \"overflow\nmenu\").\n\nApp bars are typically used in the [Scaffold.appBar] property, which places\nthe app bar as a fixed-height widget at the top of the screen. For a\nscrollable app bar, see [SliverAppBar], which embeds an [AppBar] in a sliver\nfor use in a [CustomScrollView].\n\nThe AppBar displays the toolbar widgets, [leading], [title], and [actions],\nabove the [bottom] (if any). The [bottom] is usually used for a [TabBar]. If\na [flexibleSpace] widget is specified then it is stacked behind the toolbar\nand the bottom widget. The following diagram shows where each of these slots\nappears in the toolbar when the writing language is left-to-right (e.g.\nEnglish):\n\n![The leading widget is in the top left, the actions are in the top right,\nthe title is between them. The bottom is, naturally, at the bottom, and the\nflexibleSpace is behind all of them.](https://flutter.github.io/assets-for-api-docs/assets/material/app_bar.png)\n\nIf the [leading] widget is omitted, but the [AppBar] is in a [Scaffold] with\na [Drawer], then a button will be inserted to open the drawer. Otherwise, if\nthe nearest [Navigator] has any previous routes, a [BackButton] is inserted\ninstead. This behavior can be turned off by setting the [automaticallyImplyLeading]\nto false. In that case a null leading widget will result in the middle/title widget\nstretching to start.\n\n\n```dart\nAppBar(\n title: Text('My Fancy Dress'),\n actions: <Widget>[\n IconButton(\n icon: Icon(Icons.playlist_play),\n tooltip: 'Air it',\n onPressed: _airDress,\n ),\n IconButton(\n icon: Icon(Icons.playlist_add),\n tooltip: 'Restitch it',\n onPressed: _restitchDress,\n ),\n IconButton(\n icon: Icon(Icons.playlist_add_check),\n tooltip: 'Repair it',\n onPressed: _repairDress,\n ),\n ],\n)\n```\n\nSee also:\n\n * [Scaffold], which displays the [AppBar] in its [Scaffold.appBar] slot.\n * [SliverAppBar], which uses [AppBar] to provide a flexible app bar that\n can be used in a [CustomScrollView].\n * [TabBar], which is typically placed in the [bottom] slot of the [AppBar]\n if the screen has multiple pages arranged in tabs.\n * [IconButton], which is used with [actions] to show buttons on the app bar.\n * [PopupMenuButton], to show a popup menu on the app bar, via [actions].\n * [FlexibleSpaceBar], which is used with [flexibleSpace] when the app bar\n can expand and collapse.\n * <https://material.io/design/components/app-bars-top.html>", "detail": "", "kind": 7, "label": "AppBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Feedback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides platform-specific acoustic and/or haptic feedback for certain\nactions.\n\nFor example, to play the Android-typically click sound when a button is\ntapped, call [forTap]. For the Android-specific vibration when long pressing\nan element, call [forLongPress]. Alternatively, you can also wrap your\n[GestureDetector.onTap] or [GestureDetector.onLongPress] callback in\n[wrapForTap] or [wrapForLongPress] to achieve the same (see example code\nbelow).\n\nCalling any of these methods is a no-op on iOS as actions on that platform\ntypically don't provide haptic or acoustic feedback.\n\nAll methods in this class are usually called from within a\n[StatelessWidget.build] method or from a [State]'s methods as you have to\nprovide a [BuildContext].\n\n\nTo trigger platform-specific feedback before executing the actual callback:\n\n```dart\nclass WidgetWithWrappedHandler extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: Feedback.wrapForTap(_onTapHandler, context),\n onLongPress: Feedback.wrapForLongPress(_onLongPressHandler, context),\n child: const Text('X'),\n );\n }\n\n void _onTapHandler() {\n // Respond to tap.\n }\n\n void _onLongPressHandler() {\n // Respond to long press.\n }\n}\n```\n\nAlternatively, you can also call [forTap] or [forLongPress] directly within\nyour tap or long press handler:\n\n```dart\nclass WidgetWithExplicitCall extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: () {\n // Do some work (e.g. check if the tap is valid)\n Feedback.forTap(context);\n // Do more work (e.g. respond to the tap)\n },\n onLongPress: () {\n // Do some work (e.g. check if the long press is valid)\n Feedback.forLongPress(context);\n // Do more work (e.g. respond to the long press)\n },\n child: const Text('X'),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "Feedback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for building the widget representing the form field.\n\nUsed by [FormField.builder].", "detail": "(FormFieldState<T> field) → Widget", "kind": 7, "label": "FormFieldBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridTileBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A header used in a material design [GridTile].\n\nTypically used to add a one or two line header or footer on a [GridTile].\n\nFor a one-line header, include a [title] widget. To add a second line, also\ninclude a [subtitle] widget. Use [leading] or [trailing] to add an icon.\n\nSee also:\n\n * [GridTile]\n * <https://material.io/design/components/image-lists.html#anatomy>", "detail": "", "kind": 7, "label": "GridTileBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Builder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A platonic widget that calls a closure to obtain its child widget.\n\nSee also:\n\n * [StatefulBuilder], a platonic widget which also has state.", "detail": "", "kind": 7, "label": "Builder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A decoration on a part of a [Material].\n\nThis object is rarely created directly. Instead of creating an ink\ndecoration directly, consider using an [Ink] widget, which uses this class\nin combination with [Padding] and [ConstrainedBox] to draw a decoration on a\n[Material].\n\nSee also:\n\n * [Ink], the corresponding widget.\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink is painted.", "detail": "", "kind": 7, "label": "InkDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Center", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that centers its child within itself.\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\nSee also:\n\n * [Align], which lets you arbitrarily position a child within itself,\n rather than just centering it.\n * [Row], a widget that displays its children in a horizontal array.\n * [Column], a widget that displays its children in a vertical array.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Center" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Text", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A run of text with a single style.\n\nThe [Text] widget displays a string of text with single style. The string\nmight break across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nThe [style] argument is optional. When omitted, the text will use the style\nfrom the closest enclosing [DefaultTextStyle]. If the given style's\n[TextStyle.inherit] property is true (the default), the given style will\nbe merged with the closest enclosing [DefaultTextStyle]. This merging\nbehavior is useful, for example, to make the text bold while using the\ndefault font family and size.\n\n\n```dart\nText(\n 'Hello, $_name! How are you?',\n textAlign: TextAlign.center,\n overflow: TextOverflow.ellipsis,\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\nUsing the [Text.rich] constructor, the [Text] widget can\ndisplay a paragraph with differently styled [TextSpan]s. The sample\nthat follows displays \"Hello beautiful world\" with different styles\nfor each word.\n\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'Hello', // default text style\n children: <TextSpan>[\n TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),\n TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),\n ],\n ),\n)\n```\n\n## Interactivity\n\nTo make [Text] react to touch events, wrap it in a [GestureDetector] widget\nwith a [GestureDetector.onTap] handler.\n\nIn a material design application, consider using a [FlatButton] instead, or\nif that isn't appropriate, at least using an [InkWell] instead of\n[GestureDetector].\n\nTo make sections of the text interactive, use [RichText] and specify a\n[TapGestureRecognizer] as the [TextSpan.recognizer] of the relevant part of\nthe text.\n\nSee also:\n\n * [RichText], which gives you more control over the text styles.\n * [DefaultTextStyle], which sets default styles for [Text] widgets.", "detail": "", "kind": 7, "label": "Text" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes and positions children efficiently, according to the\nlogic in a [FlowDelegate].\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow, which happens\nwithout the children being laid out again (contrast this with a [Stack],\nwhich does the sizing and positioning together during layout).\n\nThe most efficient way to trigger a repaint of the flow is to supply an\nanimation to the constructor of the [FlowDelegate]. The flow will listen to\nthis animation and repaint whenever the animation ticks, avoiding both the\nbuild and layout phases of the pipeline.\n\nSee also:\n\n * [Wrap], which provides the layout model that some other frameworks call\n \"flow\", and is otherwise unrelated to [Flow].\n * [FlowDelegate], which controls the visual presentation of the children.\n * [Stack], which arranges children relative to the edges of the container.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A platonic widget that both has state and calls a closure to obtain its child widget.\n\nSee also:\n\n * [Builder], the platonic stateless widget.", "detail": "", "kind": 7, "label": "StatefulBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A bridge from a [RenderObject] to an [Element] tree.\n\nThe given container is the [RenderObject] that the [Element] tree should be\ninserted into. It must be a [RenderObject] that implements the\n[RenderObjectWithChildMixin] protocol. The type argument `T` is the kind of\n[RenderObject] that the container expects as its child.\n\nUsed by [runApp] to bootstrap applications.", "detail": "", "kind": 7, "label": "RenderObjectToWidgetAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Geometry information for [Scaffold] components after layout is finished.\n\nTo get a [ValueNotifier] for the scaffold geometry of a given\n[BuildContext], use [Scaffold.geometryOf].\n\nThe ScaffoldGeometry is only available during the paint phase, because\nits value is computed during the animation and layout phases prior to painting.\n\nFor an example of using the [ScaffoldGeometry], see the [BottomAppBar],\nwhich uses the [ScaffoldGeometry] to paint a notch around the\n[FloatingActionButton].\n\nFor information about the [Scaffold]'s geometry that is used while laying\nout the [FloatingActionButton], see [ScaffoldPrelayoutGeometry].", "detail": "", "kind": 7, "label": "ScaffoldGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridTile", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A tile in a material design grid list.\n\nA grid list is a [GridView] of tiles in a vertical and horizontal\narray. Each tile typically contains some visually rich content (e.g., an\nimage) together with a [GridTileBar] in either a [header] or a [footer].\n\nSee also:\n\n * [GridView], which is a scrollable grid of tiles.\n * [GridTileBar], which is typically used in either the [header] or\n [footer].\n * <https://material.io/design/components/image-lists.html>", "detail": "", "kind": 7, "label": "GridTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LimitedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box that limits its size only when it's unconstrained.\n\nIf this widget's maximum width is unconstrained then its child's width is\nlimited to [maxWidth]. Similarly, if this widget's maximum height is\nunconstrained then its child's height is limited to [maxHeight].\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).\n\nSee also:\n\n * [ConstrainedBox], which applies its constraints in all cases, not just\n when the incoming constraints are unbounded.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "LimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialRectArcTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that interpolates a [Rect] by having its opposite corners follow\ncircular arcs.\n\nThis class specializes the interpolation of [Tween<Rect>] so that instead of\ngrowing or shrinking linearly, opposite corners of the rectangle follow arcs\nin a manner consistent with material design principles.\n\nSpecifically, the rectangle corners whose diagonals are closest to the overall\ndirection of the animation follow arcs defined with [MaterialPointArcTween].\n\nSee also:\n\n * [MaterialRectCenterArcTween], which interpolates a rect along a circular\n arc between the begin and end [Rect]'s centers.\n * [Tween], for a discussion on how to use interpolation objects.\n * [MaterialPointArcTween], the analogue for [Offset] interpolation.\n * [RectTween], which does a linear rectangle interpolation.\n * [Hero.createRectTween], which can be used to specify the tween that defines\n a hero's path.", "detail": "", "kind": 7, "label": "MaterialRectArcTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncSnapshot", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Immutable representation of the most recent interaction with an asynchronous\ncomputation.\n\nSee also:\n\n * [StreamBuilder], which builds itself based on a snapshot from interacting\n with a [Stream].\n * [FutureBuilder], which builds itself based on a snapshot from interacting\n with a [Future].", "detail": "", "kind": 7, "label": "AsyncSnapshot" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultAssetBundle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that determines the default asset bundle for its descendants.\n\nFor example, used by [Image] to determine which bundle to use for\n[AssetImage]s if no bundle is specified explicitly.\n\n\nThis can be used in tests to override what the current asset bundle is, thus\nallowing specific resources to be injected into the widget under test.\n\nFor example, a test could create a test asset bundle like this:\n\n```dart\nclass TestAssetBundle extends CachingAssetBundle {\n @override\n Future<ByteData> load(String key) async {\n if (key == 'resources/test')\n return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);\n return null;\n }\n}\n```\n\n...then wrap the widget under test with a [DefaultAssetBundle] using this\nbundle implementation:\n\n```dart\nawait tester.pumpWidget(\n MaterialApp(\n home: DefaultAssetBundle(\n bundle: TestAssetBundle(),\n child: TestWidget(),\n ),\n ),\n);\n```\n\nAssuming that `TestWidget` uses [DefaultAssetBundle.of] to obtain its\n[AssetBundle], it will now see the [TestAssetBundle]'s \"Hello World!\" data\nwhen requesting the \"resources/test\" asset.\n\nSee also:\n\n * [AssetBundle], the interface for asset bundles.\n * [rootBundle], the default default asset bundle.", "detail": "", "kind": 7, "label": "DefaultAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChipTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a chip theme to descendant [RawChip]-based widgets, like [Chip],\n[InputChip], [ChoiceChip], [FilterChip], and [ActionChip].\n\nA chip theme describes the color, shape and text styles for the chips it is\napplied to\n\nDescendant widgets obtain the current theme's [ChipThemeData] object using\n[ChipTheme.of]. When a widget uses [ChipTheme.of], it is automatically\nrebuilt if the theme later changes.\n\nThe [ThemeData] object given by the [Theme.of] call also contains a default\n[Theme.chipTheme] that can be customized by copying it (using\n[ChipThemeData.copyWith]).\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [ChipThemeData], which describes the actual configuration of a chip\n theme.\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "ChipTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataTable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design data table.\n\nDisplaying data in a table is expensive, because to lay out the\ntable all the data must be measured twice, once to negotiate the\ndimensions to use for each column, and once to actually lay out\nthe table given the results of the negotiation.\n\nFor this reason, if you have a lot of data (say, more than a dozen\nrows with a dozen columns, though the precise limits depend on the\ntarget device), it is suggested that you use a\n[PaginatedDataTable] which automatically splits the data into\nmultiple pages.\n\nSee also:\n\n * [DataColumn], which describes a column in the data table.\n * [DataRow], which contains the data for a row in the data table.\n * [DataCell], which contains the data for a single cell in the data table.\n * [PaginatedDataTable], which shows part of the data in a data table and\n provides controls for paging through the remainder of the data.\n * <https://material.io/design/components/data-tables.html>", "detail": "", "kind": 7, "label": "DataTable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Banner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a diagonal message above the corner of another widget.\n\nUseful for showing the execution mode of an app (e.g., that asserts are\nenabled.)\n\nSee also:\n\n * [CheckedModeBanner], which the [WidgetsApp] widget includes by default in\n debug mode, to show a banner that says \"DEBUG\".", "detail": "", "kind": 7, "label": "Banner" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppBarTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [AppBar] widgets.\n\nDescendant widgets obtain the current [AppBarTheme] object using\n`AppBarTheme.of(context)`. Instances of [AppBarTheme] can be customized\nwith [AppBarTheme.copyWith].\n\nTypically an [AppBarTheme] is specified as part of the overall [Theme] with\n[ThemeData.appBarTheme].\n\nAll [AppBarTheme] properties are `null` by default. When null, the [AppBar]\nwill use the values from [ThemeData] if they exist, otherwise it will\nprovide its own defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "AppBarTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetectorState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [RawGestureDetector].", "detail": "", "kind": 7, "label": "RawGestureDetectorState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [ProxyWidget] as its configuration.", "detail": "", "kind": 7, "label": "ProxyElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that's called when an [ExpansionPanel] is\nexpanded or collapsed.\n\nThe position of the panel within an [ExpansionPanelList] is given by\n[panelIndex].", "detail": "(int panelIndex, bool isExpanded) → void", "kind": 7, "label": "ExpansionPanelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTile", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single fixed-height row that typically contains some text as well as\na leading or trailing icon.\n\nA list tile contains one to three lines of text optionally flanked by icons or\nother widgets, such as check boxes. The icons (or other widgets) for the\ntile are defined with the [leading] and [trailing] parameters. The first\nline of text is not optional and is specified with [title]. The value of\n[subtitle], which _is_ optional, will occupy the space allocated for an\nadditional line of text, or two lines if [isThreeLine] is true. If [dense]\nis true then the overall height of this tile and the size of the\n[DefaultTextStyle]s that wrap the [title] and [subtitle] widget are reduced.\n\nIt is the responsibility of the caller to ensure that [title] does not wrap,\nand to ensure that [subtitle] doesn't wrap (if [isThreeLine] is false) or\nwraps to two lines (if it is true).\n\nThe heights of the [leading] and [trailing] widgets are constrained\naccording to the\n[Material spec](https://material.io/design/components/lists.html).\nAn exception is made for one-line ListTiles for accessibility. Please\nsee the example below to see how to adhere to both Material spec and\naccessibility requirements.\n\nNote that [leading] and [trailing] widgets can expand as far as they wish\nhorizontally, so ensure that they are properly constrained.\n\nList tiles are typically used in [ListView]s, or arranged in [Column]s in\n[Drawer]s and [Card]s.\n\nRequires one of its ancestors to be a [Material] widget.\n\n\nThis example uses a [ListView] to demonstrate different configurations of\n[ListTile]s in [Card]s.\n\n![Different variations of ListTile](https://flutter.github.io/assets-for-api-docs/assets/material/list_tile.png)\n\n```dart\nListView(\n children: const <Widget>[\n Card(child: ListTile(title: Text('One-line ListTile'))),\n Card(\n child: ListTile(\n leading: FlutterLogo(),\n title: Text('One-line with leading widget'),\n ),\n ),\n Card(\n child: ListTile(\n title: Text('One-line with trailing widget'),\n trailing: Icon(Icons.more_vert),\n ),\n ),\n Card(\n child: ListTile(\n leading: FlutterLogo(),\n title: Text('One-line with both widgets'),\n trailing: Icon(Icons.more_vert),\n ),\n ),\n Card(\n child: ListTile(\n title: Text('One-line dense ListTile'),\n dense: true,\n ),\n ),\n Card(\n child: ListTile(\n leading: FlutterLogo(size: 56.0),\n title: Text('Two-line ListTile'),\n subtitle: Text('Here is a second line'),\n trailing: Icon(Icons.more_vert),\n ),\n ),\n Card(\n child: ListTile(\n leading: FlutterLogo(size: 72.0),\n title: Text('Three-line ListTile'),\n subtitle: Text(\n 'A sufficiently long subtitle warrants three lines.'\n ),\n trailing: Icon(Icons.more_vert),\n isThreeLine: true,\n ),\n ),\n ],\n)\n```\n\nTiles can be much more elaborate. Here is a tile which can be tapped, but\nwhich is disabled when the `_act` variable is not 2. When the tile is\ntapped, the whole row has an ink splash effect (see [InkWell]).\n\n```dart\nint _act = 1;\n// ...\nListTile(\n leading: const Icon(Icons.flight_land),\n title: const Text('Trix\\'s airplane'),\n subtitle: _act != 2 ? const Text('The airplane is only in Act II.') : null,\n enabled: _act == 2,\n onTap: () { /* react to the tile being tapped */ }\n)\n```\n\nTo be accessible, tappable [leading] and [trailing] widgets have to\nbe at least 48x48 in size. However, to adhere to the Material spec,\n[trailing] and [leading] widgets in one-line ListTiles should visually be\nat most 32 ([dense]: true) or 40 ([dense]: false) in height, which may\nconflict with the accessibility requirement.\n\nFor this reason, a one-line ListTile allows the height of [leading]\nand [trailing] widgets to be constrained by the height of the ListTile.\nThis allows for the creation of tappable [leading] and [trailing] widgets\nthat are large enough, but it is up to the developer to ensure that\ntheir widgets follow the Material spec.\n\n\nHere is an example of a one-line, non-[dense] ListTile with a\ntappable leading widget that adheres to accessibility requirements and\nthe Material spec. To adjust the use case below for a one-line, [dense]\nListTile, adjust the vertical padding to 8.0.\n\n```dart\nListTile(\n leading: GestureDetector(\n behavior: HitTestBehavior.translucent,\n onTap: () {},\n child: Container(\n width: 48,\n height: 48,\n padding: EdgeInsets.symmetric(vertical: 4.0),\n alignment: Alignment.center,\n child: CircleAvatar(),\n ),\n ),\n title: Text('title'),\n dense: false,\n),\n```\n\n## The ListTile layout isn't exactly what I want\n\nIf the way ListTile pads and positions its elements isn't quite what\nyou're looking for, it's easy to create custom list items with a\ncombination of other widgets, such as [Row]s and [Column]s.\n\n\nHere is an example of a custom list item that resembles a Youtube related\nvideo list item created with [Expanded] and [Container] widgets.\n\n![Custom list item a](https://flutter.github.io/assets-for-api-docs/assets/widgets/custom_list_item_a.png)\n\n```dart\nclass CustomListItem extends StatelessWidget {\n const CustomListItem({\n this.thumbnail,\n this.title,\n this.user,\n this.viewCount,\n });\n\n final Widget thumbnail;\n final String title;\n final String user;\n final int viewCount;\n\n @override\n Widget build(BuildContext context) {\n return Padding(\n padding: const EdgeInsets.symmetric(vertical: 5.0),\n child: Row(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n Expanded(\n flex: 2,\n child: thumbnail,\n ),\n Expanded(\n flex: 3,\n child: _VideoDescription(\n title: title,\n user: user,\n viewCount: viewCount,\n ),\n ),\n const Icon(\n Icons.more_vert,\n size: 16.0,\n ),\n ],\n ),\n );\n }\n}\n\nclass _VideoDescription extends StatelessWidget {\n const _VideoDescription({\n Key key,\n this.title,\n this.user,\n this.viewCount,\n }) : super(key: key);\n\n final String title;\n final String user;\n final int viewCount;\n\n @override\n Widget build(BuildContext context) {\n return Padding(\n padding: const EdgeInsets.fromLTRB(5.0, 0.0, 0.0, 0.0),\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n Text(\n title,\n style: const TextStyle(\n fontWeight: FontWeight.w500,\n fontSize: 14.0,\n ),\n ),\n const Padding(padding: EdgeInsets.symmetric(vertical: 2.0)),\n Text(\n user,\n style: const TextStyle(fontSize: 10.0),\n ),\n const Padding(padding: EdgeInsets.symmetric(vertical: 1.0)),\n Text(\n '$viewCount views',\n style: const TextStyle(fontSize: 10.0),\n ),\n ],\n ),\n );\n }\n}\n```\n\n```dart\nWidget build(BuildContext context) {\n return ListView(\n padding: const EdgeInsets.all(8.0),\n itemExtent: 106.0,\n children: <CustomListItem>[\n CustomListItem(\n user: 'Flutter',\n viewCount: 999000,\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.blue),\n ),\n title: 'The Flutter YouTube Channel',\n ),\n CustomListItem(\n user: 'Dash',\n viewCount: 884000,\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.yellow),\n ),\n title: 'Announcing Flutter 1.0',\n ),\n ],\n );\n}\n```\n\n\nHere is an example of an article list item with multi-line titles and\nsubtitles. It utilizes [Row]s and [Column]s, as well as [Expanded] and\n[AspectRatio] widgets to organize its layout.\n\n![Custom list item b](https://flutter.github.io/assets-for-api-docs/assets/widgets/custom_list_item_b.png)\n\n```dart\nclass _ArticleDescription extends StatelessWidget {\n _ArticleDescription({\n Key key,\n this.title,\n this.subtitle,\n this.author,\n this.publishDate,\n this.readDuration,\n }) : super(key: key);\n\n final String title;\n final String subtitle;\n final String author;\n final String publishDate;\n final String readDuration;\n\n @override\n Widget build(BuildContext context) {\n return Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n Text(\n '$title',\n maxLines: 2,\n overflow: TextOverflow.ellipsis,\n style: const TextStyle(\n fontWeight: FontWeight.bold,\n ),\n ),\n const Padding(padding: EdgeInsets.only(bottom: 2.0)),\n Text(\n '$subtitle',\n maxLines: 2,\n overflow: TextOverflow.ellipsis,\n style: const TextStyle(\n fontSize: 12.0,\n color: Colors.black54,\n ),\n ),\n ],\n ),\n ),\n Expanded(\n flex: 1,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisAlignment: MainAxisAlignment.end,\n children: <Widget>[\n Text(\n '$author',\n style: const TextStyle(\n fontSize: 12.0,\n color: Colors.black87,\n ),\n ),\n Text(\n '$publishDate · $readDuration ★',\n style: const TextStyle(\n fontSize: 12.0,\n color: Colors.black54,\n ),\n ),\n ],\n ),\n ),\n ],\n );\n }\n}\n\nclass CustomListItemTwo extends StatelessWidget {\n CustomListItemTwo({\n Key key,\n this.thumbnail,\n this.title,\n this.subtitle,\n this.author,\n this.publishDate,\n this.readDuration,\n }) : super(key: key);\n\n final Widget thumbnail;\n final String title;\n final String subtitle;\n final String author;\n final String publishDate;\n final String readDuration;\n\n @override\n Widget build(BuildContext context) {\n return Padding(\n padding: const EdgeInsets.symmetric(vertical: 10.0),\n child: SizedBox(\n height: 100,\n child: Row(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n AspectRatio(\n aspectRatio: 1.0,\n child: thumbnail,\n ),\n Expanded(\n child: Padding(\n padding: const EdgeInsets.fromLTRB(20.0, 0.0, 2.0, 0.0),\n child: _ArticleDescription(\n title: title,\n subtitle: subtitle,\n author: author,\n publishDate: publishDate,\n readDuration: readDuration,\n ),\n ),\n )\n ],\n ),\n ),\n );\n }\n}\n```\n\n```dart\nWidget build(BuildContext context) {\n return ListView(\n padding: const EdgeInsets.all(10.0),\n children: <Widget>[\n CustomListItemTwo(\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.pink),\n ),\n title: 'Flutter 1.0 Launch',\n subtitle:\n 'Flutter continues to improve and expand its horizons.'\n 'This text should max out at two lines and clip',\n author: 'Dash',\n publishDate: 'Dec 28',\n readDuration: '5 mins',\n ),\n CustomListItemTwo(\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.blue),\n ),\n title: 'Flutter 1.2 Release - Continual updates to the framework',\n subtitle: 'Flutter once again improves and makes updates.',\n author: 'Flutter',\n publishDate: 'Feb 26',\n readDuration: '12 mins',\n ),\n ],\n );\n}\n```\n\nSee also:\n\n * [ListTileTheme], which defines visual properties for [ListTile]s.\n * [ListView], which can display an arbitrary number of [ListTile]s\n in a scrolling list.\n * [CircleAvatar], which shows an icon representing a person and is often\n used as the [leading] element of a ListTile.\n * [Card], which can be used with [Column] to show a few [ListTile]s.\n * [Divider], which can be used to separate [ListTile]s.\n * [ListTile.divideTiles], a utility for inserting [Divider]s in between [ListTile]s.\n * [CheckboxListTile], [RadioListTile], and [SwitchListTile], widgets\n that combine [ListTile] with other controls.\n * <https://material.io/design/components/lists.html>", "detail": "", "kind": 7, "label": "ListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scaffold", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Implements the basic material design visual layout structure.\n\nThis class provides APIs for showing drawers, snack bars, and bottom sheets.\n\nTo display a snackbar or a persistent bottom sheet, obtain the\n[ScaffoldState] for the current [BuildContext] via [Scaffold.of] and use the\n[ScaffoldState.showSnackBar] and [ScaffoldState.showBottomSheet] functions.\n\nThis example shows a [Scaffold] with an [AppBar], a [BottomAppBar] and a\n[FloatingActionButton]. The [body] is a [Text] placed in a [Center] in order\nto center the text within the [Scaffold] and the [FloatingActionButton] is\ncentered and docked within the [BottomAppBar] using\n[FloatingActionButtonLocation.centerDocked]. The [FloatingActionButton] is\nconnected to a callback that increments a counter.\n\n```dart\nint _count = 0;\n\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Sample Code'),\n ),\n body: Center(\n child: Text('You have pressed the button $_count times.'),\n ),\n bottomNavigationBar: BottomAppBar(\n child: Container(height: 50.0,),\n ),\n floatingActionButton: FloatingActionButton(\n onPressed: () => setState(() {\n _count++;\n }),\n tooltip: 'Increment Counter',\n child: Icon(Icons.add),\n ),\n floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,\n );\n}\n```\n\n## Scaffold layout, the keyboard, and display \"notches\"\n\nThe scaffold will expand to fill the available space. That usually\nmeans that it will occupy its entire window or device screen. When\nthe device's keyboard appears the Scaffold's ancestor [MediaQuery]\nwidget's [MediaQueryData.viewInsets] changes and the Scaffold will\nbe rebuilt. By default the scaffold's [body] is resized to make\nroom for the keyboard. To prevent the resize set\n[resizeToAvoidBottomInset] to false. In either case the focused\nwidget will be scrolled into view if it's within a scrollable\ncontainer.\n\nThe [MediaQueryData.padding] value defines areas that might\nnot be completely visible, like the display \"notch\" on the iPhone\nX. The scaffold's [body] is not inset by this padding value\nalthough an [appBar] or [bottomNavigationBar] will typically\ncause the body to avoid the padding. The [SafeArea]\nwidget can be used within the scaffold's body to avoid areas\nlike display notches.\n\n## Troubleshooting\n\n### Nested Scaffolds\n\nThe Scaffold was designed to be the single top level container for\na [MaterialApp] and it's typically not necessary to nest\nscaffolds. For example in a tabbed UI, where the\n[bottomNavigationBar] is a [TabBar] and the body is a\n[TabBarView], you might be tempted to make each tab bar view a\nscaffold with a differently titled AppBar. It would be better to add a\nlistener to the [TabController] that updates the AppBar.\n\nAdd a listener to the app's tab controller so that the [AppBar] title of the\napp's one and only scaffold is reset each time a new tab is selected.\n\n```dart\nTabController(vsync: tickerProvider, length: tabCount)..addListener(() {\n if (!tabController.indexIsChanging) {\n setState(() {\n // Rebuild the enclosing scaffold with a new AppBar title\n appBarTitle = 'Tab ${tabController.index}';\n });\n }\n})\n```\n\nAlthough there are some use cases, like a presentation app that\nshows embedded flutter content, where nested scaffolds are\nappropriate, it's best to avoid nesting scaffolds.\n\nSee also:\n\n * [AppBar], which is a horizontal bar typically shown at the top of an app\n using the [appBar] property.\n * [BottomAppBar], which is a horizontal bar typically shown at the bottom\n of an app using the [bottomNavigationBar] property.\n * [FloatingActionButton], which is a circular button typically shown in the\n bottom right corner of the app using the [floatingActionButton] property.\n * [Drawer], which is a vertical panel that is typically displayed to the\n left of the body (and often hidden on phones) using the [drawer]\n property.\n * [BottomNavigationBar], which is a horizontal array of buttons typically\n shown along the bottom of the app using the [bottomNavigationBar]\n property.\n * [SnackBar], which is a temporary notification typically shown near the\n bottom of the app using the [ScaffoldState.showSnackBar] method.\n * [BottomSheet], which is an overlay typically shown near the bottom of the\n app. A bottom sheet can either be persistent, in which case it is shown\n using the [ScaffoldState.showBottomSheet] method, or modal, in which case\n it is shown using the [showModalBottomSheet] function.\n * [ScaffoldState], which is the state associated with this widget.\n * <https://material.io/design/layout/responsive-layout-grid.html>", "detail": "", "kind": 7, "label": "Scaffold" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CreateRectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that takes two [Rect] instances and returns a\n[RectTween] that transitions between them.\n\nThis is typically used with a [HeroController] to provide an animation for\n[Hero] positions that looks nicer than a linear movement. For example, see\n[MaterialRectArcTween].", "detail": "(Rect begin, Rect end) → Tween<Rect>", "kind": 7, "label": "CreateRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataColumnSortCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for [DataColumn.onSort] callback.", "detail": "(int columnIndex, bool ascending) → void", "kind": 7, "label": "DataColumnSortCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for strategies that build widgets based on asynchronous\ninteraction.\n\nSee also:\n\n * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Stream].\n * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Future].", "detail": "(BuildContext context, AsyncSnapshot<T> snapshot) → Widget", "kind": 7, "label": "AsyncWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshProgressIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An indicator for the progress of refreshing the contents of a widget.\n\nTypically used for swipe-to-refresh interactions. See [RefreshIndicator] for\na complete implementation of swipe-to-refresh driven by a [Scrollable]\nwidget.\n\nThe indicator arc is displayed with [valueColor], an animated value. To\nspecify a constant color use: `AlwaysStoppedAnimation<Color>(color)`.\n\nSee also:\n\n * [RefreshIndicator], which automatically displays a [CircularProgressIndicator]\n when the underlying vertical scrollable is overscrolled.", "detail": "", "kind": 7, "label": "RefreshProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for scrolling activities like dragging and flinging.\n\nSee also:\n\n * [ScrollPosition], which uses [ScrollActivity] objects to manage the\n [ScrollPosition] of a [Scrollable].", "detail": "", "kind": 7, "label": "ScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageIcon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An icon that comes from an [ImageProvider], e.g. an [AssetImage].\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for icons based on glyphs from fonts instead of images.\n * [Icons], a predefined font based set of icons from the material design library.", "detail": "", "kind": 7, "label": "ImageIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorberHandle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Handle to provide to a [SliverOverlapAbsorber], a [SliverOverlapInjector],\nand an [NestedScrollViewViewport], to shift overlap in a [NestedScrollView].\n\nA particular [SliverOverlapAbsorberHandle] can only be assigned to a single\n[SliverOverlapAbsorber] at a time. It can also be (and normally is) assigned\nto one or more [SliverOverlapInjector]s, which must be later descendants of\nthe same [NestedScrollViewViewport] as the [SliverOverlapAbsorber]. The\n[SliverOverlapAbsorber] must be a direct descendant of the\n[NestedScrollViewViewport], taking part in the same sliver layout. (The\n[SliverOverlapInjector] can be a descendant that takes part in a nested\nscroll view's sliver layout.)\n\nWhenever the [NestedScrollViewViewport] is marked dirty for layout, it will\ncause its assigned [SliverOverlapAbsorberHandle] to fire notifications. It\nis the responsibility of the [SliverOverlapInjector]s (and any other\nclients) to mark themselves dirty when this happens, in case the geometry\nsubsequently changes during layout.\n\nSee also:\n\n * [NestedScrollView], which uses a [NestedScrollViewViewport] and a\n [SliverOverlapAbsorber] to align its children, and which shows sample\n usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorberHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nSee also the discussions at [Key] and [Widget.key].", "detail": "", "kind": 7, "label": "ObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectangularSliderTrackShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s track.\n\nIt paints a solid colored rectangle, vertically centered in the\n[parentBox]. The track rectangle extends to the bounds of the [parentBox],\nbut is padded by the [RoundSliderOverlayShape] radius. The height is defined\nby the [SliderThemeData.trackHeight]. The color is determined by the\n[Slider]'s enabled state and the track piece's active state which are\ndefined by:\n [SliderThemeData.activeTrackColor],\n [SliderThemeData.inactiveTrackColor],\n [SliderThemeData.disabledActiveTrackColor],\n [SliderThemeData.disabledInactiveTrackColor].\n\nSee also:\n\n * [Slider] for the component that this is meant to display this shape.\n * [SliderThemeData] where an instance of this class is set to inform the\n slider of the visual details of the its track.\n * [SliderTrackShape] Base component for creating other custom track\n shapes.", "detail": "", "kind": 7, "label": "RectangularSliderTrackShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabPageSelector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a row of small circular indicators, one per tab. The selected\ntab's indicator is highlighted. Often used in conjunction with a [TabBarView].\n\nIf a [TabController] is not provided, then there must be a [DefaultTabController]\nancestor.", "detail": "", "kind": 7, "label": "TabPageSelector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackButtonIcon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A \"back\" icon that's appropriate for the current [TargetPlatform].\n\nThe current platform is determined by querying for the ambient [Theme].\n\nSee also:\n\n * [BackButton], an [IconButton] with a [BackButtonIcon] that calls\n [Navigator.maybePop] to return to the previous route.\n * [IconButton], which is a more general widget for creating buttons\n with icons.\n * [Icon], a material design icon.\n * [ThemeData.platform], which specifies the current platform.", "detail": "", "kind": 7, "label": "BackButtonIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectButtonBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by\n[WidgetInspector.selectButtonBuilder].", "detail": "(BuildContext context, VoidCallback onPressed) → Widget", "kind": 7, "label": "InspectorSelectButtonBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PersistentBottomSheetController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScaffoldFeatureController] for persistent bottom sheets.\n\nThis is the type of objects returned by [ScaffoldState.showBottomSheet].", "detail": "", "kind": 7, "label": "PersistentBottomSheetController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design back button.\n\nA [BackButton] is an [IconButton] with a \"back\" icon appropriate for the\ncurrent [TargetPlatform]. When pressed, the back button calls\n[Navigator.maybePop] to return to the previous route.\n\nWhen deciding to display a [BackButton], consider using\n`ModalRoute.of(context)?.canPop` to check whether the current route can be\npopped. If that value is false (e.g., because the current route is the\ninitial route), the [BackButton] will not have any effect when pressed,\nwhich could frustrate the user.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [AppBar], which automatically uses a [BackButton] in its\n [AppBar.leading] slot when the [Scaffold] has no [Drawer] and the\n current [Route] is not the [Navigator]'s first route.\n * [BackButtonIcon], which is useful if you need to create a back button\n that responds differently to being pressed.\n * [IconButton], which is a more general widget for creating buttons with\n icons.\n * [CloseButton], an alternative which may be more appropriate for leaf\n node pages in the navigation tree.", "detail": "", "kind": 7, "label": "BackButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOval", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildBuilderDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using a builder\ncallback.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot have to be built until they are displayed.", "detail": "", "kind": 7, "label": "ListWheelChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetLeave", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a [Draggable] leaves a [DragTarget].\n\nUsed by [DragTarget.onLeave].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetLeave" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Represents the details when a specific pointer event occurred on\nthe [Draggable].\n\nThis includes the [Velocity] at which the pointer was moving and [Offset]\nwhen the draggable event occurred, and whether its [DragTarget] accepted it.\n\nAlso, this is the details object for callbacks that use [DragEndCallback].", "detail": "", "kind": 7, "label": "DraggableDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [MultiChildRenderObjectWidget] as its configuration.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [ContainerRenderObjectMixin] mixin with a parent data\ntype that implements [ContainerParentDataMixin<RenderObject>]. Such widgets\nare expected to inherit from [MultiChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "MultiChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonTextTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonTheme] and [ButtonThemeData] to define a button's base\ncolors, and the defaults for the button's minimum size, internal padding,\nand shape.\n\nSee also:\n\n * [RaisedButton], [FlatButton], [OutlineButton], which are configured\n based on the ambient [ButtonTheme].", "detail": "", "kind": 13, "label": "ButtonTextTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Localizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the [Locale] for its `child` and the localized resources that the\nchild depends on.\n\nLocalized resources are loaded by the list of [LocalizationsDelegate]\n`delegates`. Each delegate is essentially a factory for a collection\nof localized resources. There are multiple delegates because there are\nmultiple sources for localizations within an app.\n\nDelegates are typically simple subclasses of [LocalizationsDelegate] that\noverride [LocalizationsDelegate.load]. For example a delegate for the\n`MyLocalizations` class defined below would be:\n\n```dart\nclass _MyDelegate extends LocalizationsDelegate<MyLocalizations> {\n @override\n Future<MyLocalizations> load(Locale locale) => MyLocalizations.load(locale);\n\n @override\n bool shouldReload(MyLocalizationsDelegate old) => false;\n}\n```\n\nEach delegate can be viewed as a factory for objects that encapsulate a\na set of localized resources. These objects are retrieved with\nby runtime type with [Localizations.of].\n\nThe [WidgetsApp] class creates a `Localizations` widget so most apps\nwill not need to create one. The widget app's `Localizations` delegates can\nbe initialized with [WidgetsApp.localizationsDelegates]. The [MaterialApp]\nclass also provides a `localizationsDelegates` parameter that's just\npassed along to the [WidgetsApp].\n\nApps should retrieve collections of localized resources with\n`Localizations.of<MyLocalizations>(context, MyLocalizations)`,\nwhere MyLocalizations is an app specific class defines one function per\nresource. This is conventionally done by a static `.of` method on the\nMyLocalizations class.\n\nFor example, using the `MyLocalizations` class defined below, one would\nlookup a localized title string like this:\n```dart\nMyLocalizations.of(context).title()\n```\nIf `Localizations` were to be rebuilt with a new `locale` then\nthe widget subtree that corresponds to [BuildContext] `context` would\nbe rebuilt after the corresponding resources had been loaded.\n\nThis class is effectively an [InheritedWidget]. If it's rebuilt with\na new `locale` or a different list of delegates or any of its\ndelegates' [LocalizationsDelegate.shouldReload()] methods returns true,\nthen widgets that have created a dependency by calling\n`Localizations.of(context)` will be rebuilt after the resources\nfor the new locale have been loaded.\n\n\nThis following class is defined in terms of the\n[Dart `intl` package](https://github.com/dart-lang/intl). Using the `intl`\npackage isn't required.\n\n```dart\nclass MyLocalizations {\n MyLocalizations(this.locale);\n\n final Locale locale;\n\n static Future<MyLocalizations> load(Locale locale) {\n return initializeMessages(locale.toString())\n .then((void _) {\n return MyLocalizations(locale);\n });\n }\n\n static MyLocalizations of(BuildContext context) {\n return Localizations.of<MyLocalizations>(context, MyLocalizations);\n }\n\n String title() => Intl.message('<title>', name: 'title', locale: locale.toString());\n // ... more Intl.message() methods like title()\n}\n```\nA class based on the `intl` package imports a generated message catalog that provides\nthe `initializeMessages()` function and the per-locale backing store for `Intl.message()`.\nThe message catalog is produced by an `intl` tool that analyzes the source code for\nclasses that contain `Intl.message()` calls. In this case that would just be the\n`MyLocalizations` class.\n\nOne could choose another approach for loading localized resources and looking them up while\nstill conforming to the structure of this example.", "detail": "", "kind": 7, "label": "Localizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the color, shape, and typography values for a material design slider\ntheme.\n\nUse this class to configure a [SliderTheme] widget, or to set the\n[ThemeData.sliderTheme] for a [Theme] widget.\n\nTo obtain the current ambient slider theme, use [SliderTheme.of].\n\nThe parts of a slider are:\n\n * The \"thumb\", which is a shape that slides horizontally when the user\n drags it.\n * The \"track\", which is the line that the slider thumb slides along.\n * The \"tick marks\", which are regularly spaced marks that are drawn when\n using discrete divisions.\n * The \"value indicator\", which appears when the user is dragging the thumb\n to indicate the value being selected.\n * The \"overlay\", which appears around the thumb, and is shown when the\n thumb is pressed, focused, or hovered. It is painted underneath the\n thumb, so it must extend beyond the bounds of the thumb itself to\n actually be visible.\n * The \"active\" side of the slider is the side between the thumb and the\n minimum value.\n * The \"inactive\" side of the slider is the side between the thumb and the\n maximum value.\n * The [Slider] is disabled when it is not accepting user input. See\n [Slider] for details on when this happens.\n\nThe thumb, track, tick marks, value indicator, and overlay can be customized\nby creating subclasses of [SliderTrackShape],\n[SliderComponentShape], and/or [SliderTickMarkShape]. See\n[RoundSliderThumbShape], [RectangularSliderTrackShape],\n[RoundSliderTickMarkShape], [PaddleSliderValueIndicatorShape], and\n[RoundSliderOverlayShape] for examples.\n\nThe track painting can be skipped by specifying 0 for [trackHeight].\nThe thumb painting can be skipped by specifying\n[SliderComponentShape.noThumb] for [SliderThemeData.thumbShape].\nThe overlay painting can be skipped by specifying\n[SliderComponentShape.noOverlay] for [SliderThemeData.overlayShape].\nThe tick mark painting can be skipped by specifying\n[SliderTickMarkShape.noTickMark] for [SliderThemeData.tickMarkShape].\nThe value indicator painting can be skipped by specifying the\nappropriate [ShowValueIndicator] for [SliderThemeData.showValueIndicator].\n\nSee also:\n\n * [SliderTheme] widget, which can override the slider theme of its\n children.\n * [Theme] widget, which performs a similar function to [SliderTheme],\n but for overall themes.\n * [ThemeData], which has a default [SliderThemeData].\n * [SliderTrackShape], to define custom slider track shapes.\n * [SliderComponentShape], to define custom slider component shapes.\n * [SliderTickMarkShape], to define custom slider tick mark shapes.", "detail": "", "kind": 7, "label": "SliderThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFadeBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the [AnimatedCrossFade.layoutBuilder] callback.\n\nThe `topChild` is the child fading in, which is normally drawn on top. The\n`bottomChild` is the child fading out, normally drawn on the bottom.\n\nFor good performance, the returned widget tree should contain both the\n`topChild` and the `bottomChild`; the depth of the tree, and the types of\nthe widgets in the tree, from the returned widget to each of the children\nshould be the same; and where there is a widget with multiple children, the\ntop child and the bottom child should be keyed using the provided\n`topChildKey` and `bottomChildKey` keys respectively.\n\n\n```dart\nWidget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) {\n return Stack(\n fit: StackFit.loose,\n children: <Widget>[\n Positioned(\n key: bottomChildKey,\n left: 0.0,\n top: 0.0,\n right: 0.0,\n child: bottomChild,\n ),\n Positioned(\n key: topChildKey,\n child: topChild,\n )\n ],\n );\n}\n```", "detail": "(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) → Widget", "kind": 7, "label": "AnimatedCrossFadeBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableScrollableSheet", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A container for a [Scrollable] that responds to drag gestures by resizing\nthe scrollable until a limit is reached, and then scrolling.\n\nThis widget can be dragged along the vertical axis between its\n[minChildSize], which defaults to `0.25` and [maxChildSize], which defaults\nto `1.0`. These sizes are percentages of the height of the parent container.\n\nThe widget coordinates resizing and scrolling of the widget returned by\nbuilder as the user drags along the horizontal axis.\n\nThe widget will initially be displayed at its initialChildSize which\ndefaults to `0.5`, meaning half the height of its parent. Dragging will work\nbetween the range of minChildSize and maxChildSize (as percentages of the\nparent container's height) as long as the builder creates a widget which\nuses the provided [ScrollController]. If the widget created by the\n[ScrollableWidgetBuilder] does not use provided [ScrollController], the\nsheet will remain at the initialChildSize.\n\n\nThis is a sample widget which shows a [ListView] that has 25 [ListTile]s.\nIt starts out as taking up half the body of the [Scaffold], and can be\ndragged up to the full height of the scaffold or down to 25% of the height\nof the scaffold. Upon reaching full height, the list contents will be\nscrolled up or down, until they reach the top of the list again and the user\ndrags the sheet back down.\n\n```dart\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('DraggableScrollableSheet'),\n ),\n body: SizedBox.expand(\n child: DraggableScrollableSheet(\n builder: (BuildContext context, ScrollController scrollController) {\n return Container(\n color: Colors.blue[100],\n child: ListView.builder(\n controller: scrollController,\n itemCount: 25,\n itemBuilder: (BuildContext context, int index) {\n return ListTile(title: Text('Item $index'));\n },\n ),\n );\n },\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DraggableScrollableSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ControlsWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A builder that creates a widget given the two callbacks `onStepContinue` and\n`onStepCancel`.\n\nUsed by [Stepper.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].", "detail": "(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) → Widget", "kind": 7, "label": "ControlsWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputDecorationTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the default appearance of [InputDecorator]s.\n\nThis class is used to define the value of [ThemeData.inputDecorationTheme].\nThe [InputDecorator], [TextField], and [TextFormField] widgets use\nthe current input decoration theme to initialize null [InputDecoration]\nproperties.\n\nThe [InputDecoration.applyDefaults] method is used to combine a input\ndecoration theme with an [InputDecoration] object.", "detail": "", "kind": 7, "label": "InputDecorationTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderTrackShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[context] is the same context for the render box of the [Slider].\n\n[center] is the offset of the center where this shape should be painted.\nThis offset is relative to the origin of the [context] canvas.\n\n[sliderTheme] is the theme assigned to the [Slider] that this shape\nbelongs to.\n\n[isEnabled] has the same value as [Slider.isInteractive]. If true, the\nslider will respond to input.\n\n[enableAnimation] is an animation triggered when the [Slider] is enabled,\nand it reverses when the slider is disabled. Enabled is the\n[Slider.isInteractive] state. Use this to paint intermediate frames for\nthis shape when the slider changes enabled state.\n\n[isDiscrete] is true if [Slider.divisions] is non-null. If true, the\nslider will render tick marks on top of the track.\n\n[parentBox] is the [RenderBox] of the [Slider]. Its attributes, such as\nsize, can be used to assist in painting this shape.\nBase class for slider track shapes.\n\nThe slider's thumb moves along the track. A discrete slider's tick marks\nare drawn after the track, but before the thumb, and are aligned with the\ntrack.\n\nThe [getPreferredRect] helps position the slider thumb and tick marks\nrelative to the track.\n\nSee also:\n\n * [RectangularSliderTrackShape], which is the default track shape.\n * [SliderTickMarkShape], which is the default tick mark shape.\n * [SliderComponentShape], which is the base class for custom a component\n shape.", "detail": "", "kind": 7, "label": "SliderTrackShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DisabledChipAttributes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be enabled and disabled.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "DisabledChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleAvatar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A circle that represents a user.\n\nTypically used with a user's profile image, or, in the absence of\nsuch an image, the user's initials. A given user's initials should\nalways be paired with the same background color, for consistency.\n\n\nIf the avatar is to have an image, the image should be specified in the\n[backgroundImage] property:\n\n```dart\nCircleAvatar(\n backgroundImage: NetworkImage(userAvatarUrl),\n)\n```\n\nThe image will be cropped to have a circle shape.\n\n\nIf the avatar is to just have the user's initials, they are typically\nprovided using a [Text] widget as the [child] and a [backgroundColor]:\n\n```dart\nCircleAvatar(\n backgroundColor: Colors.brown.shade800,\n child: Text('AH'),\n)\n```\n\nSee also:\n\n * [Chip], for representing users or concepts in long form.\n * [ListTile], which can combine an icon (such as a [CircleAvatar]) with\n some text for a fixed height list entry.\n * <https://material.io/design/components/chips.html#input-chips>", "detail": "", "kind": 7, "label": "CircleAvatar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin used by routes to handle back navigations internally by popping a list.\n\nWhen a [Navigator] is instructed to pop, the current route is given an\nopportunity to handle the pop internally. A `LocalHistoryRoute` handles the\npop internally if its list of local history entries is non-empty. Rather\nthan being removed as the current route, the most recent [LocalHistoryEntry]\nis removed from the list and its [LocalHistoryEntry.onRemove] is called.", "detail": "", "kind": 7, "label": "LocalHistoryRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Colors", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[Color] and [ColorSwatch] constants which represent Material design's\n[color palette](https://material.io/design/color/).\n\nInstead of using an absolute color from these palettes, consider using\n[Theme.of] to obtain the local [ThemeData] structure, which exposes the\ncolors selected for the current theme, such as [ThemeData.primaryColor] and\n[ThemeData.accentColor] (among many others).\n\nMost swatches have colors from 100 to 900 in increments of one hundred, plus\nthe color 50. The smaller the number, the more pale the color. The greater\nthe number, the darker the color. The accent swatches (e.g. [redAccent]) only\nhave the values 100, 200, 400, and 700.\n\nIn addition, a series of blacks and whites with common opacities are\navailable. For example, [black54] is a pure black with 54% opacity.\n\n\nTo select a specific color from one of the swatches, index into the swatch\nusing an integer for the specific color desired, as follows:\n\n```dart\nColor selection = Colors.green[400]; // Selects a mid-range green.\n```\n\nEach [ColorSwatch] constant is a color and can used directly. For example:\n\n```dart\nContainer(\n color: Colors.blue, // same as Colors.blue[500] or Colors.blue.shade500\n)\n```\n\n## Color palettes\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pink.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pinkAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.red.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.redAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepOrange.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepOrangeAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orange.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orangeAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amber.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amberAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellow.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellowAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lime.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.limeAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightGreen.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightGreenAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.green.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.greenAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.teal.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.tealAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyan.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyanAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightBlue.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightBlueAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blue.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blueAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigo.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigoAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purple.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purpleAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurple.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurpleAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blueGrey.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.brown.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.grey.png)\n\n## Blacks and whites\n\nThese colors are identified by their transparency. The low transparency\nlevels (e.g. [Colors.white12] and [Colors.white10]) are very hard to see and\nshould be avoided in general. They are intended for very subtle effects.\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blacks.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.whites.png)\n\nThe [Colors.transparent] color isn't shown here because it is entirely\ninvisible!", "detail": "", "kind": 7, "label": "Colors" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An element that lazily builds children for a [SliverMultiBoxAdaptorWidget].\n\nImplements [RenderSliverBoxChildManager], which lets this element manage\nthe children of subclasses of [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flex", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in a one-dimensional array.\n\nThe [Flex] widget allows you to control the axis along which the children are\nplaced (horizontal or vertical). This is referred to as the _main axis_. If\nyou know the main axis in advance, then consider using a [Row] (if it's\nhorizontal) or [Column] (if it's vertical) instead, because that will be less\nverbose.\n\nTo cause a child to expand to fill the available space in the [direction]\nof this widget's main axis, wrap the child in an [Expanded] widget.\n\nThe [Flex] widget does not scroll (and in general it is considered an error\nto have more children in a [Flex] than will fit in the available room). If\nyou have some widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nIf you only have one child, then rather than using [Flex], [Row], or\n[Column], consider using [Align] or [Center] to position the child.\n\n## Layout algorithm\n\n_This section describes how a [Flex] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Flex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded main axis constraints and the incoming\n cross axis constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight cross axis constraints\n that match the incoming max extent in the cross axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of main axis space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [Flex] is the maximum cross axis extent of\n the children (which will always satisfy the incoming constraints).\n5. The main axis extent of the [Flex] is determined by the [mainAxisSize]\n property. If the [mainAxisSize] property is [MainAxisSize.max], then the\n main axis extent of the [Flex] is the max extent of the incoming main\n axis constraints. If the [mainAxisSize] property is [MainAxisSize.min],\n then the main axis extent of the [Flex] is the sum of the main axis\n extents of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a version of this widget that is always horizontal.\n * [Column], for a version of this widget that is always vertical.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n that may be sized smaller (leaving some remaining room unused).\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flex" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExcludeSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that drops all the semantics of its descendants.\n\nWhen [excluding] is true, this widget (and its subtree) is excluded from\nthe semantics tree.\n\nThis can be used to hide descendant widgets that would otherwise be\nreported but that would only be confusing. For example, the\nmaterial library's [Chip] widget hides the avatar since it is\nredundant with the chip label.\n\nSee also:\n\n * [BlockSemantics] which drops semantics of widgets earlier in the tree.", "detail": "", "kind": 7, "label": "ExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollEndNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has stopped scrolling.\n\nSee also:\n\n * [ScrollStartNotification], which indicates that scrolling has started.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollEndNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [StatefulWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatefulElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InteractiveInkFeature", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An ink feature that displays a [color] \"splash\" in response to a user\ngesture that can be confirmed or canceled.\n\nSubclasses call [confirm] when an input gesture is recognized. For\nexample a press event might trigger an ink feature that's confirmed\nwhen the corresponding up event is seen.\n\nSubclasses call [cancel] when an input gesture is aborted before it\nis recognized. For example a press event might trigger an ink feature\nthat's cancelled when the pointer is dragged out of the reference\nbox.\n\nThe [InkWell] and [InkResponse] widgets generate instances of this\nclass.", "detail": "", "kind": 7, "label": "InteractiveInkFeature" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialPointArcTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that interpolates an [Offset] along a circular arc.\n\nThis class specializes the interpolation of [Tween<Offset>] so that instead\nof a straight line, the intermediate points follow the arc of a circle in a\nmanner consistent with material design principles.\n\nThe arc's radius is related to the bounding box that contains the [begin]\nand [end] points. If the bounding box is taller than it is wide, then the\ncenter of the circle will be horizontally aligned with the end point.\nOtherwise the center of the circle will be aligned with the begin point.\nThe arc's sweep is always less than or equal to 90 degrees.\n\nSee also:\n\n * [Tween], for a discussion on how to use interpolation objects.\n * [MaterialRectArcTween], which extends this concept to interpolating [Rect]s.", "detail": "", "kind": 7, "label": "MaterialPointArcTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An implementation of scroll physics that matches Android.\n\nSee also:\n\n * [BouncingScrollSimulation], which implements iOS scroll physics.", "detail": "", "kind": 7, "label": "ClampingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The activity a scroll view performs when a the user drags their finger\nacross the screen.\n\nSee also:\n\n * [ScrollDragController], which listens to the [Drag] and actually scrolls\n the scroll view.", "detail": "", "kind": 7, "label": "DragScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShowValueIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the conditions under which the value indicator on a [Slider]\nwill be shown. Used with [SliderThemeData.showValueIndicator].\n\nSee also:\n\n * [Slider], a Material Design slider widget.\n * [SliderThemeData], which describes the actual configuration of a slider\n theme.", "detail": "", "kind": 13, "label": "ShowValueIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InteractiveInkFeatureFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An encapsulation of an [InteractiveInkFeature] constructor used by\n[InkWell], [InkResponse], and [ThemeData].\n\nInteractive ink feature implementations should provide a static const\n`splashFactory` value that's an instance of this class. The `splashFactory`\ncan be used to configure an [InkWell], [InkResponse] or [ThemeData].\n\nSee also:\n\n * [InkSplash.splashFactory]\n * [InkRipple.splashFactory]", "detail": "", "kind": 7, "label": "InteractiveInkFeatureFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsFlutterBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A concrete binding for applications based on the Widgets framework.\n\nThis is the glue that binds the framework to the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Route", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An abstraction for an entry managed by a [Navigator].\n\nThis class defines an abstract interface between the navigator and the\n\"routes\" that are pushed on and popped off the navigator. Most routes have\nvisual affordances, which they place in the navigators [Overlay] using one\nor more [OverlayEntry] objects.\n\nSee [Navigator] for more explanation of how to use a Route\nwith navigation, including code examples.\n\nSee [MaterialPageRoute] for a route that replaces the\nentire screen with a platform-adaptive transition.", "detail": "", "kind": 7, "label": "Route" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBarIndicatorSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines how the bounds of the selected tab indicator are computed.\n\nSee also:\n\n * [TabBar], which displays a row of tabs.\n * [TabBarView], which displays a widget for the currently selected tab.\n * [TabBar.indicator], which defines the appearance of the selected tab\n indicator relative to the tab's bounds.", "detail": "", "kind": 13, "label": "TabBarIndicatorSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicensePage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A page that shows licenses for software used by the application.\n\nTo show a [LicensePage], use [showLicensePage].\n\nThe [AboutDialog] shown by [showAboutDialog] and [AboutListTile] includes\na button that calls [showLicensePage].\n\nThe licenses shown on the [LicensePage] are those returned by the\n[LicenseRegistry] API, which can be used to add more licenses to the list.", "detail": "", "kind": 7, "label": "LicensePage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaginatedDataTable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design data table that shows data using multiple pages.\n\nA paginated data table shows [rowsPerPage] rows of data per page and\nprovides controls for showing other pages.\n\nData is read lazily from from a [DataTableSource]. The widget is presented\nas a [Card].\n\nSee also:\n\n * [DataTable], which is not paginated.\n * <https://material.io/go/design-data-tables#data-tables-tables-within-cards>", "detail": "", "kind": 7, "label": "PaginatedDataTable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDragController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scrolls a scroll view as the user drags their finger across the screen.\n\nSee also:\n\n * [DragScrollActivity], which is the activity the scroll view performs\n while a drag is underway.", "detail": "", "kind": 7, "label": "ScrollDragController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedStack", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Stack] that shows a single child from a list of children.\n\nThe displayed child is the one with the given [index]. The stack is\nalways as big as the largest child.\n\nIf value is null, then nothing is displayed.\n\nSee also:\n\n * [Stack], for more details about stacks.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a single color as well a color swatch with ten shades of the color.\n\nThe color's shades are referred to by index. The greater the index, the\ndarker the color. There are 10 valid indices: 50, 100, 200, ..., 900.\nThe value of this color should the same the value of index 500 and [shade500].\n\nSee also:\n\n * [Colors], which defines all of the standard material colors.", "detail": "", "kind": 7, "label": "MaterialColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Transform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that applies a transformation before painting its child.\n\n\n\nThis example rotates and skews an orange box containing text, keeping the\ntop right corner pinned to its original position.\n\n```dart\nContainer(\n color: Colors.black,\n child: Transform(\n alignment: Alignment.topRight,\n transform: Matrix4.skewY(0.3)..rotateZ(-math.pi / 12.0),\n child: Container(\n padding: const EdgeInsets.all(8.0),\n color: const Color(0xFFE8581C),\n child: const Text('Apartment for rent!'),\n ),\n ),\n)\n```\n\nSee also:\n\n * [RotatedBox], which rotates the child widget during layout, not just\n during painting.\n * [FractionalTranslation], which applies a translation to the child\n that is relative to the child's size.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.", "detail": "", "kind": 7, "label": "Transform" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawChip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A raw material design chip.\n\nThis serves as the basis for all of the chip widget types to aggregate.\nIt is typically not created directly, one of the other chip types\nthat are appropriate for the use case are used instead:\n\n * [Chip] a simple chip that can only display information and be deleted.\n * [InputChip] represents a complex piece of information, such as an entity\n (person, place, or thing) or conversational text, in a compact form.\n * [ChoiceChip] allows a single selection from a set of options.\n * [FilterChip] a chip that uses tags or descriptive words as a way to\n filter content.\n * [ActionChip]s display a set of actions related to primary content.\n\nRaw chips are typically only used if you want to create your own custom chip\ntype.\n\nRaw chips can be selected by setting [onSelected], deleted by setting\n[onDeleted], and pushed like a button with [onPressed]. They have a [label],\nand they can have a leading icon (see [avatar]) and a trailing icon\n([deleteIcon]). Colors and padding can be customized.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "RawChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysScrollableScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics that always lets the user scroll.\n\nOn Android, overscrolls will be clamped by default and result in an\noverscroll glow. On iOS, overscrolls will load a spring that will return\nthe scroll view to its normal range when released.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "AlwaysScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics for environments that prevent the scroll offset from reaching\nbeyond the bounds of the content.\n\nThis is the behavior typically seen on Android.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on Android.\n * [BouncingScrollPhysics], which is the analogous physics for iOS' bouncing\n behavior.\n * [GlowingOverscrollIndicator], which is used by [ScrollConfiguration] to\n provide the glowing effect that is usually found with this clamping effect\n on Android. When using a [MaterialApp], the [GlowingOverscrollIndicator]'s\n glow color is specified to use [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "ClampingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RichText", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A paragraph of rich text.\n\nThe [RichText] widget displays text that uses multiple different styles. The\ntext to display is described using a tree of [TextSpan] objects, each of\nwhich has an associated style that is used for that subtree. The text might\nbreak across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nText displayed in a [RichText] widget must be explicitly styled. When\npicking which style to use, consider using [DefaultTextStyle.of] the current\n[BuildContext] to provide defaults. For more details on how to style text in\na [RichText] widget, see the documentation for [TextStyle].\n\nConsider using the [Text] widget to integrate with the [DefaultTextStyle]\nautomatically. When all the text uses the same style, the default constructor\nis less verbose. The [Text.rich] constructor allows you to style multiple\nspans with the default text style while still allowing specified styles per\nspan.\n\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Hello ',\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),\n TextSpan(text: ' world!'),\n ],\n ),\n)\n```\n\nSee also:\n\n * [TextStyle], which discusses how to style text.\n * [TextSpan], which is used to describe the text in a paragraph.\n * [Text], which automatically applies the ambient styles described by a\n [DefaultTextStyle] to a single string.", "detail": "", "kind": 7, "label": "RichText" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckboxListTile", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] with a [Checkbox]. In other words, a checkbox with a label.\n\nThe entire list tile is interactive: tapping anywhere in the tile toggles\nthe checkbox.\n\nThe [value], [onChanged], and [activeColor] properties of this widget are\nidentical to the similarly-named properties on the [Checkbox] widget.\n\nThe [title], [subtitle], [isThreeLine], and [dense] properties are like\nthose of the same name on [ListTile].\n\nThe [selected] property on this widget is similar to the [ListTile.selected]\nproperty, but the color used is that described by [activeColor], if any,\ndefaulting to the accent color of the current [Theme]. No effort is made to\ncoordinate the [selected] state and the [value] state; to have the list tile\nappear selected when the checkbox is checked, pass the same value to both.\n\nThe checkbox is shown on the right by default in left-to-right languages\n(i.e. the trailing edge). This can be changed using [controlAffinity]. The\n[secondary] widget is placed on the opposite side. This maps to the\n[ListTile.leading] and [ListTile.trailing] properties of [ListTile].\n\nTo show the [CheckboxListTile] as disabled, pass null as the [onChanged]\ncallback.\n\n\nThis widget shows a checkbox that, when checked, slows down all animations\n(including the animation of the checkbox itself getting checked!).\n\nThis sample requires that you also import 'package:flutter/scheduler.dart',\nso that you can reference [timeDilation].\n\n```dart\nCheckboxListTile(\n title: const Text('Animate Slowly'),\n value: timeDilation != 1.0,\n onChanged: (bool value) {\n setState(() { timeDilation = value ? 20.0 : 1.0; });\n },\n secondary: const Icon(Icons.hourglass_empty),\n)\n```\n\nSee also:\n\n * [ListTileTheme], which can be used to affect the style of list tiles,\n including checkbox list tiles.\n * [RadioListTile], a similar widget for radio buttons.\n * [SwitchListTile], a similar widget for switches.\n * [ListTile] and [Checkbox], the widgets from which this widget is made.", "detail": "", "kind": 7, "label": "CheckboxListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScope", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Establishes a scope in which widgets can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nA focus scope does not itself receive focus but instead helps remember\nprevious focus states. A scope is currently active when its [node] is the\nfirst focus of its parent scope. To activate a [FocusScope], either use the\n[autofocus] property or explicitly make the [node] the first focus in the\nparent scope:\n\n```dart\nFocusScope.of(context).setFirstFocus(node);\n```\n\nIf a [FocusScope] is removed from the widget tree, then the previously\nfocused node will be focused, but only if the [node] is the same [node]\nobject as in the previous frame. To assure this, you can use a GlobalKey to\nkeep the [FocusScope] widget from being rebuilt from one frame to the next,\nor pass in the [node] from a parent that is not rebuilt. If there is no next\nsibling, then the parent scope node will be focused.\n\nSee also:\n\n * [FocusScopeNode], which is the associated node in the focus tree.\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.", "detail": "", "kind": 7, "label": "FocusScope" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Form", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An optional container for grouping together multiple form field widgets\n(e.g. [TextField] widgets).\n\nEach individual form field should be wrapped in a [FormField] widget, with\nthe [Form] widget as a common ancestor of all of those. Call methods on\n[FormState] to save, reset, or validate each [FormField] that is a\ndescendant of this [Form]. To obtain the [FormState], you may use [Form.of]\nwith a context whose ancestor is the [Form], or pass a [GlobalKey] to the\n[Form] constructor and call [GlobalKey.currentState].\n\nThis example shows a [Form] with one [TextFormField] and a [RaisedButton]. A\n[GlobalKey] is used here to identify the [Form] and validate input.\n\n```dart\nfinal _formKey = GlobalKey<FormState>();\n\n@override\nWidget build(BuildContext context) {\n return Form(\n key: _formKey,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n TextFormField(\n validator: (value) {\n if (value.isEmpty) {\n return 'Please enter some text';\n }\n },\n ),\n Padding(\n padding: const EdgeInsets.symmetric(vertical: 16.0),\n child: RaisedButton(\n onPressed: () {\n // Validate will return true if the form is valid, or false if\n // the form is invalid.\n if (_formKey.currentState.validate()) {\n // Process data.\n }\n },\n child: Text('Submit'),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [GlobalKey], a key that is unique across the entire app.\n * [FormField], a single form field widget that maintains the current state.\n * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].", "detail": "", "kind": 7, "label": "Form" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4Tween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [Matrix4]s.\n\nThis class specializes the interpolation of [Tween<Matrix4>] to be\nappropriate for transformation matrices.\n\nCurrently this class works only for translations.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "Matrix4Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that's called when a [DrawerController] is\nopened or closed.", "detail": "(bool isOpened) → void", "kind": 7, "label": "DrawerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Table", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that uses the table layout algorithm for its children.\n\n\nIf you only have one row, the [Row] widget is more appropriate. If you only\nhave one column, the [SliverList] or [Column] widgets will be more\nappropriate.\n\nRows size vertically based on their contents. To control the column widths,\nuse the [columnWidths] property.\n\nFor more details about the table layout algorithm, see [RenderTable].\nTo control the alignment of children, see [TableCell].", "detail": "", "kind": 7, "label": "Table" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that does not require mutable state.\n\nA stateless widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\n\nStateless widget are useful when the part of the user interface you are\ndescribing does not depend on anything other than the configuration\ninformation in the object itself and the [BuildContext] in which the widget\nis inflated. For compositions that can change dynamically, e.g. due to\nhaving an internal clock-driven state, or depending on some system state,\nconsider using [StatefulWidget].\n\n## Performance considerations\n\nThe [build] method of a stateless widget is typically only called in three\nsituations: the first time the widget is inserted in the tree, when the\nwidget's parent changes its configuration, and when an [InheritedWidget] it\ndepends on changes.\n\nIf a widget's parent will regularly change the widget's configuration, or if\nit depends on inherited widgets that frequently change, then it is important\nto optimize the performance of the [build] method to maintain a fluid\nrendering performance.\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateless widget:\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. For example, instead of an elaborate arrangement\n of [Row]s, [Column]s, [Padding]s, and [SizedBox]es to position a single\n child in a particularly fancy manner, consider using just an [Align] or a\n [CustomSingleChildLayout]. Instead of an intricate layering of multiple\n [Container]s and with [Decoration]s to draw just the right graphical\n effect, consider a single [CustomPaint] widget.\n\n * Use `const` widgets where possible, and provide a `const` constructor for\n the widget so that users of the widget can also do so.\n\n * Consider refactoring the stateless widget into a stateful widget so that\n it can use some of the techniques described at [StatefulWidget], such as\n caching common parts of subtrees and using [GlobalKey]s when changing the\n tree structure.\n\n * If the widget is likely to get rebuilt frequently due to the use of\n [InheritedWidget]s, consider refactoring the stateless widget into\n multiple widgets, with the parts of the tree that change being pushed to\n the leaves. For example instead of building a tree with four widgets, the\n inner-most widget depending on the [Theme], consider factoring out the\n part of the build function that builds the inner-most widget into its own\n widget, so that only the inner-most widget needs to be rebuilt when the\n theme changes.\n\n\nThe following is a skeleton of a stateless widget subclass called `GreenFrog`.\n\nNormally, widgets have more constructor arguments, each of which corresponds\nto a `final` property.\n\n```dart\nclass GreenFrog extends StatelessWidget {\n const GreenFrog({ Key key }) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFF2DBD3A));\n }\n}\n```\n\n\nThis next example shows the more generic widget `Frog` which can be given\na color and a child:\n\n```dart\nclass Frog extends StatelessWidget {\n const Frog({\n Key key,\n this.color = const Color(0xFF2DBD3A),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n @override\n Widget build(BuildContext context) {\n return Container(color: color, child: child);\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatelessWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossFadeState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies which of two children to show. See [AnimatedCrossFade].\n\nThe child that is shown will fade in, while the other will fade out.", "detail": "", "kind": 13, "label": "CrossFadeState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalObjectKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A global key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nIf the object is not private, then it is possible that collisions will occur\nwhere independent widgets will reuse the same object as their\n[GlobalObjectKey] value in a different part of the tree, leading to a global\nkey conflict. To avoid this problem, create a private [GlobalObjectKey]\nsubclass, as in:\n\n```dart\nclass _MyKey extends GlobalObjectKey {\n const _MyKey(Object value) : super(value);\n}\n```\n\nSince the [runtimeType] of the key is part of its identity, this will\nprevent clashes with other [GlobalObjectKey]s even if they have the same\nvalue.\n\nAny [GlobalObjectKey] created for the same value will match.", "detail": "", "kind": 7, "label": "GlobalObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Material design text theme.\n\nDefinitions for the various typographical styles found in material design\n(e.g., button, caption). Rather than creating a [TextTheme] directly,\nyou can obtain an instance as [Typography.black] or [Typography.white].\n\nTo obtain the current text theme, call [Theme.of] with the current\n[BuildContext] and read the [ThemeData.textTheme] property.\n\nThe Material Design typography scheme was significantly changed in the\ncurrent (2018) version of the specification\n(https://material.io/design/typography).\n\nThe 2018 spec has thirteen text styles:\n```\nNAME SIZE WEIGHT SPACING\nheadline1 96.0 light -1.5\nheadline2 60.0 light -0.5\nheadline3 48.0 normal 0.0\nheadline4 34.0 normal 0.25\nheadline5 24.0 normal 0.0\nheadline6 20.0 medium 0.15\nsubtitle1 16.0 normal 0.15\nsubtitle2 14.0 medium 0.1\nbody1 16.0 normal 0.5\nbody2 14.0 normal 0.25\nbutton 14.0 medium 0.75\ncaption 12.0 normal 0.4\noverline 10.0 normal 1.5\n\n```\nWhere \"light\" is `FontWeight.w300`, \"normal\" is `FontWeight.w400` and\n\"medium\" is `FontWeight.w500`.\n\nThe [TextTheme] API is based on the original material (2014)\ndesign spec, which used different text style names. For backwards\ncompatibility's sake, this API continues to use the original\nnames. The table below should help with understanding the API in\nterms of the 2018 material spec.\n\nEach of the [TextTheme] text styles corresponds to one of the\nstyles from 2018 spec. By default, the font sizes, font weights\nand letter spacings have not changed from their original,\n2014, values.\n```\nNAME SIZE WEIGHT SPACING 2018 NAME\ndisplay4 112.0 thin 0.0 headline1\ndisplay3 56.0 normal 0.0 headline2\ndisplay2 45.0 normal 0.0 headline3\ndisplay1 34.0 normal 0.0 headline4\nheadline 24.0 normal 0.0 headline5\ntitle 20.0 medium 0.0 headline6\nsubhead 16.0 normal 0.0 subtitle1\nbody2 14.0 medium 0.0 body1\nbody1 14.0 normal 0.0 body2\ncaption 12.0 normal 0.0 caption\nbutton 14.0 medium 0.0 button\nsubtitle 14.0 medium 0.0 subtitle2\noverline 10.0 normal 0.0 overline\n```\n\nWhere \"thin\" is `FontWeight.w100`, \"normal\" is `FontWeight.w400` and\n\"medium\" is `FontWeight.w500`. Letter spacing for all of the original\ntext styles was 0.0.\n\nTo configure a [Theme] for the new sizes, weights, and letter spacings,\ninitialize its [ThemeData.typography] value with a [Typography] that\nobject that specifies the 2018 versions of the geometry themes:\n[Typography.englishLike2018], [Typography.dense2018],\nand [Typography.tall2018].\n\nThe following image [from the material design\nspecification](https://material.io/go/design-typography#typography-styles)\nshows the recommended styles for each of the properties of a [TextTheme].\nThis image uses the `Roboto` font, which is the font used on Android. On\niOS, the [San Francisco\nfont](https://developer.apple.com/ios/human-interface-guidelines/visual-design/typography/)\nis automatically used instead.\n\n![To see the image, visit the typography site referenced below.](https://storage.googleapis.com/material-design/publish/material_v_11/assets/0Bzhp5Z4wHba3alhXZ2pPWGk3Zjg/style_typography_styles_scale.png)\n\nSee also:\n\n * [Typography], the class that generates [TextTheme]s appropriate for a platform.\n * [Theme], for other aspects of a material design application that can be\n globally adjusted, such as the color scheme.\n * <https://material.io/design/typography/>", "detail": "", "kind": 7, "label": "TextTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialInkController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for creating [InkSplash]s and [InkHighlight]s on a material.\n\nTypically obtained via [Material.of].", "detail": "", "kind": 7, "label": "MaterialInkController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepperType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the [Stepper]'s main axis.", "detail": "", "kind": 13, "label": "StepperType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonTheme] to configure the color and geometry of buttons.\n\nA button theme can be specified as part of the overall Material theme\nusing [ThemeData.buttonTheme]. The Material theme's button theme data\ncan be overridden with [ButtonTheme].", "detail": "", "kind": 7, "label": "ButtonThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design floating action button.\n\nA floating action button is a circular icon button that hovers over content\nto promote a primary action in the application. Floating action buttons are\nmost commonly used in the [Scaffold.floatingActionButton] field.\n\n\nUse at most a single floating action button per screen. Floating action\nbuttons should be used for positive actions such as \"create\", \"share\", or\n\"navigate\". (If more than one floating action button is used within a\n[Route], then make sure that each button has a unique [heroTag], otherwise\nan exception will be thrown.)\n\nIf the [onPressed] callback is null, then the button will be disabled and\nwill not react to touch. It is highly discouraged to disable a floating\naction button as there is no indication to the user that the button is\ndisabled. Consider changing the [backgroundColor] if disabling the floating\naction button.\n\nThis example shows how to make a simple [FloatingActionButton] in a\n[Scaffold], with a pink [backgroundColor] and a thumbs up [Icon].\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Floating Action Button Sample'),\n ),\n body: Center(\n child: Text('Press the button below!')\n ),\n floatingActionButton: FloatingActionButton(\n onPressed: () {\n // Add your onPressed code here!\n },\n child: Icon(Icons.thumb_up),\n backgroundColor: Colors.pink,\n ),\n );\n}\n```\n\nThis example shows how to make an extended [FloatingActionButton] in a\n[Scaffold], with a pink [backgroundColor] and a thumbs up [Icon] and a\n[Text] label.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Floating Action Button Sample'),\n ),\n body: Center(\n child: Text('Press the extended button below!'),\n ),\n floatingActionButton: FloatingActionButton.extended(\n onPressed: () {\n // Add your onPressed code here!\n },\n label: Text('Approve'),\n icon: Icon(Icons.thumb_up),\n backgroundColor: Colors.pink,\n ),\n );\n}\n```\n\nSee also:\n\n * [Scaffold], in which floating action buttons typically live.\n * [RaisedButton], another kind of button that appears to float above the\n content.\n * <https://material.io/design/components/buttons-floating-action-button.html>", "detail": "", "kind": 7, "label": "FloatingActionButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls the default color, opacity, and size of icons in a widget subtree.\n\nThe icon theme is honored by [Icon] and [ImageIcon] widgets.", "detail": "", "kind": 7, "label": "IconTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyedSubtree", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that builds its child.\n\nUseful for attaching a key to an existing widget.", "detail": "", "kind": 7, "label": "KeyedSubtree" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that calls callbacks in response to pointer events.\n\nRather than listening for raw pointer events, consider listening for\nhigher-level gestures using [GestureDetector].\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nIf it has a child, this widget defers to the child for sizing behavior. If\nit does not have a child, it grows to fit the parent instead.\n\nThis example makes a [Container] react to being entered by a mouse\npointer, showing a count of the number of entries and exits.\n\n```dart\nimport 'package:flutter/gestures.dart';\n```\n\n```dart\nint _enterCounter = 0;\nint _exitCounter = 0;\ndouble x = 0.0;\ndouble y = 0.0;\n\nvoid _incrementCounter(PointerEnterEvent details) {\n setState(() {\n _enterCounter++;\n });\n}\n\nvoid _decrementCounter(PointerExitEvent details) {\n setState(() {\n _exitCounter++;\n });\n}\n\nvoid _updateLocation(PointerHoverEvent details) {\n setState(() {\n x = details.position.dx;\n y = details.position.dy;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Center(\n child: ConstrainedBox(\n constraints: new BoxConstraints.tight(Size(300.0, 200.0)),\n child: Listener(\n onPointerEnter: _incrementCounter,\n onPointerHover: _updateLocation,\n onPointerExit: _decrementCounter,\n child: Container(\n color: Colors.lightBlueAccent,\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pointed at this box this many times:'),\n Text(\n '$_enterCounter Entries\\n$_exitCounter Exits',\n style: Theme.of(context).textTheme.display1,\n ),\n Text(\n 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [MouseTracker] an object that tracks mouse locations in the [GestureBinding].", "detail": "", "kind": 7, "label": "Listener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView].\n\n[ListWheelScrollView] lazily constructs its children during layout to avoid\ncreating more children than are visible through the [Viewport]. This\ndelegate is responsible for providing children to [ListWheelScrollView]\nduring that stage.\n\nSee also:\n\n * [ListWheelChildListDelegate], a delegate that supplies children using an\n explicit list.\n * [ListWheelChildLoopingListDelegate], a delegate that supplies infinite\n children by looping an explicit list.\n * [ListWheelChildBuilderDelegate], a delegate that supplies children using\n a builder callback.", "detail": "", "kind": 7, "label": "ListWheelChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopScope", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Registers a callback to veto attempts by the user to dismiss the enclosing\n[ModalRoute].\n\nSee also:\n\n * [ModalRoute.addScopedWillPopCallback] and [ModalRoute.removeScopedWillPopCallback],\n which this widget uses to register and unregister [onWillPop].", "detail": "", "kind": 7, "label": "WillPopScope" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetWillAccept", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for determining whether the given data will be accepted by a [DragTarget].\n\nUsed by [DragTarget.onWillAccept].", "detail": "(T data) → bool", "kind": 7, "label": "DragTargetWillAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableTextState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [EditableText].", "detail": "", "kind": 7, "label": "EditableTextState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The possible alignments of a [Drawer].", "detail": "", "kind": 13, "label": "DrawerAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedIcon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Shows an animated icon at a given animation [progress].\n\nThe available icons are specified in [AnimatedIcons].\n\n\n```dart\nAnimatedIcon(\n icon: AnimatedIcons.menu_arrow,\n progress: controller,\n semanticLabel: 'Show menu',\n)\n```\n", "detail": "", "kind": 7, "label": "AnimatedIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list of widgets arranged linearly.\n\n[ListView] is the most commonly used scrolling widget. It displays its\nchildren one after another in the scroll direction. In the cross axis, the\nchildren are required to fill the [ListView].\n\nIf non-null, the [itemExtent] forces the children to have the given extent\nin the scroll direction. Specifying an [itemExtent] is more efficient than\nletting the children determine their own extent because the scrolling\nmachinery can make use of the foreknowledge of the children's extent to save\nwork, for example when the scroll position changes drastically.\n\nThere are four options for constructing a [ListView]:\n\n 1. The default constructor takes an explicit [List<Widget>] of children. This\n constructor is appropriate for list views with a small number of\n children because constructing the [List] requires doing work for every\n child that could possibly be displayed in the list view instead of just\n those children that are actually visible.\n\n 2. The [ListView.builder] constructor takes an [IndexedWidgetBuilder], which\n builds the children on demand. This constructor is appropriate for list views\n with a large (or infinite) number of children because the builder is called\n only for those children that are actually visible.\n\n 3. The [ListView.separated] constructor takes two [IndexedWidgetBuilder]s:\n `itemBuilder` builds child items on demand, and `separatorBuilder`\n similarly builds separator children which appear in between the child items.\n This constructor is appropriate for list views with a fixed number of children.\n\n 4. The [ListView.custom] constructor takes a [SliverChildDelegate], which provides\n the ability to customize additional aspects of the child model. For example,\n a [SliverChildDelegate] can control the algorithm used to estimate the\n size of children that are not actually visible.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nThis example uses the default constructor for [ListView] which takes an\nexplicit [List<Widget>] of children. This [ListView]'s children are made up\nof [Container]s with [Text].\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view.png)\n\n```dart\nListView(\n padding: const EdgeInsets.all(8.0),\n children: <Widget>[\n Container(\n height: 50,\n color: Colors.amber[600],\n child: const Center(child: Text('Entry A')),\n ),\n Container(\n height: 50,\n color: Colors.amber[500],\n child: const Center(child: Text('Entry B')),\n ),\n Container(\n height: 50,\n color: Colors.amber[100],\n child: const Center(child: Text('Entry C')),\n ),\n ],\n)\n```\n\nThis example mirrors the previous one, creating the same list using the\n[ListView.builder] constructor. Using the [IndexedWidgetBuilder], children\nare built lazily and can be infinite in number.\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_builder.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.builder(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n }\n);\n```\n\nThis example continues to build from our the previous ones, creating a\nsimilar list using [ListView.separated]. Here, a [Divider] is used as a\nseparator.\n\n![A ListView of 3 amber colored containers with sample text and a Divider\nbetween each of them.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_separated.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.separated(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n },\n separatorBuilder: (BuildContext context, int index) => const Divider(),\n);\n```\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as when using\nthe default constructor) or lazily provided ones (such as when using the\n[ListView.builder] constructor).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree,\nstates and render objects are destroyed. A new child at the same position\nin the list will be lazily recreated along with new elements, states and\nrender objects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the list child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the list child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child\n widget subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the list child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the list keeps the child's render\n object (and by extension, its associated elements and states) in a cache\n list instead of destroying them. When scrolled back into view, the render\n object is repainted as-is (if it wasn't marked dirty in the interim).\n\n This only works if [addAutomaticKeepAlives] and [addRepaintBoundaries]\n are false since those parameters cause the [ListView] to wrap each child\n widget subtree with other widgets.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default when\n [addAutomaticKeepAlives] is true). Instead of unconditionally caching the\n child element subtree when scrolling off-screen like [KeepAlive],\n [AutomaticKeepAlive] can let whether to cache the subtree be determined\n by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its list child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the list child element subtree will be destroyed\n when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive\n by using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\n## Transitioning to [CustomScrollView]\n\nA [ListView] is basically a [CustomScrollView] with a single [SliverList] in\nits [CustomScrollView.slivers] property.\n\nIf [ListView] is no longer sufficient, for example because the scroll view\nis to have both a list and a grid, or because the list is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[ListView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [ListView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing either a\n[SliverList] or a [SliverFixedExtentList]; the former if [itemExtent] on the\n[ListView] was null, and the latter if [itemExtent] was not null.\n\nThe [childrenDelegate] property on [ListView] corresponds to the\n[SliverList.delegate] (or [SliverFixedExtentList.delegate]) property. The\n[new ListView] constructor's `children` argument corresponds to the\n[childrenDelegate] being a [SliverChildListDelegate] with that same\nargument. The [new ListView.builder] constructor's `itemBuilder` and\n`childCount` arguments correspond to the [childrenDelegate] being a\n[SliverChildBuilderDelegate] with the matching arguments.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the list itself, and having\nthe [SliverList] instead be a child of the [SliverPadding].\n\n[CustomScrollView]s don't automatically avoid obstructions from [MediaQuery]\nlike [ListView]s do. To reproduce the behavior, wrap the slivers in\n[SliverSafeArea]s.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [ListView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nListView(\n shrinkWrap: true,\n padding: const EdgeInsets.all(20.0),\n children: <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n shrinkWrap: true,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverList(\n delegate: SliverChildListDelegate(\n <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n ),\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is scrollable, 2D array of widgets.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [ListBody], which arranges its children in a similar manner, but without\n scrolling.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ListView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable, 2D array of widgets.\n\nThe main axis direction of a grid is the direction in which it scrolls (the\n[scrollDirection]).\n\nThe most commonly used grid layouts are [GridView.count], which creates a\nlayout with a fixed number of tiles in the cross axis, and\n[GridView.extent], which creates a layout with tiles that have a maximum\ncross-axis extent. A custom [SliverGridDelegate] can produce an arbitrary 2D\narrangement of children, including arrangements that are unaligned or\noverlapping.\n\nTo create a grid with a large (or infinite) number of children, use the\n[GridView.builder] constructor with either a\n[SliverGridDelegateWithFixedCrossAxisCount] or a\n[SliverGridDelegateWithMaxCrossAxisExtent] for the [gridDelegate].\n\nTo use a custom [SliverChildDelegate], use [GridView.custom].\n\nTo create a linear array of children, use a [ListView].\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n## Transitioning to [CustomScrollView]\n\nA [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in\nits [CustomScrollView.slivers] property.\n\nIf [GridView] is no longer sufficient, for example because the scroll view\nis to have both a grid and a list, or because the grid is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[GridView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [GridView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing just a\n[SliverGrid].\n\nThe [childrenDelegate] property on [GridView] corresponds to the\n[SliverGrid.delegate] property, and the [gridDelegate] property on the\n[GridView] corresponds to the [SliverGrid.gridDelegate] property.\n\nThe [new GridView], [new GridView.count], and [new GridView.extent]\nconstructors' `children` arguments correspond to the [childrenDelegate]\nbeing a [SliverChildListDelegate] with that same argument. The [new\nGridView.builder] constructor's `itemBuilder` and `childCount` arguments\ncorrespond to the [childrenDelegate] being a [SliverChildBuilderDelegate]\nwith the matching arguments.\n\nThe [new GridView.count] and [new GridView.extent] constructors create\ncustom grid delegates, and have equivalently named constructors on\n[SliverGrid] to ease the transition: [new SliverGrid.count] and [new\nSliverGrid.extent] respectively.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the grid itself, and having\nthe [SliverGrid] instead be a child of the [SliverPadding].\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [GridView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nGridView.count(\n primary: false,\n padding: const EdgeInsets.all(20.0),\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n primary: false,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverGrid.count(\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ListView], which is scrollable, linear list of widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "GridView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Opacity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.\n\n\n\nThis example shows some [Text] when the `_visible` member field is true, and\nhides it when it is false:\n\n```dart\nOpacity(\n opacity: _visible ? 1.0 : 0.0,\n child: const Text('Now you see me, now you don\\'t!'),\n)\n```\n\nThis is more efficient than adding and removing the child widget from the\ntree on demand.\n\n## Performance considerations for opacity animation\n\nAnimating an [Opacity] widget directly causes the widget (and possibly its\nsubtree) to rebuild each frame, which is not very efficient. Consider using\nan [AnimatedOpacity] instead.\n\n## Transparent image\n\nIf only a single [Image] or [Color] needs to be composited with an opacity\nbetween 0.0 and 1.0, it's much faster to directly use them without [Opacity]\nwidgets.\n\nFor example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much\nfaster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`.\n\n\nThe following example draws an [Image] with 0.5 opacity without using\n[Opacity]:\n\n```dart\nImage.network(\n 'https://raw.githubusercontent.com/flutter/assets-for-api-docs/master/packages/diagrams/assets/blend_mode_destination.jpeg',\n color: Color.fromRGBO(255, 255, 255, 0.5),\n colorBlendMode: BlendMode.modulate\n)\n```\n\n\nDirectly drawing an [Image] or [Color] with opacity is faster than using\n[Opacity] on top of them because [Opacity] could apply the opacity to a\ngroup of widgets and therefore a costly offscreen buffer will be used.\nDrawing content into the offscreen buffer may also trigger render target\nswitches and such switching is particularly slow in older GPUs.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly, because it is either visible or hidden, rather than allowing\n fractional opacity values).\n * [ShaderMask], which can apply more elaborate effects to its child.\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [AnimatedOpacity], which uses an animation internally to efficiently\n animate opacity.\n * [FadeTransition], which uses a provided animation to efficiently animate\n opacity.\n * [Image], which can directly provide a partially transparent image with\n much less performance hit.", "detail": "", "kind": 7, "label": "Opacity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Card", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design card. A card has slightly rounded corners and a shadow.\n\nA card is a sheet of [Material] used to represent some related information,\nfor example an album, a geographical location, a meal, contact details, etc.\n\nThis is what it looks like when run:\n\n![A card with a slight shadow, consisting of two rows, one with an icon and\nsome text describing a musical, and the other with buttons for buying\ntickets or listening to the show.](https://flutter.github.io/assets-for-api-docs/assets/material/card.png)\n\n\nThis sample shows creation of a [Card] widget that shows album information\nand two actions.\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Card(\n child: Column(\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n const ListTile(\n leading: Icon(Icons.album),\n title: Text('The Enchanted Nightingale'),\n subtitle: Text('Music by Julie Gable. Lyrics by Sidney Stein.'),\n ),\n ButtonTheme.bar( // make buttons use the appropriate styles for cards\n child: ButtonBar(\n children: <Widget>[\n FlatButton(\n child: const Text('BUY TICKETS'),\n onPressed: () { /* ... */ },\n ),\n FlatButton(\n child: const Text('LISTEN'),\n onPressed: () { /* ... */ },\n ),\n ],\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSometimes the primary action area of a card is the card itself. Cards can be\none large touch target that shows a detail screen when tapped.\n\n\nThis sample shows creation of a [Card] widget that can be tapped. When\ntapped this [Card]'s [InkWell] displays an \"ink splash\" that fills the\nentire card.\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Card(\n child: InkWell(\n splashColor: Colors.blue.withAlpha(30),\n onTap: () {\n print('Card tapped.');\n },\n child: Container(\n width: 300,\n height: 100,\n child: Text('A card that can be tapped'),\n ),\n ),\n ),\n );\n}\n```\n\n\nSee also:\n\n * [ListTile], to display icons and text in a card.\n * [ButtonBar], to display buttons at the bottom of a card. Typically these\n would be styled using a [ButtonTheme] created with [new ButtonTheme.bar].\n * [showDialog], to display a modal card.\n * <https://material.io/design/components/cards.html>", "detail": "", "kind": 7, "label": "Card" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollHoldController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for holding a [Scrollable] stationary.\n\nAn object that implements this interface is returned by\n[ScrollPosition.hold]. It holds the scrollable stationary until an activity\nis started or the [cancel] method is called.", "detail": "", "kind": 7, "label": "ScrollHoldController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The Flutter logo, in widget form. This widget respects the [IconTheme].\nFor guidelines on using the Flutter logo, visit https://flutter.dev/brand.\n\nSee also:\n\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for showing icons the Material design icon library.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "FlutterLogo" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleResolutionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.localeResolutionCallback].\n\nIt is recommended to provide a [LocaleListResolutionCallback] instead of a\n[LocaleResolutionCallback] when possible, as [LocaleResolutionCallback] only\nreceives a subset of the information provided in [LocaleListResolutionCallback].\n\nA [LocaleResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the default\nlocale for the device after [LocaleListResolutionCallback] fails or is not provided.\n\nThis callback is also used if the app is created with a specific locale using\nthe [new WidgetsApp] `locale` parameter.\n\nThe [locale] is either the value of [WidgetsApp.locale], or the device's default\nlocale when the app started, or the device locale the user selected after the app\nwas started. The default locale is the first locale in the list of preferred\nlocales. If [locale] is null, then Flutter has not yet received the locale\ninformation from the platform. The [supportedLocales] parameter is just the value of\n[WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleListResolutionCallback], which takes a list of preferred locales (instead of one locale).\n Resolutions by [LocaleListResolutionCallback] take precedence over [LocaleResolutionCallback].", "detail": "(Locale locale, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownButtonHideUnderline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An inherited widget that causes any descendant [DropdownButton]\nwidgets to not include their regular underline.\n\nThis is used by [DataTable] to remove the underline from any\n[DropdownButton] widgets placed within material data tables, as\nrequired by the material design specification.", "detail": "", "kind": 7, "label": "DropdownButtonHideUnderline" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirectionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [Dismissible] to indicate that it has been dismissed in\nthe given `direction`.\n\nUsed by [Dismissible.onDismissed].", "detail": "(DismissDirection direction) → void", "kind": 7, "label": "DismissDirectionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An abstract widget for building widgets that gradually change their\nvalues over a period of time.\n\nSubclasses' States must provide a way to visit the subclass's relevant\nfields to animate. [ImplicitlyAnimatedWidget] will then automatically\ninterpolate and animate those fields using the provided duration and\ncurve when those fields change.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A route that blocks interaction with previous routes.\n\n[ModalRoute]s cover the entire [Navigator]. They are not necessarily\n[opaque], however; for example, a pop-up menu uses a [ModalRoute] but only\nshows the menu in a small box overlapping the previous route.\n\nThe `T` type argument is the return value of the route. If there is no\nreturn value, consider using `void` as the return value.", "detail": "", "kind": 7, "label": "ModalRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [BorderRadius]s.\n\nThis class specializes the interpolation of [Tween<BorderRadius>] to use\n[BorderRadius.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderRadiusTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for widgets that efficiently propagate information down the tree.\n\nTo obtain the nearest instance of a particular type of inherited widget from\na build context, use [BuildContext.inheritFromWidgetOfExactType].\n\nInherited widgets, when referenced in this way, will cause the consumer to\nrebuild when the inherited widget itself changes state.\n\n\n\nThe following is a skeleton of an inherited widget called `FrogColor`:\n\n```dart\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor) as FrogColor;\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n```\n\nThe convention is to provide a static method `of` on the [InheritedWidget]\nwhich does the call to [BuildContext.inheritFromWidgetOfExactType]. This\nallows the class to define its own fallback logic in case there isn't\na widget in scope. In the example above, the value returned will be\nnull in that case, but it could also have defaulted to a value.\n\nSometimes, the `of` method returns the data rather than the inherited\nwidget; for example, in this case it could have returned a [Color] instead\nof the `FrogColor` widget.\n\nOccasionally, the inherited widget is an implementation detail of another\nclass, and is therefore private. The `of` method in that case is typically\nput on the public class instead. For example, [Theme] is implemented as a\n[StatelessWidget] that builds a private inherited widget; [Theme.of] looks\nfor that inherited widget using [BuildContext.inheritFromWidgetOfExactType]\nand then returns the [ThemeData].\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CollapseMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The collapsing effect while the space bar expands or collapses.", "detail": "", "kind": 13, "label": "CollapseMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radio", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design radio button.\n\nUsed to select between a number of mutually exclusive values. When one radio\nbutton in a group is selected, the other radio buttons in the group cease to\nbe selected. The values are of type `T`, the type parameter of the [Radio]\nclass. Enums are commonly used for this purpose.\n\nThe radio button itself does not maintain any state. Instead, when the state\nof the radio button changes, the widget calls the [onChanged] callback.\nMost widget that use a radio button will listen for the [onChanged]\ncallback and rebuild the radio button with a new [groupValue] to update the\nvisual appearance of the radio button.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [RadioListTile], which combines this widget with a [ListTile] so that\n you can give the radio button a label.\n * [Slider], for selecting a value in a range.\n * [Checkbox] and [Switch], for toggling a particular value on or off.\n * <https://material.io/design/components/selection-controls.html#radio-buttons>", "detail": "", "kind": 7, "label": "Radio" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressDraggable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Makes its child draggable starting from long press.", "detail": "", "kind": 7, "label": "LongPressDraggable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlertDialog", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design alert dialog.\n\nAn alert dialog informs the user about situations that require\nacknowledgement. An alert dialog has an optional title and an optional list\nof actions. The title is displayed above the content and the actions are\ndisplayed below the content.\n\nIf the content is too large to fit on the screen vertically, the dialog will\ndisplay the title and the actions and let the content overflow, which is\nrarely desired. Consider using a scrolling widget for [content], such as\n[SingleChildScrollView], to avoid overflow. (However, be aware that since\n[AlertDialog] tries to size itself using the intrinsic dimensions of its\nchildren, widgets such as [ListView], [GridView], and [CustomScrollView],\nwhich use lazy viewports, will not work. If this is a problem, consider\nusing [Dialog] directly.)\n\nFor dialogs that offer the user a choice between several options, consider\nusing a [SimpleDialog].\n\nTypically passed as the child widget to [showDialog], which displays the\ndialog.\n\n\nThis snippet shows a method in a [State] which, when called, displays a dialog box\nand returns a [Future] that completes when the dialog is dismissed.\n\n```dart\nFuture<void> _neverSatisfied() async {\n return showDialog<void>(\n context: context,\n barrierDismissible: false, // user must tap button!\n builder: (BuildContext context) {\n return AlertDialog(\n title: Text('Rewind and remember'),\n content: SingleChildScrollView(\n child: ListBody(\n children: <Widget>[\n Text('You will never be satisfied.'),\n Text('You\\’re like me. I’m never satisfied.'),\n ],\n ),\n ),\n actions: <Widget>[\n FlatButton(\n child: Text('Regret'),\n onPressed: () {\n Navigator.of(context).pop();\n },\n ),\n ],\n );\n },\n );\n}\n```\n\nSee also:\n\n * [SimpleDialog], which handles the scrolling of the contents but has no [actions].\n * [Dialog], on which [AlertDialog] and [SimpleDialog] are based.\n * [CupertinoAlertDialog], an iOS-styled alert dialog.\n * [showDialog], which actually displays the dialog and returns its result.\n * <https://material.io/design/components/dialogs.html#alert-dialog>", "detail": "", "kind": 7, "label": "AlertDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A graphical icon widget drawn with a glyph from a font described in\nan [IconData] such as material's predefined [IconData]s in [Icons].\n\nIcons are not interactive. For an interactive icon, consider material's\n[IconButton].\n\nThere must be an ambient [Directionality] widget when using [Icon].\nTypically this is introduced automatically by the [WidgetsApp] or\n[MaterialApp].\n\nThis widget assumes that the rendered icon is squared. Non-squared icons may\nrender incorrectly.\n\n\nThis example shows how to use [Icon] to create an addition icon, in the\ncolor pink, and 30 x 30 pixels in size.\n\n```dart\nIcon(\n Icons.add,\n color: Colors.pink,\n size: 30.0,\n)\n```\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [Icons], for the list of available icons for use with this class.\n * [IconTheme], which provides ambient configuration for icons.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "Icon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBarView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A page view that displays the widget which corresponds to the currently\nselected tab. Typically used in conjunction with a [TabBar].\n\nIf a [TabController] is not provided, then there must be a [DefaultTabController]\nancestor.", "detail": "", "kind": 7, "label": "TabBarView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state of a [Step] which is used to control the style of the circle and\ntext.\n\nSee also:\n\n * [Step]", "detail": "", "kind": 13, "label": "StepState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidgetBaseState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for widgets with implicit animations that need to rebuild their\nwidget tree as the animation runs.\n\nThis class calls [build] each frame that the animation tickets. For a\nvariant that does not rebuild each frame, consider subclassing\n[ImplicitlyAnimatedWidgetState] directly.\n\nSubclasses must implement the [forEachTween] method to allow\n[AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields\nand animate them.", "detail": "", "kind": 7, "label": "AnimatedWidgetBaseState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePopDisposition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates whether the current route should be popped.\n\nUsed as the return value for [Route.willPop].\n\nSee also:\n\n * [WillPopScope], a widget that hooks into the route's [Route.willPop]\n mechanism.", "detail": "", "kind": 13, "label": "RoutePopDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrolling container that animates items when they are inserted or removed.\n\nThis widget's [AnimatedListState] can be used to dynamically insert or remove\nitems. To refer to the [AnimatedListState] either provide a [GlobalKey] or\nuse the static [of] method from an item's input callback.\n\nThis widget is similar to one created by [ListView.builder].", "detail": "", "kind": 7, "label": "AnimatedList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorScheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A set of twelve colors based on the\n[Material spec](https://material.io/design/color/the-color-system.html)\nthat can be used to configure the color properties of most components.\n\nThe [Theme] has a color scheme, [ThemeData.colorScheme], which is constructed\nwith [ColorScheme.fromSwatch].", "detail": "", "kind": 7, "label": "ColorScheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraintsTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [BoxConstraints].\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[BoxConstraints.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BoxConstraintsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkFeature", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual reaction on a piece of [Material].\n\nTo add an ink feature to a piece of [Material], obtain the\n[MaterialInkController] via [Material.of] and call\n[MaterialInkController.addInkFeature].", "detail": "", "kind": 7, "label": "InkFeature" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsApp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience class that wraps a number of widgets that are commonly\nrequired for an application.\n\nOne of the primary roles that [WidgetsApp] provides is binding the system\nback button to popping the [Navigator] or quitting the application.\n\nSee also: [CheckedModeBanner], [DefaultTextStyle], [MediaQuery],\n[Localizations], [Title], [Navigator], [Overlay], [SemanticsDebugger] (the\nwidgets wrapped by this one).", "detail": "", "kind": 7, "label": "WidgetsApp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for scroll views whose items have the same size.\n\nSimilar to a standard [ScrollController] but with the added convenience\nmechanisms to read and go to item indices rather than a raw pixel scroll\noffset.\n\nSee also:\n\n * [ListWheelScrollView], a scrollable view widget with fixed size items\n that this widget controls.\n * [FixedExtentMetrics], the `metrics` property exposed by\n [ScrollNotification] from [ListWheelScrollView] which can be used\n to listen to the current item index on a push basis rather than polling\n the [FixedExtentScrollController].", "detail": "", "kind": 7, "label": "FixedExtentScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays an image.\n\nSeveral constructors are provided for the various ways that an image can be\nspecified:\n\n * [new Image], for obtaining an image from an [ImageProvider].\n * [new Image.asset], for obtaining an image from an [AssetBundle]\n using a key.\n * [new Image.network], for obtaining an image from a URL.\n * [new Image.file], for obtaining an image from a [File].\n * [new Image.memory], for obtaining an image from a [Uint8List].\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\nTo automatically perform pixel-density-aware asset resolution, specify the\nimage using an [AssetImage] and make sure that a [MaterialApp], [WidgetsApp],\nor [MediaQuery] widget exists above the [Image] widget in the widget tree.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nSee also:\n\n * [Icon], which shows an image from a font.\n * [new Ink.image], which is the preferred way to show an image in a\n material application (especially if the image is in a [Material] and will\n have an [InkWell] on top of it).\n * [Image](https://api.flutter.dev/flutter/dart-ui/Image-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorber", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[SliverOverlapInjector].\n\nSee also:\n\n * [NestedScrollView], whose documentation has sample code showing how to\n use this widget.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPadding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that applies padding on each side of another sliver.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverPadding]\nis a basic sliver that insets another sliver by applying padding on each\nside.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a [SliverPersistentHeader] with\n`pinned:true` will cause the app bar to overlap earlier slivers (contrary to\nthe normal behavior of pinned app bars), and while the app bar is pinned,\nthe padding will scroll away.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.", "detail": "", "kind": 7, "label": "SliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRowInkWell", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular area of a Material that responds to touch but clips\nits ink splashes to the current table row of the nearest table.\n\nMust have an ancestor [Material] widget in which to cause ink\nreactions and an ancestor [Table] widget to establish a row.\n\nThe [TableRowInkWell] must be in the same coordinate space (modulo\ntranslations) as the [Table]. If it's rotated or scaled or\notherwise transformed, it will not be able to describe the\nrectangle of the row in its own coordinate system as a [Rect], and\nthus the splash will not occur. (In general, this is easy to\nachieve: just put the [TableRowInkWell] as the direct child of the\n[Table], and put the other contents of the cell inside it.)", "detail": "", "kind": 7, "label": "TableRowInkWell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stepper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material stepper widget that displays progress through a sequence of\nsteps. Steppers are particularly useful in the case of forms where one step\nrequires the completion of another one, or where multiple steps need to be\ncompleted in order to submit the whole form.\n\nThe widget is a flexible wrapper. A parent class should pass [currentStep]\nto this widget based on some logic triggered by the three callbacks that it\nprovides.\n\nSee also:\n\n * [Step]\n * <https://material.io/archive/guidelines/components/steppers.html>", "detail": "", "kind": 7, "label": "Stepper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A builder that builds a widget given a child.\n\nThe child should typically be part of the returned widget tree.\n\nUsed by [AnimatedBuilder.builder], as well as [WidgetsApp.builder] and\n[MaterialApp.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context, Widget child) → Widget", "kind": 7, "label": "TransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Viewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is bigger on the inside.\n\n[Viewport] is the visual workhorse of the scrolling machinery. It displays a\nsubset of its children according to its own dimensions and the given\n[offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[Viewport] hosts a bidirectional list of slivers, anchored on a [center]\nsliver, which is placed at the zero scroll offset. The center widget is\ndisplayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[Viewport] cannot contain box children directly. Instead, use a\n[SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [Viewport] into widgets that are easier to use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [ShrinkWrappingViewport], a variant of [Viewport] that shrink-wraps its\n contents along the main axis.", "detail": "", "kind": 7, "label": "Viewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a shape.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\nFor shapes that cannot be expressed as a rectangle with rounded corners use\n[PhysicalShape].\n\nSee also:\n\n * [DecoratedBox], which can apply more arbitrary shadow effects.\n * [ClipRect], which applies a clip to its child.", "detail": "", "kind": 7, "label": "PhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Baseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that positions its child according to the child's baseline.\n\nThis widget shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child. If [baseline] is less than the distance from\nthe top of the child to the baseline of the child, then the child\nis top-aligned instead.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [Center], a widget that centers its child within itself.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Baseline" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of an icon fulfilled by a font glyph.\n\nSee [Icons] for a number of predefined icons available for material\ndesign applications.", "detail": "", "kind": 7, "label": "IconData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An implementation of scroll physics that matches iOS.\n\nSee also:\n\n * [ClampingScrollSimulation], which implements Android scroll physics.", "detail": "", "kind": 7, "label": "BouncingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillRemaining", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[SliverFillRemaining] sizes its child to fill the viewport in the cross axis\nand to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CardTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [Card] widgets.\n\nDescendant widgets obtain the current [CardTheme] object using\n`CardTheme.of(context)`. Instances of [CardTheme] can be\ncustomized with [CardTheme.copyWith].\n\nTypically a [CardTheme] is specified as part of the overall [Theme]\nwith [ThemeData.cardTheme].\n\nAll [CardTheme] properties are `null` by default. When null, the [Card]\nwill use the values from [ThemeData] if they exist, otherwise it will\nprovide its own defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "CardTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableCanceledCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a [Draggable] is dropped without being accepted by a [DragTarget].\n\nUsed by [Draggable.onDraggableCanceled].", "detail": "(Velocity velocity, Offset offset) → void", "kind": 7, "label": "DraggableCanceledCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShrinkWrappingViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is bigger on the inside and shrink wraps its children in the\nmain axis.\n\n[ShrinkWrappingViewport] displays a subset of its children according to its\nown dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[ShrinkWrappingViewport] differs from [Viewport] in that [Viewport] expands\nto fill the main axis whereas [ShrinkWrappingViewport] sizes itself to match\nits children in the main axis. This shrink wrapping behavior is expensive\nbecause the children, and hence the viewport, could potentially change size\nwhenever the [offset] changes (e.g., because of a collapsing header).\n\n[ShrinkWrappingViewport] cannot contain box children directly. Instead, use\na [SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [ShrinkWrappingViewport] into widgets that are easier to\n use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [Viewport], a viewport that does not shrink-wrap its contents.", "detail": "", "kind": 7, "label": "ShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrackingScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScrollController] whose [initialScrollOffset] tracks its most recently\nupdated [ScrollPosition].\n\nThis class can be used to synchronize the scroll offset of two or more\nlazily created scroll views that share a single [TrackingScrollController].\nIt tracks the most recently updated scroll position and reports it as its\n`initialScrollOffset`.\n\n\nIn this example each [PageView] page contains a [ListView] and all three\n[ListView]'s share a [TrackingScrollController]. The scroll offsets of all\nthree list views will track each other, to the extent that's possible given\nthe different list lengths.\n\n```dart\nPageView(\n children: <Widget>[\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),\n ),\n ],\n)\n```\n\nIn this example the `_trackingController` would have been created by the\nstateful widget that built the widget tree.", "detail": "", "kind": 7, "label": "TrackingScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for stateful widgets that have exactly one inflated instance in\nthe tree.\n\nSuch widgets must be given a [GlobalKey]. This key can be generated by the\nsubclass from its [Type] object, e.g. by calling `super(key: new\nGlobalObjectKey(MyWidget))` where `MyWidget` is the name of the subclass.\n\nSince only one instance can be inflated at a time, there is only ever one\ncorresponding [State] object. That object is exposed, for convenience, via\nthe [currentState] property.\n\nWhen subclassing [UniqueWidget], provide the corresponding [State] subclass\nas the type argument.", "detail": "", "kind": 7, "label": "UniqueWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that scrolls.\n\nScrollable widgets consist of three pieces:\n\n 1. A [Scrollable] widget, which listens for various user gestures and\n implements the interaction design for scrolling.\n 2. A viewport widget, such as [Viewport] or [ShrinkWrappingViewport], which\n implements the visual design for scrolling by displaying only a portion\n of the widgets inside the scroll view.\n 3. One or more slivers, which are widgets that can be composed to created\n various scrolling effects, such as lists, grids, and expanding headers.\n\n[ScrollView] helps orchestrate these pieces by creating the [Scrollable] and\nthe viewport and deferring to its subclass to create the slivers.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedModalBarrier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself,\nand can be configured with an animated color value.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nThis widget is similar to [ModalBarrier] except that it takes an animated\n[color] instead of a single color.\n\nSee also:\n\n * [ModalRoute], which uses this widget.", "detail": "", "kind": 7, "label": "AnimatedModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The top-most region of a material design drawer. The header's [child]\nwidget, if any, is placed inside a [Container] whose [decoration] can be\npassed as an argument, inset by the given [padding].\n\nPart of the material design [Drawer].\n\nRequires one of its ancestors to be a [Material] widget. This condition is\nsatisfied by putting the [DrawerHeader] in a [Drawer].\n\nSee also:\n\n * [UserAccountsDrawerHeader], a variant of [DrawerHeader] that is\n specialized for showing user accounts.\n * <https://material.io/design/components/navigation-drawer.html>", "detail": "", "kind": 7, "label": "DrawerHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPaint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [CustomPaint] first asks its [painter] to paint on the\ncurrent canvas, then it paints its child, and then, after painting its\nchild, it asks its [foregroundPainter] to paint. The coordinate system of the\ncanvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing [CustomPainter].\n\n\nBecause custom paint calls its painters during paint, you cannot call\n`setState` or `markNeedsLayout` during the callback (the layout for this\nframe has already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [size], which defaults to\n[Size.zero]. [size] must not be null.\n\n[isComplex] and [willChange] are hints to the compositor's raster cache\nand must not be null.\n\n\nThis example shows how the sample custom painter shown at [CustomPainter]\ncould be used in a [CustomPaint] widget to display a background to some\ntext.\n\n```dart\nCustomPaint(\n painter: Sky(),\n child: Center(\n child: Text(\n 'Once upon a time...',\n style: const TextStyle(\n fontSize: 40.0,\n fontWeight: FontWeight.w900,\n color: Color(0xFFFFFFFF),\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomPainter], the class to extend when creating custom painters.\n * [Canvas], the class that a custom painter uses to paint.", "detail": "", "kind": 7, "label": "CustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicHeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Element that supports building children lazily for [ListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotatedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that rotates its child by a integral number of quarter turns.\n\nUnlike [Transform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.\n\n\nThis snippet rotates the child (some [Text]) so that it renders from bottom\nto top, like an axis label on a graph:\n\n```dart\nRotatedBox(\n quarterTurns: 3,\n child: const Text('Hello World!'),\n)\n```\n\nSee also:\n\n * [Transform], which is a paint effect that allows you to apply an\n arbitrary transform to a child.\n * [new Transform.rotate], which applies a rotation paint effect.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "RotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapInjector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [RenderSliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [RenderViewport] (probably a [RenderNestedScrollViewViewport]), so\nthat it will always be laid out before the [RenderSliverOverlapInjector]\nduring a particular frame.", "detail": "", "kind": 7, "label": "RenderSliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItemBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [PopupMenuButton] to lazily construct the items shown when\nthe button is pressed.\n\nUsed by [PopupMenuButton.itemBuilder].", "detail": "(BuildContext context) → List<PopupMenuEntry<T>>", "kind": 7, "label": "PopupMenuItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates a route for the given route settings.\n\nUsed by [Navigator.onGenerateRoute] and [Navigator.onUnknownRoute].", "detail": "(RouteSettings settings) → Route<dynamic>", "kind": 7, "label": "RouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPath", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using a path.\n\nCalls a callback on a delegate whenever the widget is to be\npainted. The callback returns a path and the widget prevents the\nchild from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized widgets:\n\n * To clip to a rectangle, consider [ClipRect].\n * To clip to an oval or circle, consider [ClipOval].\n * To clip to a rounded rectangle, consider [ClipRRect].\n\nTo clip to a particular [ShapeBorder], consider using either the\n[ClipPath.shape] static method or the [ShapeBorderClipper] custom clipper\nclass.", "detail": "", "kind": 7, "label": "ClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CloseButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design close button.\n\nA [CloseButton] is an [IconButton] with a \"close\" icon. When pressed, the\nclose button calls [Navigator.maybePop] to return to the previous route.\n\nUse a [CloseButton] instead of a [BackButton] on fullscreen dialogs or\npages that may solicit additional actions to close.\n\nSee also:\n\n * [AppBar], which automatically uses a [CloseButton] in its\n [AppBar.leading] slot when appropriate.\n * [BackButton], which is more appropriate for middle nodes in the\n navigation tree or where pages can be popped instantaneously with\n no user data consequence.\n * [IconButton], to create other material design icon buttons.", "detail": "", "kind": 7, "label": "CloseButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormField", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single form field.\n\nThis widget maintains the current state of the form field, so that updates\nand validation errors are visually reflected in the UI.\n\nWhen used inside a [Form], you can use methods on [FormState] to query or\nmanipulate the form data as a whole. For example, calling [FormState.save]\nwill invoke each [FormField]'s [onSaved] callback in turn.\n\nUse a [GlobalKey] with [FormField] if you want to retrieve its current\nstate, for example if you want one form field to depend on another.\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nSee also:\n\n * [Form], which is the widget that aggregates the form fields.\n * [TextField], which is a commonly used form field for entering text.", "detail": "", "kind": 7, "label": "FormField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The glue between the widgets layer and the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidgetState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for widgets with implicit animations.\n\n[ImplicitlyAnimatedWidgetState] requires that subclasses respond to the\nanimation, themselves. If you would like `setState()` to be called\nautomatically as the animation changes, use [AnimatedWidgetBaseState].\n\nSubclasses must implement the [forEachTween] method to allow\n[ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's\nfields and animate them.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidgetState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteTransitionsBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the function that builds a route's transitions.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildTransitions] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) → Widget", "kind": 7, "label": "RouteTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusManager", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manages the focus tree.\n\nThe focus tree keeps track of which [FocusNode] is the user's current\nkeyboard focus. The widget that owns the [FocusNode] often listens for\nkeyboard events.\n\nThe focus manager is responsible for holding the [FocusScopeNode] that is\nthe root of the focus tree and tracking which [FocusNode] has the overall\nfocus.\n\nThe [FocusManager] is held by the [WidgetsBinding] as\n[WidgetsBinding.focusManager]. The [FocusManager] is rarely accessed\ndirectly. Instead, to find the [FocusScopeNode] for a given [BuildContext],\nuse [FocusScope.of].\n\nThe [FocusManager] knows nothing about [FocusNode]s other than the one that\nis currently focused. If a [FocusScopeNode] is removed, then the\n[FocusManager] will attempt to focus the next [FocusScopeNode] in the focus\ntree that it maintains, but if the current focus in that [FocusScopeNode] is\nnull, it will stop there, and no [FocusNode] will have focus.\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusManager" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for [PageView].\n\nA page controller lets you manipulate which page is visible in a [PageView].\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nSee also:\n\n * [PageView], which is the widget this object controls.", "detail": "", "kind": 7, "label": "PageController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that is unique across the entire app.\n\nGlobal keys uniquely identify elements. Global keys provide access to other\nobjects that are associated with elements, such as the a [BuildContext] and,\nfor [StatefulWidget]s, a [State].\n\nWidgets that have global keys reparent their subtrees when they are moved\nfrom one location in the tree to another location in the tree. In order to\nreparent its subtree, a widget must arrive at its new location in the tree\nin the same animation frame in which it was removed from its old location in\nthe tree.\n\nGlobal keys are relatively expensive. If you don't need any of the features\nlisted above, consider using a [Key], [ValueKey], [ObjectKey], or\n[UniqueKey] instead.\n\nYou cannot simultaneously include two widgets in the tree with the same\nglobal key. Attempting to do so will assert at runtime.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "GlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Enables or disables tickers (and thus animation controllers) in the widget\nsubtree.\n\nThis only works if [AnimationController] objects are created using\nwidget-aware ticker providers. For example, using a\n[TickerProviderStateMixin] or a [SingleTickerProviderStateMixin].", "detail": "", "kind": 7, "label": "TickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An item in a material design popup menu.\n\nTo show a popup menu, use the [showMenu] function. To create a button that\nshows a popup menu, consider using [PopupMenuButton].\n\nTo show a checkmark next to a popup menu item, consider using\n[CheckedPopupMenuItem].\n\nTypically the [child] of a [PopupMenuItem] is a [Text] widget. More\nelaborate menus with icons can use a [ListTile]. By default, a\n[PopupMenuItem] is 48 pixels high. If you use a widget with a different\nheight, it must be specified in the [height] property.\n\n\nHere, a [Text] widget is used with a popup menu item. The `WhyFarther` type\nis an enum, not shown here.\n\n```dart\nconst PopupMenuItem<WhyFarther>(\n value: WhyFarther.harder,\n child: Text('Working a lot harder'),\n)\n```\n\nSee the example at [PopupMenuButton] for how this example could be used in a\ncomplete menu, and see the example at [CheckedPopupMenuItem] for one way to\nkeep the text of [PopupMenuItem]s that use [Text] widgets in their [child]\nslot aligned with the text of [CheckedPopupMenuItem]s or of [PopupMenuItem]\nthat use a [ListTile] in their [child] slot.\n\nSee also:\n\n * [PopupMenuDivider], which can be used to divide items from each other.\n * [CheckedPopupMenuItem], a variant of [PopupMenuItem] with a checkmark.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "PopupMenuItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Column", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in a vertical array.\n\nTo cause a child to expand to fill the available vertical space, wrap the\nchild in an [Expanded] widget.\n\nThe [Column] widget does not scroll (and in general it is considered an error\nto have more children in a [Column] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a horizontal variant, see [Row].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example uses a [Column] to arrange three widgets vertically, the last\nbeing made to fill all the remaining space.\n\n```dart\nColumn(\n children: <Widget>[\n Text('Deliver features faster'),\n Text('Craft beautiful UIs'),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\nIn the sample above, the text and the logo are centered on each line. In the\nfollowing example, the [crossAxisAlignment] is set to\n[CrossAxisAlignment.start], so that the children are left-aligned. The\n[mainAxisSize] is set to [MainAxisSize.min], so that the column shrinks to\nfit the children.\n\n```dart\nColumn(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n Text('We move under cover and we move as one'),\n Text('Through the night, we have one shot to live another day'),\n Text('We cannot let a stray gunshot give us away'),\n Text('We will fight up close, seize the moment and stay in it'),\n Text('It’s either that or meet the business end of a bayonet'),\n Text('The code word is ‘Rochambeau,’ dig me?'),\n Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),\n ],\n)\n```\n\n## Troubleshooting\n\n### When the incoming vertical constraints are unbounded\n\nWhen a [Column] has one or more [Expanded] or [Flexible] children, and is\nplaced in another [Column], or in a [ListView], or in some other context\nthat does not provide a maximum height constraint for the [Column], you will\nget an exception at runtime saying that there are children with non-zero\nflex but the vertical constraints are unbounded.\n\nThe problem, as described in the details that accompany that exception, is\nthat using [Flexible] or [Expanded] means that the remaining space after\nlaying out all the other children must be shared equally, but if the\nincoming vertical constraints are unbounded, there is infinite remaining\nspace.\n\nThe key to solving this problem is usually to determine why the [Column] is\nreceiving unbounded vertical constraints.\n\nOne common reason for this to happen is that the [Column] has been placed in\nanother [Column] (without using [Expanded] or [Flexible] around the inner\nnested [Column]). When a [Column] lays out its non-flex children (those that\nhave neither [Expanded] or [Flexible] around them), it gives them unbounded\nconstraints so that they can determine their own dimensions (passing\nunbounded constraints usually signals to the child that it should\nshrink-wrap its contents). The solution in this case is typically to just\nwrap the inner column in an [Expanded] to indicate that it should take the\nremaining space of the outer column, rather than being allowed to take any\namount of room it desires.\n\nAnother reason for this message to be displayed is nesting a [Column] inside\na [ListView] or other vertical scrollable. In that scenario, there really is\ninfinite vertical space (the whole point of a vertical scrolling list is to\nallow infinite space vertically). In such scenarios, it is usually worth\nexamining why the inner [Column] should have an [Expanded] or [Flexible]\nchild: what size should the inner children really be? The solution in this\ncase is typically to remove the [Expanded] or [Flexible] widgets from around\nthe inner children.\n\nFor more discussion about constraints, see [BoxConstraints].\n\n### The yellow and black striped banner\n\nWhen the contents of a [Column] exceed the amount of space available, the\n[Column] overflows, and the contents are clipped. In debug mode, a yellow\nand black striped bar is rendered at the overflowing edge to indicate the\nproblem, and a message is printed below the [Column] saying how much\noverflow was detected.\n\nThe usual solution is to use a [ListView] rather than a [Column], to enable\nthe contents to scroll when vertical space is limited.\n\n## Layout algorithm\n\n_This section describes how a [Column] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Column] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded vertical constraints and the incoming\n horizontal constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight horizontal constraints\n that match the incoming max width.\n2. Divide the remaining vertical space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of vertical space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same horizontal\n constraints as in step 1, but instead of using unbounded vertical\n constraints, use vertical constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The width of the [Column] is the maximum width of the children (which\n will always satisfy the incoming horizontal constraints).\n5. The height of the [Column] is determined by the [mainAxisSize] property.\n If the [mainAxisSize] property is [MainAxisSize.max], then the height of\n the [Column] is the max height of the incoming constraints. If the\n [mainAxisSize] property is [MainAxisSize.min], then the height of the\n [Column] is the sum of heights of the children (subject to the incoming\n constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any vertical\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a horizontal equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may size smaller (leaving some remaining room unused).\n * [SingleChildScrollView], whose documentation discusses some ways to\n use a [Column] inside a scrolling container.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Column" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAlive", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Mark a child as needing to stay alive even when it's in a lazy list that\nwould otherwise remove it.\n\nThis widget is for use in [SliverWithKeepAliveWidget]s, such as\n[SliverGrid] or [SliverList].\n\nThis widget is rarely used directly. The [SliverChildBuilderDelegate] and\n[SliverChildListDelegate] delegates, used with [SliverList] and\n[SliverGrid], as well as the scroll view counterparts [ListView] and\n[GridView], have an `addAutomaticKeepAlives` feature, which is enabled by\ndefault, and which causes [AutomaticKeepAlive] widgets to be inserted around\neach child, causing [KeepAlive] widgets to be automatically added and\nconfigured in response to [KeepAliveNotification]s.\n\nTherefore, to keep a widget alive, it is more common to use those\nnotifications than to directly deal with [KeepAlive] widgets.\n\nIn practice, the simplest way to deal with these notifications is to mix\n[AutomaticKeepAliveClientMixin] into one's [State]. See the documentation\nfor that mixin class for details.", "detail": "", "kind": 7, "label": "KeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageBucket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A storage bucket associated with a page in an app.\n\nUseful for storing per-page state that persists across navigations from one\npage to another.", "detail": "", "kind": 7, "label": "PageStorageBucket" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics for environments that allow the scroll offset to go beyond\nthe bounds of the content, but then bounce the content back to the edge of\nthose bounds.\n\nThis is the behavior typically seen on iOS.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on iOS.\n * [ClampingScrollPhysics], which is the analogous physics for Android's\n clamping behavior.", "detail": "", "kind": 7, "label": "BouncingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedIconData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Vector graphics data for icons used by [AnimatedIcon].\n\nInstances of this class are currently opaque because we have not committed to a specific\nanimated vector graphics format.\n\nSee also:\n\n * [AnimatedIcons], a class that contains constants that implement this interface.", "detail": "", "kind": 7, "label": "AnimatedIconData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Semantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that annotates the widget tree with a description of the meaning of\nthe widgets.\n\nUsed by accessibility tools, search engines, and other semantic analysis\nsoftware to determine the meaning of the application.\n\nSee also:\n\n * [MergeSemantics], which marks a subtree as being a single node for\n accessibility purposes.\n * [ExcludeSemantics], which excludes a subtree from the semantics tree\n (which might be useful if it is, e.g., totally decorative and not\n important to the user).\n * [RenderObject.semanticsAnnotator], the rendering library API through which\n the [Semantics] widget is actually implemented.\n * [SemanticsNode], the object used by the rendering library to represent\n semantics in the semantics tree.\n * [SemanticsDebugger], an overlay to help visualize the semantics tree. Can\n be enabled using [WidgetsApp.showSemanticsDebugger] or\n [MaterialApp.showSemanticsDebugger].", "detail": "", "kind": 7, "label": "Semantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Draggable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that can be dragged from to a [DragTarget].\n\nWhen a draggable widget recognizes the start of a drag gesture, it displays\na [feedback] widget that tracks the user's finger across the screen. If the\nuser lifts their finger while on top of a [DragTarget], that target is given\nthe opportunity to accept the [data] carried by the draggable.\n\nOn multitouch devices, multiple drags can occur simultaneously because there\ncan be multiple pointers in contact with the device at once. To limit the\nnumber of simultaneous drags, use the [maxSimultaneousDrags] property. The\ndefault is to allow an unlimited number of simultaneous drags.\n\nThis widget displays [child] when zero drags are under way. If\n[childWhenDragging] is non-null, this widget instead displays\n[childWhenDragging] when one or more drags are underway. Otherwise, this\nwidget always displays [child].\n\nSee also:\n\n * [DragTarget]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "Draggable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The direction in which a [Dismissible] can be dismissed.", "detail": "", "kind": 13, "label": "DismissDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Positioned", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned.\n\nA [Positioned] widget must be a descendant of a [Stack], and the path from\nthe [Positioned] widget to its enclosing [Stack] must contain only\n[StatelessWidget]s or [StatefulWidget]s (not other kinds of widgets, like\n[RenderObjectWidget]s).\n\n\nIf a widget is wrapped in a [Positioned], then it is a _positioned_ widget\nin its [Stack]. If the [top] property is non-null, the top edge of this child\nwill be positioned [top] layout units from the top of the stack widget. The\n[right], [bottom], and [left] properties work analogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [right] and [left] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nIf all three values on a particular axis are null, then the\n[Stack.alignment] property is used to position the child.\n\nIf all six values are null, the child is a non-positioned child. The [Stack]\nuses only the non-positioned children to size itself.\n\nSee also:\n\n * [PositionedDirectional], which adapts to the ambient [Directionality].", "detail": "", "kind": 7, "label": "Positioned" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that is only equal to itself.", "detail": "", "kind": 7, "label": "UniqueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButtonLocation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that defines a position for the [FloatingActionButton]\nbased on the [Scaffold]'s [ScaffoldPrelayoutGeometry].\n\nFlutter provides [FloatingActionButtonLocation]s for the common\n[FloatingActionButton] placements in Material Design applications. These\nlocations are available as static members of this class.\n\nSee also:\n\n * [FloatingActionButton], which is a circular button typically shown in the\n bottom right corner of the app.\n * [FloatingActionButtonAnimator], which is used to animate the\n [Scaffold.floatingActionButton] from one [FloatingActionButtonLocation] to\n another.\n * [ScaffoldPrelayoutGeometry], the geometry that\n [FloatingActionButtonLocation]s use to position the [FloatingActionButton].", "detail": "", "kind": 7, "label": "FloatingActionButtonLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionallySizedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes its child to a fraction of the total available space.\nFor more details about the layout algorithm, see\n[RenderFractionallySizedOverflowBox].\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionallySizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaginatedDataTableState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the state of a [PaginatedDataTable].\n\nThe table can be programmatically paged using the [pageTo] method.", "detail": "", "kind": 7, "label": "PaginatedDataTableState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScopeNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interior node in the focus tree.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nThe interior nodes in the focus tree cannot themselves be focused but\ninstead remember previous focus states. A scope is currently active in its\nparent whenever [isFirstFocus] is true. If that scope is detached from its\nparent, its previous sibling becomes the parent's first focus.\n\nA [FocusNode] has the overall focus when the node is focused in its\nparent [FocusScopeNode] and [FocusScopeNode.isFirstFocus] is true for\nthat scope and all its ancestor scopes.\n\nIf a [FocusScopeNode] is removed, then the next sibling node will be set as\nthe focused node by the [FocusManager].\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].\n * [FocusScope], which is a widget that associates a [FocusScopeNode] with\n its location in the tree.", "detail": "", "kind": 7, "label": "FocusScopeNode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icons", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Identifiers for the supported material design icons.\n\nUse with the [Icon] class to show specific icons.\n\nIcons are identified by their name as listed below.\n\nTo use this class, make sure you set `uses-material-design: true` in your\nproject's `pubspec.yaml` file in the `flutter` section. This ensures that\nthe MaterialIcons font is included in your application. This font is used to\ndisplay the icons. For example:\n\n```yaml\nname: my_awesome_application\nflutter:\n uses-material-design: true\n```\n\nSee also:\n\n * [Icon]\n * [IconButton]\n * <https://design.google.com/icons/>", "detail": "", "kind": 7, "label": "Icons" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAlive", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Allows subtrees to request to be kept alive in lazy lists.\n\nThis widget is like [KeepAlive] but instead of being explicitly configured,\nit listens to [KeepAliveNotification] messages from the [child] and other\ndescendants.\n\nThe subtree is kept alive whenever there is one or more descendant that has\nsent a [KeepAliveNotification] and not yet triggered its\n[KeepAliveNotification.handle].\n\nTo send these notifications, consider using [AutomaticKeepAliveClientMixin].", "detail": "", "kind": 7, "label": "AutomaticKeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectableChipAttributes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be selected.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "SelectableChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReorderableListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A list whose items the user can interactively reorder by dragging.\n\nThis class is appropriate for views with a small number of\nchildren because constructing the [List] requires doing work for every\nchild that could possibly be displayed in the list view instead of just\nthose children that are actually visible.\n\nAll [children] must have a key.", "detail": "", "kind": 7, "label": "ReorderableListView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapAbsorber", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[RenderSliverOverlapInjector].", "detail": "", "kind": 7, "label": "RenderSliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataTableSource", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A data source for obtaining row data for [PaginatedDataTable] objects.\n\nA data table source provides two main pieces of information:\n\n* The number of rows in the data table ([rowCount]).\n* The data for each row (indexed from `0` to `rowCount - 1`).\n\nIt also provides a listener API ([addListener]/[removeListener]) so that\nconsumers of the data can be notified when it changes. When the data\nchanges, call [notifyListeners] to send the notifications.\n\nDataTableSource objects are expected to be long-lived, not recreated with\neach build.", "detail": "", "kind": 7, "label": "DataTableSource" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometryTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [EdgeInsetsGeometry]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsetsGeometry>] to\nuse [EdgeInsetsGeometry.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsTween], which interpolates between two [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryInitializer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.initializer].", "detail": "(T instance) → void", "kind": 7, "label": "GestureRecognizerFactoryInitializer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver whose size varies when the sliver is scrolled to the leading edge\nof the viewport.\n\nThis is the layout primitive that [SliverAppBar] uses for its\nshrinking/growing effect.", "detail": "", "kind": 7, "label": "SliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Chip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design chip.\n\nChips are compact elements that represent an attribute, text, entity, or\naction.\n\nSupplying a non-null [onDeleted] callback will cause the chip to include a\nbutton for deleting the chip.\n\nIts ancestors must include [Material], [MediaQuery], [Directionality], and\n[MaterialLocalizations]. Typically all of these widgets are provided by\n[MaterialApp] and [Scaffold]. The [label] and [clipBehavior] arguments must\nnot be null.\n\n\n```dart\nChip(\n avatar: CircleAvatar(\n backgroundColor: Colors.grey.shade800,\n child: Text('AB'),\n ),\n label: Text('Aaron Burr'),\n)\n```\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of entities.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "Chip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownMenuItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An item in a menu created by a [DropdownButton].\n\nThe type `T` is the type of the value the entry represents. All the entries\nin a given menu must represent values with consistent types.", "detail": "", "kind": 7, "label": "DropdownMenuItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [RootRenderObjectElement] that is hosted by a [RenderObject].\n\nThis element class is the instantiation of a [RenderObjectToWidgetAdapter]\nwidget. It can be used only as the root of an [Element] tree (it cannot be\nmounted into another [Element]; it's parent must be null).\n\nIn typical usage, it will be instantiated for a [RenderObjectToWidgetAdapter]\nwhose container is the [RenderView] that connects to the Flutter engine. In\nthis usage, it is normally instantiated by the bootstrapping logic in the\n[WidgetsFlutterBinding] singleton created by [runApp].", "detail": "", "kind": 7, "label": "RenderObjectToWidgetElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Wrap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in multiple horizontal or vertical runs.\n\nA [Wrap] lays out each child and attempts to place the child adjacent to the\nprevious child in the main axis, given by [direction], leaving [spacing]\nspace in between. If there is not enough space to fit the child, [Wrap]\ncreates a new _run_ adjacent to the existing children in the cross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].\n\n\n\nThis example renders some [Chip]s representing four contacts in a [Wrap] so\nthat they flow across lines as necessary.\n\n```dart\nWrap(\n spacing: 8.0, // gap between adjacent chips\n runSpacing: 4.0, // gap between lines\n children: <Widget>[\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('AH')),\n label: Text('Hamilton'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('ML')),\n label: Text('Lafayette'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('HM')),\n label: Text('Mulligan'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('JL')),\n label: Text('Laurens'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [Row], which places children in one line, and gives control over their\n alignment and spacing.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Wrap" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An inherited widget for a [Listenable] [notifier], which updates its\ndependencies when the [notifier] is triggered.\n\nThis is a variant of [InheritedWidget], specialized for subclasses of\n[Listenable], such as [ChangeNotifier] or [ValueNotifier].\n\nDependents are notified whenever the [notifier] sends notifications, or\nwhenever the identity of the [notifier] changes.\n\nMultiple notifications are coalesced, so that dependents only rebuild once\neven if the [notifier] fires multiple times between two frames.\n\nTypically this class is subclassed with a class that provides an `of` static\nmethod that calls [BuildContext.inheritFromWidgetOfExactType] with that\nclass.\n\nThe [updateShouldNotify] method may also be overridden, to change the logic\nin the cases where [notifier] itself is changed. The [updateShouldNotify]\nmethod is called with the old [notifier] in the case of the [notifier] being\nchanged. When it returns true, the dependents are marked as needing to be\nrebuilt this frame.\n\nSee also:\n\n * [Animation], an implementation of [Listenable] that ticks each frame to\n update a value.\n * [ViewportOffset] or its subclass [ScrollPosition], implementations of\n [Listenable] that trigger when a view is scrolled.\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedPopupMenuItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An item with a checkmark in a material design popup menu.\n\nTo show a popup menu, use the [showMenu] function. To create a button that\nshows a popup menu, consider using [PopupMenuButton].\n\nA [CheckedPopupMenuItem] is 48 pixels high, which matches the default height\nof a [PopupMenuItem]. The horizontal layout uses a [ListTile]; the checkmark\nis an [Icons.done] icon, shown in the [ListTile.leading] position.\n\n\nSuppose a `Commands` enum exists that lists the possible commands from a\nparticular popup menu, including `Commands.heroAndScholar` and\n`Commands.hurricaneCame`, and further suppose that there is a\n`_heroAndScholar` member field which is a boolean. The example below shows a\nmenu with one menu item with a checkmark that can toggle the boolean, and\none menu item without a checkmark for selecting the second option. (It also\nshows a divider placed between the two menu items.)\n\n```dart\nPopupMenuButton<Commands>(\n onSelected: (Commands result) {\n switch (result) {\n case Commands.heroAndScholar:\n setState(() { _heroAndScholar = !_heroAndScholar; });\n break;\n case Commands.hurricaneCame:\n // ...handle hurricane option\n break;\n // ...other items handled here\n }\n },\n itemBuilder: (BuildContext context) => <PopupMenuEntry<Commands>>[\n CheckedPopupMenuItem<Commands>(\n checked: _heroAndScholar,\n value: Commands.heroAndScholar,\n child: const Text('Hero and scholar'),\n ),\n const PopupMenuDivider(),\n const PopupMenuItem<Commands>(\n value: Commands.hurricaneCame,\n child: ListTile(leading: Icon(null), title: Text('Bring hurricane')),\n ),\n // ...other items listed here\n ],\n)\n```\n\nIn particular, observe how the second menu item uses a [ListTile] with a\nblank [Icon] in the [ListTile.leading] position to get the same alignment as\nthe item with the checkmark.\n\nSee also:\n\n * [PopupMenuItem], a popup menu entry for picking a command (as opposed to\n toggling a value).\n * [PopupMenuDivider], a popup menu entry that is just a horizontal line.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "CheckedPopupMenuItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedScrollMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable snapshot of values associated with a [Scrollable] viewport.\n\nFor details, see [ScrollMetrics], which defines this object's interfaces.", "detail": "", "kind": 7, "label": "FixedScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Padding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.\n\n\nThis snippet indents the child (a [Card] with some [Text]) by eight pixels\nin each direction:\n\n```dart\nPadding(\n padding: EdgeInsets.all(8.0),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\n## Design discussion\n\n### Why use a [Padding] widget rather than a [Container] with a [Container.padding] property?\n\nThere isn't really any difference between the two. If you supply a\n[Container.padding] argument, [Container] simply builds a [Padding] widget\nfor you.\n\n[Container] doesn't implement its properties directly. Instead, [Container]\ncombines a number of simpler widgets together into a convenient package. For\nexample, the [Container.padding] property causes the container to build a\n[Padding] widget and the [Container.decoration] property causes the\ncontainer to build a [DecoratedBox] widget. If you find [Container]\nconvenient, feel free to use it. If not, feel free to build these simpler\nwidgets in whatever combination meets your needs.\n\nIn fact, the majority of widgets in Flutter are simply combinations of other\nsimpler widgets. Composition, rather than inheritance, is the primary\nmechanism for building up widgets.\n\nSee also:\n\n * [EdgeInsets], the class that is used to describe the padding dimensions.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Padding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by [StatefulBuilder].\n\nCall [setState] to schedule the [StatefulBuilder] to rebuild.", "detail": "(BuildContext context, StateSetter setState) → Widget", "kind": 7, "label": "StatefulWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawMaterialButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates a button based on [Semantics], [Material], and [InkWell]\nwidgets.\n\nThis class does not use the current [Theme] or [ButtonTheme] to\ncompute default values for unspecified parameters. It's intended to\nbe used for custom Material buttons that optionally incorporate defaults\nfrom the themes or from app-specific sources.\n\n[RaisedButton] and [FlatButton] configure a [RawMaterialButton] based\non the current [Theme] and [ButtonTheme].", "detail": "", "kind": 7, "label": "RawMaterialButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildBuilderDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for slivers using a builder callback.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot even have to be built until they are displayed.\n\nThe widgets returned from the builder callback are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\n\nThis sample code shows how to use `semanticIndexOffset` to handle multiple\ndelegates in a single scroll view.\n\n```dart\nCustomScrollView(\n semanticChildCount: 4,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n ),\n ),\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n semanticIndexOffset: 2,\n ),\n ),\n ],\n)\n```\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\n\nThis sample code shows how to use `semanticIndexCallback` to handle\nannotating a subset of child nodes with a semantic index. There is\na [Spacer] widget at odd indexes which should not have a semantic\nindex.\n\n```dart\nCustomScrollView(\n semanticChildCount: 5,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n if (index.isEven) {\n return Text('...');\n }\n return Spacer();\n },\n semanticIndexCallback: (Widget widget, int localIndex) {\n if (localIndex.isEven) {\n return localIndex ~/ 2;\n }\n return null;\n },\n childCount: 10,\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.\n * [IndexedSemantics], for an example of manually annotating child nodes\n with semantic indexes.", "detail": "", "kind": 7, "label": "SliverChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box in which children on a wheel can be scrolled.\n\nThis widget is similar to a [ListView] but with the restriction that all\nchildren must be the same size along the scrolling axis.\n\nWhen the list is at the zero scroll offset, the first child is aligned with\nthe middle of the viewport. When the list is at the final scroll offset,\nthe last child is aligned with the middle of the viewport\n\nThe children are rendered as if rotating on a wheel instead of scrolling on\na plane.", "detail": "", "kind": 7, "label": "ListWheelScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SnackBarAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A button for a [SnackBar], known as an \"action\".\n\nSnack bar actions are always enabled. If you want to disable a snack bar\naction, simply don't include it in the snack bar.\n\nSnack bar actions can only be pressed once. Subsequent presses are ignored.\n\nSee also:\n\n * [SnackBar]\n * <https://material.io/design/components/snackbars.html>", "detail": "", "kind": 7, "label": "SnackBarAction" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedContainer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A container that gradually changes its values over a period of time.\n\nThe [AnimatedContainer] will automatically animate between the old and\nnew values of properties when they change using the provided curve and\nduration. Properties that are null are not animated. Its child and\ndescendants are not animated.\n\nThis class is useful for generating simple implicit transitions between\ndifferent parameters to [Container] with its internal [AnimationController].\nFor more complex animations, you'll likely want to use a subclass of\n[AnimatedWidget] such as the [DecoratedBoxTransition] or use your own\n[AnimationController].\n\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPadding], which is a subset of this widget that only\n supports animating the [padding].\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.\n * [AnimatedSwitcher], which switches out a child for a new one with a customizable transition.\n * [AnimatedCrossFade], which fades between two children and interpolates their sizes.", "detail": "", "kind": 7, "label": "AnimatedContainer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A utility class for defining one-off page routes in terms of callbacks.\n\nCallers must define the [pageBuilder] function which creates the route's\nprimary contents. To add transitions define the [transitionsBuilder] function.", "detail": "", "kind": 7, "label": "PageRouteBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has not changed its scroll position\nbecause the change would have caused its scroll position to go outside of\nits scroll bounds.\n\nSee also:\n\n * [ScrollUpdateNotification], which indicates that a [Scrollable] widget\n has changed its scroll position.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "OverscrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectableDayPredicate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for predicating dates for enabled date selections.\n\nSee [showDatePicker].", "detail": "(DateTime day) → bool", "kind": 7, "label": "SelectableDayPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteSettings", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Data that might be useful in constructing a [Route].", "detail": "", "kind": 7, "label": "RouteSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box with a specified size.\n\nIf given a child, this widget forces its child to have a specific width\nand/or height (assuming values are permitted by this widget's parent). If\neither the width or height is null, this widget will size itself to match\nthe child's size in that dimension.\n\nIf not given a child, this widget will size itself to the given width and\nheight, treating nulls as zero.\n\nThe [new SizedBox.expand] constructor can be used to make a [SizedBox] that\nsizes itself to fit the parent. It is equivalent to setting [width] and\n[height] to [double.infinity].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) have the\nexact size 200x300, parental constraints permitting:\n\n```dart\nSizedBox(\n width: 200.0,\n height: 300.0,\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nSee also:\n\n * [ConstrainedBox], a more generic version of this class that takes\n arbitrary [BoxConstraints] instead of an explicit width and height.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [FractionallySizedBox], a widget that sizes its child to a fraction of\n the total available space.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherTransitionBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for builders used to generate custom transitions for\n[AnimatedSwitcher].\n\nThe `child` should be transitioning in when the `animation` is running in\nthe forward direction.\n\nThe function should return a widget which wraps the given `child`. It may\nalso use the `animation` to inform its transition. It must not return null.", "detail": "(Widget child, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedSwitcherTransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].\n\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Ink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience widget for drawing images and other decorations on [Material]\nwidgets, so that [InkWell] and [InkResponse] splashes will render over them.\n\nInk splashes and highlights, as rendered by [InkWell] and [InkResponse],\ndraw on the actual underlying [Material], under whatever widgets are drawn\nover the material (such as [Text] and [Icon]s). If an opaque image is drawn\nover the [Material] (maybe using a [Container] or [DecoratedBox]), these ink\neffects will not be visible, as they will be entirely obscured by the opaque\ngraphics drawn above the [Material].\n\nThis widget draws the given [Decoration] directly on the [Material], in the\nsame way that [InkWell] and [InkResponse] draw there. This allows the\nsplashes to be drawn above the otherwise opaque graphics.\n\nAn alternative solution is to use a [MaterialType.transparency] material\nabove the opaque graphics, so that the ink responses from [InkWell]s and\n[InkResponse]s will be drawn on the transparent material on top of the\nopaque graphics, rather than under the opaque graphics on the underlying\n[Material].\n\n## Limitations\n\nThis widget is subject to the same limitations as other ink effects, as\ndescribed in the documentation for [Material]. Most notably, the position of\nan [Ink] widget must not change during the lifetime of the [Material] object\nunless a [LayoutChangedNotification] is dispatched each frame that the\nposition changes. This is done automatically for [ListView] and other\nscrolling widgets, but is not done for animated transitions such as\n[SlideTransition].\n\nAdditionally, if multiple [Ink] widgets paint on the same [Material] in the\nsame location, their relative order is not guaranteed. The decorations will\nbe painted in the order that they were added to the material, which\ngenerally speaking will match the order they are given in the widget tree,\nbut this order may appear to be somewhat random in more dynamic situations.\n\n\nThis example shows how a [Material] widget can have a yellow rectangle drawn\non it using [Ink], while still having ink effects over the yellow rectangle:\n\n```dart\nMaterial(\n color: Colors.teal[900],\n child: Center(\n child: Ink(\n color: Colors.yellow,\n width: 200.0,\n height: 100.0,\n child: InkWell(\n onTap: () { /* ... */ },\n child: Center(\n child: Text('YELLOW'),\n )\n ),\n ),\n ),\n)\n```\n\nThe following example shows how an image can be printed on a [Material]\nwidget with an [InkWell] above it:\n\n```dart\nMaterial(\n color: Colors.grey[800],\n child: Center(\n child: Ink.image(\n image: AssetImage('cat.jpeg'),\n fit: BoxFit.cover,\n width: 300.0,\n height: 200.0,\n child: InkWell(\n onTap: () { /* ... */ },\n child: Align(\n alignment: Alignment.topLeft,\n child: Padding(\n padding: const EdgeInsets.all(10.0),\n child: Text('KITTEN', style: TextStyle(fontWeight: FontWeight.w900, color: Colors.white)),\n ),\n )\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [Container], a more generic form of this widget which paints itself,\n rather that deferring to the nearest [Material] widget.\n * [InkDecoration], the [InkFeature] subclass used by this widget to paint\n on [Material] widgets.\n * [InkWell] and [InkResponse], which also draw on [Material] widgets.", "detail": "", "kind": 7, "label": "Ink" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositioned", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Positioned] which automatically transitions the child's\nposition over a given duration whenever the given position changes.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositioned] will trigger a relayout\nas well.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositionedDirectional], which adapts to the ambient\n [Directionality] (the same as this widget, but for animating\n [PositionedDirectional]).", "detail": "", "kind": 7, "label": "AnimatedPositioned" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Container", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience widget that combines common painting, positioning, and sizing\nwidgets.\n\nA container first surrounds the child with [padding] (inflated by any\nborders present in the [decoration]) and then applies additional\n[constraints] to the padded extent (incorporating the `width` and `height`\nas constraints, if either is non-null). The container is then surrounded by\nadditional empty space described from the [margin].\n\nDuring painting, the container first applies the given [transform], then\npaints the [decoration] to fill the padded extent, then it paints the child,\nand finally paints the [foregroundDecoration], also filling the padded\nextent.\n\nContainers with no children try to be as big as possible unless the incoming\nconstraints are unbounded, in which case they try to be as small as\npossible. Containers with children size themselves to their children. The\n`width`, `height`, and [constraints] arguments to the constructor override\nthis.\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nSince [Container] combines a number of other widgets each with their own\nlayout behavior, [Container]'s layout behavior is somewhat complicated.\n\nSummary: [Container] tries, in order: to honor [alignment], to size itself\nto the [child], to honor the `width`, `height`, and [constraints], to expand\nto fit the parent, to be as small as possible.\n\nMore specifically:\n\nIf the widget has no child, no `height`, no `width`, no [constraints],\nand the parent provides unbounded constraints, then [Container] tries to\nsize as small as possible.\n\nIf the widget has no child and no [alignment], but a `height`, `width`, or\n[constraints] are provided, then the [Container] tries to be as small as\npossible given the combination of those constraints and the parent's\nconstraints.\n\nIf the widget has no child, no `height`, no `width`, no [constraints], and\nno [alignment], but the parent provides bounded constraints, then\n[Container] expands to fit the constraints provided by the parent.\n\nIf the widget has an [alignment], and the parent provides unbounded\nconstraints, then the [Container] tries to size itself around the child.\n\nIf the widget has an [alignment], and the parent provides bounded\nconstraints, then the [Container] tries to expand to fit the parent, and\nthen positions the child within itself as per the [alignment].\n\nOtherwise, the widget has a [child] but no `height`, no `width`, no\n[constraints], and no [alignment], and the [Container] passes the\nconstraints from the parent to the child and sizes itself to match the\nchild.\n\nThe [margin] and [padding] properties also affect the layout, as described\nin the documentation for those properties. (Their effects merely augment the\nrules described above.) The [decoration] can implicitly increase the\n[padding] (e.g. borders in a [BoxDecoration] contribute to the [padding]);\nsee [Decoration.padding].\n\nThis example shows a 48x48 amber square (placed inside a [Center] widget in\ncase the parent widget has its own opinions regarding the size that the\n[Container] should take), with a margin so that it stays away from\nneighboring widgets:\n\n![An amber colored container with the dimensions of 48 square pixels.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_a.png)\n\n```dart\nCenter(\n child: Container(\n margin: const EdgeInsets.all(10.0),\n color: Colors.amber[600],\n width: 48.0,\n height: 48.0,\n ),\n)\n```\n\n\nThis example shows how to use many of the features of [Container] at once.\nThe [constraints] are set to fit the font size plus ample headroom\nvertically, while expanding horizontally to fit the parent. The [padding] is\nused to make sure there is space between the contents and the text. The\n[color] makes the box blue. The [alignment] causes the [child] to be\ncentered in the box. Finally, the [transform] applies a slight rotation to the\nentire contraption to complete the effect.\n\n![A blue rectangular container with 'Hello World' in the center, rotated\nslightly in the z axis.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_b.png)\n\n```dart\nContainer(\n constraints: BoxConstraints.expand(\n height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,\n ),\n padding: const EdgeInsets.all(8.0),\n color: Colors.blue[600],\n alignment: Alignment.center,\n child: Text('Hello World',\n style: Theme.of(context)\n .textTheme\n .display1\n .copyWith(color: Colors.white)),\n transform: Matrix4.rotationZ(0.1),\n)\n```\n\nSee also:\n\n * [AnimatedContainer], a variant that smoothly animates the properties when\n they change.\n * [Border], which has a sample which uses [Container] heavily.\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Container" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnderlineInputBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Draws a horizontal line at the bottom of an [InputDecorator]'s container and\ndefines the container's shape.\n\nThe input decorator's \"container\" is the optionally filled area above the\ndecorator's helper, error, and counter.\n\nSee also:\n\n * [OutlineInputBorder], an [InputDecorator] border which draws a\n rounded rectangle around the input decorator's container.\n * [InputDecoration], which is used to configure an [InputDecorator].", "detail": "", "kind": 7, "label": "UnderlineInputBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkWell", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular area of a [Material] that responds to touch.\n\nFor a variant of this widget that does not clip splashes, see [InkResponse].\n\nThe following diagram shows how an [InkWell] looks when tapped, when using\ndefault values.\n\n![The highlight is a rectangle the size of the box.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_well.png)\n\nThe [InkWell] widget must have a [Material] widget as an ancestor. The\n[Material] widget is where the ink reactions are actually painted. This\nmatches the material design premise wherein the [Material] is what is\nactually reacting to touches by spreading ink.\n\nIf a Widget uses this class directly, it should include the following line\nat the top of its build function to call [debugCheckHasMaterial]:\n\n```dart\nassert(debugCheckHasMaterial(context));\n```\n\n## Troubleshooting\n\n### The ink splashes aren't visible!\n\nIf there is an opaque graphic, e.g. painted using a [Container], [Image], or\n[DecoratedBox], between the [Material] widget and the [InkWell] widget, then\nthe splash won't be visible because it will be under the opaque graphic.\nThis is because ink splashes draw on the underlying [Material] itself, as\nif the ink was spreading inside the material.\n\nThe [Ink] widget can be used as a replacement for [Image], [Container], or\n[DecoratedBox] to ensure that the image or decoration also paints in the\n[Material] itself, below the ink.\n\nIf this is not possible for some reason, e.g. because you are using an\nopaque [CustomPaint] widget, alternatively consider using a second\n[Material] above the opaque widget but below the [InkWell] (as an\nancestor to the ink well). The [MaterialType.transparency] material\nkind can be used for this purpose.\n\nSee also:\n\n * [GestureDetector], for listening for gestures without ink splashes.\n * [RaisedButton] and [FlatButton], two kinds of buttons in material design.\n * [InkResponse], a variant of [InkWell] that doesn't force a rectangular\n shape on the ink reaction.", "detail": "", "kind": 7, "label": "InkWell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [Border]s.\n\nThis class specializes the interpolation of [Tween<Border>] to use\n[Border.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that scrolls.\n\n[Scrollable] implements the interaction model for a scrollable widget,\nincluding gesture recognition, but does not have an opinion about how the\nviewport, which actually displays the children, is constructed.\n\nIt's rare to construct a [Scrollable] directly. Instead, consider [ListView]\nor [GridView], which combine scrolling, viewporting, and a layout model. To\ncombine layout models (or to use a custom layout mode), consider using\n[CustomScrollView].\n\nThe static [Scrollable.of] and [Scrollable.ensureVisible] functions are\noften used to interact with the [Scrollable] widget inside a [ListView] or\na [GridView].\n\nTo further customize scrolling behavior with a [Scrollable]:\n\n1. You can provide a [viewportBuilder] to customize the child model. For\n example, [SingleChildScrollView] uses a viewport that displays a single\n box child whereas [CustomScrollView] uses a [Viewport] or a\n [ShrinkWrappingViewport], both of which display a list of slivers.\n\n2. You can provide a custom [ScrollController] that creates a custom\n [ScrollPosition] subclass. For example, [PageView] uses a\n [PageController], which creates a page-oriented scroll position subclass\n that keeps the same page visible when the [Scrollable] resizes.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "Scrollable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MonthPicker", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list of months to allow picking a month.\n\nShows the days of each month in a rectangular grid with one column for each\nday of the week.\n\nThe month picker widget is rarely used directly. Instead, consider using\n[showDatePicker], which creates a date picker dialog.\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.\n * [showTimePicker], which shows a dialog that contains a material design\n time picker.", "detail": "", "kind": 7, "label": "MonthPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageTransitionsTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the page transition animations used by [MaterialPageRoute]\nfor different [TargetPlatform]s.\n\nThe [MaterialPageRoute.buildTransitions] method looks up the current\ncurrent [PageTransitionsTheme] with `Theme.of(context).pageTransitionsTheme`\nand delegates to [buildTransitions].\n\nIf a builder with a matching platform is not found, then the\n[FadeUpwardsPageTransitionsBuilder] is used.\n\nSee also:\n\n * [ThemeData.pageTransitionsTheme], which defines the default page\n transitions for the overall theme.\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "PageTransitionsTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [EdgeInsets]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsets>] to use\n[EdgeInsets.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsGeometryTween], which interpolates between two\n [EdgeInsetsGeometry] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryWithHandlers", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Factory for creating gesture recognizers that delegates to callbacks.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactoryWithHandlers" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstrainedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that imposes additional constraints on its child.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[constraints].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) fill the\nparent, by applying [BoxConstraints.expand] constraints:\n\n```dart\nConstrainedBox(\n constraints: const BoxConstraints.expand(),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nThe same behavior can be obtained using the [new SizedBox.expand] widget.\n\nSee also:\n\n * [BoxConstraints], the class that describes constraints.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "ConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonThemeData] to configure the color and geometry of buttons.\n\nA button theme can be specified as part of the overall Material theme\nusing [ThemeData.buttonTheme]. The Material theme's button theme data\ncan be overridden with [ButtonTheme].\n\nThe actual appearance of buttons depends on the button theme, the\nbutton's enabled state, its elevation (if any), and the overall [Theme].\n\nSee also:\n\n * [FlatButton] [RaisedButton], and [OutlineButton], which are styled\n based on the ambient button theme.\n * [RawMaterialButton], which can be used to configure a button that doesn't\n depend on any inherited themes.", "detail": "", "kind": 7, "label": "ButtonTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListRemovedItemBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedListState.removeItem].", "detail": "(BuildContext context, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListRemovedItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItemState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [State] for [PopupMenuItem] subclasses.\n\nBy default this implements the basic styling and layout of Material Design\npopup menu items.\n\nThe [buildChild] method can be overridden to adjust exactly what gets placed\nin the menu. By default it returns [PopupMenuItem.child].\n\nThe [handleTap] method can be overridden to adjust exactly what happens when\nthe item is tapped. By default, it uses [Navigator.pop] to return the\n[PopupMenuItem.value] from the menu route.\n\nThis class takes two type arguments. The second, `W`, is the exact type of\nthe [Widget] that is using this [State]. It must be a subclass of\n[PopupMenuItem]. The first, `T`, must match the type argument of that widget\nclass, and is the type of values returned from this menu.", "detail": "", "kind": 7, "label": "PopupMenuItemState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBody", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that arranges its children sequentially along a given axis, forcing\nthem to the dimension of the parent in the other axis.\n\nThis widget is rarely used directly. Instead, consider using [ListView],\nwhich combines a similar layout algorithm with scrolling behavior, or\n[Column], which gives you more flexible control over the layout of a\nvertical set of boxes.\n\nSee also:\n\n * [RenderListBody], which implements this layout algorithm and the\n documentation for which describes some of its subtleties.\n * [SingleChildScrollView], which is sometimes used with [ListBody] to\n make the contents scrollable.\n * [Column] and [Row], which implement a more elaborate version of\n this layout algorithm (at the cost of being slightly less efficient).\n * [ListView], which implements an efficient scrolling version of this\n layout algorithm.", "detail": "", "kind": 7, "label": "ListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomMultiChildLayout", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that uses a delegate to size and position multiple children.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.\n\n[CustomMultiChildLayout] is appropriate when there are complex relationships\nbetween the size and positioning of a multiple widgets. To control the\nlayout of a single child, [CustomSingleChildLayout] is more appropriate. For\nsimple cases, such as aligning a widget to one or another edge, the [Stack]\nwidget is more appropriate.\n\nEach child must be wrapped in a [LayoutId] widget to identify the widget for\nthe delegate.\n\nSee also:\n\n * [MultiChildLayoutDelegate], for details about how to control the layout of\n the children.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Stack], which arranges children relative to the edges of the container.\n * [Flow], which provides paint-time control of its children using transform\n matrices.", "detail": "", "kind": 7, "label": "CustomMultiChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SwitchListTile", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] with a [Switch]. In other words, a switch with a label.\n\nThe entire list tile is interactive: tapping anywhere in the tile toggles\nthe switch.\n\nThe [value], [onChanged], [activeColor], [activeThumbImage], and\n[inactiveThumbImage] properties of this widget are identical to the\nsimilarly-named properties on the [Switch] widget.\n\nThe [title], [subtitle], [isThreeLine], and [dense] properties are like\nthose of the same name on [ListTile].\n\nThe [selected] property on this widget is similar to the [ListTile.selected]\nproperty, but the color used is that described by [activeColor], if any,\ndefaulting to the accent color of the current [Theme]. No effort is made to\ncoordinate the [selected] state and the [value] state; to have the list tile\nappear selected when the switch is on, pass the same value to both.\n\nThe switch is shown on the right by default in left-to-right languages (i.e.\nin the [ListTile.trailing] slot). The [secondary] widget is placed in the\n[ListTile.leading] slot. This cannot be changed; there is not sufficient\nspace in a [ListTile]'s [ListTile.leading] slot for a [Switch].\n\nTo show the [SwitchListTile] as disabled, pass null as the [onChanged]\ncallback.\n\n\nThis widget shows a switch that, when toggled, changes the state of a [bool]\nmember field called `_lights`.\n\n```dart\nSwitchListTile(\n title: const Text('Lights'),\n value: _lights,\n onChanged: (bool value) { setState(() { _lights = value; }); },\n secondary: const Icon(Icons.lightbulb_outline),\n)\n```\n\nSee also:\n\n * [ListTileTheme], which can be used to affect the style of list tiles,\n including switch list tiles.\n * [CheckboxListTile], a similar widget for checkboxes.\n * [RadioListTile], a similar widget for radio buttons.\n * [ListTile] and [Switch], the widgets from which this widget is made.", "detail": "", "kind": 7, "label": "SwitchListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An entry in the history of a [LocalHistoryRoute].", "detail": "", "kind": 7, "label": "LocalHistoryEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundSliderThumbShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s thumb.\n\nSee also:\n\n * [Slider], which includes a thumb defined by this shape.\n * [SliderTheme], which can be used to configure the thumb shape of all\n sliders in a widget subtree.", "detail": "", "kind": 7, "label": "RoundSliderThumbShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkHighlight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual emphasis on a part of a [Material] receiving user interaction.\n\nThis object is rarely created directly. Instead of creating an ink highlight\ndirectly, consider using an [InkResponse] or [InkWell] widget, which uses\ngestures (such as tap and long-press) to trigger ink highlights.\n\nSee also:\n\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink highlight is painted.\n * [InkSplash], which is an ink feature that shows a reaction to user input\n on a [Material].", "detail": "", "kind": 7, "label": "InkHighlight" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A modal route that replaces the entire screen.", "detail": "", "kind": 7, "label": "PageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current state of an [Overlay].\n\nUsed to insert [OverlayEntry]s into the overlay using the [insert] and\n[insertAll] functions.", "detail": "", "kind": 7, "label": "OverlayState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerControllerState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [DrawerController].\n\nTypically used by a [Scaffold] to [open] and [close] the drawer.", "detail": "", "kind": 7, "label": "DrawerControllerState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultWidgetsLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "US English localizations for the widgets library.\n\nSee also:\n\n * [GlobalWidgetsLocalizations], which provides widgets localizations for\n many languages.\n * [WidgetsApp.delegates], which automatically includes\n [DefaultWidgetsLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultWidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RepaintBoundary", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that creates a separate display list for its child.\n\nThis widget creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree.\n\nThis is useful since [RenderObject.paint] may be triggered even if its\nassociated [Widget] instances did not change or rebuild. A [RenderObject]\nwill repaint whenever any [RenderObject] that shares the same [Layer] is\nmarked as being dirty and needing paint (see [RenderObject.markNeedsPaint]),\nsuch as when an ancestor scrolls or when an ancestor or descendant animates.\n\nContaining [RenderObject.paint] to parts of the render subtree that are\nactually visually changing using [RepaintBoundary] explicitly or implicitly\nis therefore critical to minimizing redundant work and improving the app's\nperformance.\n\nWhen a [RenderObject] is flagged as needing to paint via\n[RenderObject.markNeedsPaint], the nearest ancestor [RenderObject] with\n[RenderObject.isRepaintBoundary], up to possibly the root of the application,\nis requested to repaint. That nearest ancestor's [RenderObject.paint] method\nwill cause _all_ of its descendant [RenderObject]s to repaint in the same\nlayer.\n\n[RepaintBoundary] is therefore used, both while propagating the\n`markNeedsPaint` flag up the render tree and while traversing down the\nrender tree via [RenderObject.paintChild], to strategically contain repaints\nto the render subtree that visually changed for performance. This is done\nbecause the [RepaintBoundary] widget creates a [RenderObject] that always\nhas a [Layer], decoupling ancestor render objects from the descendant\nrender objects.\n\n[RepaintBoundary] has the further side-effect of possibly hinting to the\nengine that it should further optimize animation performance if the render\nsubtree behind the [RepaintBoundary] is sufficiently complex and is static\nwhile the surrounding tree changes frequently. In those cases, the engine\nmay choose to pay a one time cost of rasterizing and caching the pixel\nvalues of the subtree for faster future GPU re-rendering speed.\n\nSeveral framework widgets insert [RepaintBoundary] widgets to mark natural\nseparation points in applications. For instance, contents in Material Design\ndrawers typically don't change while the drawer opens and closes, so\nrepaints are automatically contained to regions inside or outside the drawer\nwhen using the [Drawer] widget during transitions.\n\nSee also:\n\n * [debugRepaintRainbowEnabled], a debugging flag to help visually monitor\n render tree repaints in a running app.\n * [debugProfilePaintsEnabled], a debugging flag to show render tree\n repaints in the observatory's timeline view.", "detail": "", "kind": 7, "label": "RepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputCounterWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the [TextField.buildCounter] callback.", "detail": "(BuildContext context, {@required int currentLength, @required int maxLength, @required bool isFocused}) → Widget", "kind": 7, "label": "InputCounterWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RootRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The element at the root of the tree.\n\nOnly root elements may have their owner set explicitly. All other\nelements inherit their owner from their parent.", "detail": "", "kind": 7, "label": "RootRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single child slot. (This superclass only provides the storage\nfor that child, it doesn't actually provide the updating logic.)", "detail": "", "kind": 7, "label": "SingleChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportNotificationMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Mixin for [Notification]s that track how many [RenderAbstractViewport] they\nhave bubbled through.\n\nThis is used by [ScrollNotification] and [OverscrollIndicatorNotification].", "detail": "", "kind": 7, "label": "ViewportNotificationMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticFormatterCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A callback that formats a numeric value from a [Slider] widget.\n\nSee also:\n\n * [Slider.semanticFormatterCallback], which shows an example use case.", "detail": "(double value) → String", "kind": 7, "label": "SemanticFormatterCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeletableChipAttributes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be deleted.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "DeletableChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property describing a [double] [value] with an optional [unit] of measurement.\n\nNumeric formatting is optimized for debug message readability.", "detail": "", "kind": 7, "label": "DoubleProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CachingIterable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A lazy caching version of [Iterable].\n\nThis iterable is efficient in the following ways:\n\n * It will not walk the given iterator more than you ask for.\n\n * If you use it twice (e.g. you check [isNotEmpty], then\n use [single]), it will only walk the given iterator\n once. This caching will even work efficiently if you are\n running two side-by-side iterators on the same iterable.\n\n * [toList] uses its EfficientLength variant to create its\n list quickly.\n\nIt is inefficient in the following ways:\n\n * The first iteration through has caching overhead.\n\n * It requires more memory than a non-caching iterator.\n\n * The [length] and [toList] properties immediately pre-cache the\n entire list. Using these fields therefore loses the laziness of\n the iterable. However, it still gets cached.\n\nThe caching behavior is propagated to the iterators that are\ncreated by [map], [where], [expand], [take], [takeWhile], [skip],\nand [skipWhile], and is used by the built-in methods that use an\niterator like [isNotEmpty] and [single].\n\nBecause a CachingIterable only walks the underlying data once, it\ncannot be used multiple times with the underlying data changing\nbetween each use. You must create a new iterable each time. This\nalso applies to any iterables derived from this one, e.g. as\nreturned by `where`.", "detail": "", "kind": 7, "label": "CachingIterable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Factory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A factory interface that also reports the type of the created objects.", "detail": "", "kind": 7, "label": "Factory" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticableTree", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for providing string and [DiagnosticsNode] debug\nrepresentations describing the properties and children of an object.\n\nThe string debug representation is generated from the intermediate\n[DiagnosticsNode] representation. The [DiagnosticsNode] representation is\nalso used by debugging tools displaying interactive trees of objects and\nproperties.\n\nSee also:\n\n * [DiagnosticableTreeMixin], a mixin that implements this class.\n * [Diagnosticable], which should be used instead of this class to provide\n diagnostics for objects without children.", "detail": "", "kind": 7, "label": "DiagnosticableTree" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectFlagProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A property where the important diagnostic information is primarily whether\nthe [value] is present (non-null) or absent (null), rather than the actual\nvalue of the property itself.\n\nThe [ifPresent] and [ifNull] strings describe the property [value] when it\nis non-null and null respectively. If one of [ifPresent] or [ifNull] is\nomitted, that is taken to mean that [level] should be\n[DiagnosticLevel.hidden] when [value] is non-null or null respectively.\n\nThis kind of diagnostics property is typically used for values mostly opaque\nvalues, like closures, where presenting the actual object is of dubious\nvalue but where reporting the presence or absence of the value is much more\nuseful.\n\nSee also:\n\n * [FlagProperty], which provides similar functionality describing whether\n a [value] is true or false.", "detail": "", "kind": 7, "label": "ObjectFlagProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServiceExtensionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for service extensions.\n\nThe returned map must not contain the keys \"type\" or \"method\", as\nthey will be replaced before the value is sent to the client. The\n\"type\" key will be set to the string `_extensionType` to indicate\nthat this is a return value from a service extension, and the\n\"method\" key will be set to the full name of the method.", "detail": "(Map<String, String> parameters) → Future<Map<String, dynamic>>", "kind": 7, "label": "ServiceExtensionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that filter an iterable.", "detail": "(Iterable<T> input) → Iterable<T>", "kind": 7, "label": "IterableFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Summary", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An annotation that provides a short description of a class for use\nin an index.\n\nUsually the first paragraph of the documentation for a class can be used\nfor this purpose, but on occasion the first paragraph is either too short\nor too long for use in isolation, without the remainder of the documentation.\n\n\n```dart\n/// A famous cat.\n///\n/// Instances of this class can hunt small animals.\n/// This cat has three legs.\n@Category(<String>['Animals', 'Cats'])\n@Category(<String>['Cute', 'Pets'])\n@DocumentationIcon('https://www.examples.net/docs/images/icons/pillar.jpeg')\n@Summary('A famous three-legged cat.')\nclass Pillar extends Cat {\n // ...code...\n}\n```\n\nSee also:\n\n * [Category], to help place the class in an index.\n * [DocumentationIcon], which is used to give the URL to an image that\n represents the class.", "detail": "", "kind": 7, "label": "Summary" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseEntryCollector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks passed to [LicenseRegistry.addLicense].", "detail": "() → Stream<LicenseEntry>", "kind": 7, "label": "LicenseEntryCollector" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObserverList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A list optimized for containment queries.\n\nConsider using an [ObserverList] instead of a [List] when the number of\n[contains] calls dominates the number of [add] and [remove] calls.", "detail": "", "kind": 7, "label": "ObserverList" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComputePropertyValueCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for computing the value of a property.\n\nMay throw exception if accessing the property would throw an exception\nand callers must handle that case gracefully. For example, accessing a\nproperty may trigger an assert that layout constraints were violated.", "detail": "() → T", "kind": 7, "label": "ComputePropertyValueCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An int valued property with an optional unit the value is measured in.\n\nExamples of units include 'px' and 'ms'.", "detail": "", "kind": 7, "label": "IntProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticPropertiesBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builder to accumulate properties and configuration used to assemble a\n[DiagnosticsNode] from a [Diagnosticable] object.", "detail": "", "kind": 7, "label": "DiagnosticPropertiesBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A license that covers part of the application's software or assets, to show\nin an interface such as the [LicensePage].\n\nFor optimal performance, [LicenseEntry] objects should only be created on\ndemand in [LicenseEntryCollector] callbacks passed to\n[LicenseRegistry.addLicense].", "detail": "", "kind": 7, "label": "LicenseEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines diagnostics data for a [value].\n\n[DiagnosticsNode] provides a high quality multi-line string dump via\n[toStringDeep]. The core members are the [name], [toDescription],\n[getProperties], [value], and [getChildren]. All other members exist\ntypically to provide hints for how [toStringDeep] and debugging tools should\nformat output.", "detail": "", "kind": 7, "label": "DiagnosticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticableTreeMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps dump string and [DiagnosticsNode] representations of trees.\n\nThis mixin is identical to class [DiagnosticableTree].", "detail": "", "kind": 7, "label": "DiagnosticableTreeMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextTreeConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration specifying how a particular [DiagnosticsTreeStyle] should be\nrendered as text art.\n\nSee also:\n\n * [sparseTextConfiguration], which is a typical style.\n * [transitionTextConfiguration], which is an example of a complex tree style.\n * [DiagnosticsNode.toStringDeep], for code using [TextTreeConfiguration]\n to render text art for arbitrary trees of [DiagnosticsNode] objects.", "detail": "", "kind": 7, "label": "TextTreeConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReadBuffer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Read-only buffer for reading sequentially from a [ByteData] instance.\n\nThe byte order used is [Endian.host] throughout.", "detail": "", "kind": 7, "label": "ReadBuffer" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncValueSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set and return a\n[Future] that completes when the value has been saved.\n\nSee also:\n\n * [ValueSetter], a synchronous version of this signature.\n * [AsyncValueGetter], the getter equivalent of this signature.", "detail": "(T value) → Future<void>", "kind": 7, "label": "AsyncValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data, but that\nreturn a [Future] to indicate when their work is complete.\n\nSee also:\n\n * [VoidCallback], a synchronous version of this signature.\n * [AsyncValueGetter], a signature for asynchronous getters.\n * [AsyncValueSetter], a signature for asynchronous setters.", "detail": "() → Future<void>", "kind": 7, "label": "AsyncCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WriteBuffer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Write-only buffer for incrementally building a [ByteData] instance.\n\nA WriteBuffer instance can be used only once. Attempts to reuse will result\nin [NoSuchMethodError]s being thrown.\n\nThe byte order used is [Endian.host] throughout.", "detail": "", "kind": 7, "label": "WriteBuffer" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BindingBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for mixins that provide singleton services (also known as\n\"bindings\").\n\nTo use this class in an `on` clause of a mixin, inherit from it and implement\n[initInstances()]. The mixin is guaranteed to only be constructed once in\nthe lifetime of the app (more precisely, it will assert if constructed twice\nin checked mode).\n\nThe top-most layer used to write the application will have a concrete class\nthat inherits from [BindingBase] and uses all the various [BindingBase]\nmixins (such as [ServicesBinding]). For example, the Widgets library in\nFlutter introduces a binding called [WidgetsFlutterBinding]. The relevant\nlibrary defines how to create the binding. It could be implied (for example,\n[WidgetsFlutterBinding] is automatically started from [runApp]), or the\napplication might be required to explicitly call the constructor.", "detail": "", "kind": 7, "label": "BindingBase" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugPrintCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugPrint] implementations.", "detail": "(String message, {int wrapWidth}) → void", "kind": 7, "label": "DebugPrintCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseParagraph", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A string that represents one paragraph in a [LicenseEntry].\n\nSee [LicenseEntry.paragraphs].", "detail": "", "kind": 7, "label": "LicenseParagraph" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SynchronousFuture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Future] whose [then] implementation calls the callback immediately.\n\nThis is similar to [new Future.value], except that the value is available in\nthe same event-loop iteration.\n\n⚠ This class is useful in cases where you want to expose a single API, where\nyou normally want to have everything execute synchronously, but where on\nrare occasions you want the ability to switch to an asynchronous model. **In\ngeneral use of this class should be avoided as it is very difficult to debug\nsuch bimodal behavior.**", "detail": "", "kind": 7, "label": "SynchronousFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property with an `Iterable<T>` [value] that can be displayed with\ndifferent [DiagnosticsTreeStyle] for custom rendering.\n\nIf [style] is [DiagnosticsTreeStyle.singleLine], the iterable is described\nas a comma separated list, otherwise the iterable is described as a line\nbreak separated list.", "detail": "", "kind": 7, "label": "IterableProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Diagnosticable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for providing string and [DiagnosticsNode] debug\nrepresentations describing the properties of an object.\n\nThe string debug representation is generated from the intermediate\n[DiagnosticsNode] representation. The [DiagnosticsNode] representation is\nalso used by debugging tools displaying interactive trees of objects and\nproperties.\n\nSee also:\n\n * [DiagnosticableTree], which extends this class to also describe the\n children of a tree structured object.\n * [Diagnosticable.debugFillProperties], which lists best practices\n for specifying the properties of a [DiagnosticsNode]. The most common use\n case is to override [debugFillProperties] defining custom properties for\n a subclass of [DiagnosticableTreeMixin] using the existing\n [DiagnosticsProperty] subclasses.\n * [DiagnosticableTree.debugDescribeChildren], which lists best practices\n for describing the children of a [DiagnosticsNode]. Typically the base\n class already describes the children of a node properly or a node has\n no children.\n * [DiagnosticsProperty], which should be used to create leaf diagnostic\n nodes without properties or children. There are many\n [DiagnosticsProperty] subclasses to handle common use cases.", "detail": "", "kind": 7, "label": "Diagnosticable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BitField", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A BitField over an enum (or other class whose values implement \"index\").\nOnly the first 62 values of the enum can be used as indices.\n\nWhen compiling to JavaScript, this class is not supported.", "detail": "", "kind": 7, "label": "BitField" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsTreeStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles for displaying a node in a [DiagnosticsNode] tree.\n\nSee also:\n\n * [DiagnosticsNode.toStringDeep], which dumps text art trees for these\n styles.", "detail": "", "kind": 13, "label": "DiagnosticsTreeStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticableNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[DiagnosticsNode] that lazily calls the associated [Diagnosticable] [value]\nto implement [getChildren] and [getProperties].", "detail": "", "kind": 7, "label": "DiagnosticableNode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Unicode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Constants for useful Unicode characters.\n\nCurrently, these characters are all related to bidirectional text.\n\nSee also:\n\n * <http://unicode.org/reports/tr9/>, which describes the Unicode\n bidirectional text algorithm.", "detail": "", "kind": 7, "label": "Unicode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PercentProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which clamps a [double] to between 0 and 1 and formats it as a\npercentage.", "detail": "", "kind": 7, "label": "PercentProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for subclasses of [Listenable] that expose a [value].\n\nThis interface is implemented by [ValueNotifier<T>] and [Animation<T>], and\nallows other APIs to accept either of those implementations interchangeably.", "detail": "", "kind": 7, "label": "ValueListenable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlagProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property where the description is either [ifTrue] or [ifFalse] depending on\nwhether [value] is true or false.\n\nUsing [FlagProperty] instead of [DiagnosticsProperty<bool>] can make\ndiagnostics display more polished. For example, given a property named\n`visible` that is typically true, the following code will return 'hidden'\nwhen `visible` is false and nothing when visible is true, in contrast to\n`visible: true` or `visible: false`.\n\n\n```dart\nFlagProperty(\n 'visible',\n value: true,\n ifFalse: 'hidden',\n)\n```\n\n[FlagProperty] should also be used instead of [DiagnosticsProperty<bool>]\nif showing the bool value would not clearly indicate the meaning of the\nproperty value.\n\n```dart\nFlagProperty(\n 'inherit',\n value: inherit,\n ifTrue: '<all styles inherited>',\n ifFalse: '<no style specified>',\n)\n```\n\nSee also:\n\n * [ObjectFlagProperty], which provides similar behavior describing whether\n a [value] is null.", "detail": "", "kind": 7, "label": "FlagProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which encloses its string [value] in quotes.\n\nSee also:\n\n * [MessageProperty], which is a better fit for showing a message\n instead of describing a property with a string value.", "detail": "", "kind": 7, "label": "StringProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComputeCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback passed to [compute].\n\n\nInstances of [ComputeCallback] must be top-level functions or static methods\nof classes, not closures or instance methods of objects.\n", "detail": "(Q message) → FutureOr<R>", "kind": 7, "label": "ComputeCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DocumentationIcon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class annotation to provide a URL to an image that represents the class.\n\nEach class should only have one [DocumentationIcon].\n\n\n```dart\n/// Utility class for beginning a dream-sharing sequence.\n/// ...documentation...\n@Category(<String>['Military Technology', 'Experimental'])\n@DocumentationIcon('https://docs.example.org/icons/top.png')\nclass DreamSharing {\n // ...code...\n}\n```\n\nSee also:\n\n * [Category], to help place the class in an index.\n * [Summary], which is used to provide a one-line description of a\n class that overrides the inline documentations' own description.", "detail": "", "kind": 7, "label": "DocumentationIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbstractNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract node in a tree.\n\nAbstractNode has as notion of depth, attachment, and parent, but does not\nhave a model for children.\n\nWhen a subclass is changing the parent of a child, it should call either\n`parent.adoptChild(child)` or `parent.dropChild(child)` as appropriate.\nSubclasses can expose an API for manipulating the tree if desired (e.g. a\nsetter for a `child` property, or an `add()` method to manipulate a list).\n\nThe current parent node is exposed by the [parent] property.\n\nThe current attachment state is exposed by [attached]. The root of any tree\nthat is to be considered attached should be manually attached by calling\n[attach]. Other than that, the [attach] and [detach] methods should not be\ncalled directly; attachment is managed automatically by the aforementioned\n[adoptChild] and [dropChild] methods.\n\nSubclasses that have children must override [attach] and [detach] as\ndescribed in the documentation for those methods.\n\nNodes always have a [depth] greater than their ancestors'. There's no\nguarantee regarding depth between siblings. The depth of a node is used to\nensure that nodes are processed in depth order. The [depth] of a child can\nbe more than one greater than the [depth] of the parent, because the [depth]\nvalues are never decreased: all that matters is that it's greater than the\nparent. Consider a tree with a root node A, a child B, and a grandchild C.\nInitially, A will have [depth] 0, B [depth] 1, and C [depth] 2. If C is\nmoved to be a child of A, sibling of B, then the numbers won't change. C's\n[depth] will still be 2. The [depth] is automatically maintained by the\n[adoptChild] and [dropChild] methods.", "detail": "", "kind": 7, "label": "AbstractNode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Category", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A category with which to annotate a class, for documentation\npurposes.\n\nA category is usually represented as a section and a subsection, each\nof which is a string. The engineering team that owns the library to which\nthe class belongs defines the categories used for classes in that library.\nFor example, the Flutter engineering team has defined categories like\n\"Basic/Buttons\" and \"Material Design/Buttons\" for Flutter widgets.\n\nA class can have multiple categories.\n\n\n```dart\n/// A copper coffee pot, as desired by Ben Turpin.\n/// ...documentation...\n@Category(<String>['Pots', 'Coffee'])\n@Category(<String>['Copper', 'Cookware'])\n@DocumentationIcon('https://example.com/images/coffee.png')\n@Summary('A proper cup of coffee is made in a proper copper coffee pot.')\nclass CopperCoffeePot {\n // ...code...\n}\n```\n\nSee also:\n\n * [DocumentationIcon], which is used to give the URL to an image that\n represents the class.\n * [Summary], which is used to provide a one-line description of a\n class that overrides the inline documentations' own description.", "detail": "", "kind": 7, "label": "Category" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterExceptionHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [FlutterError.onError] handler.", "detail": "(FlutterErrorDetails details) → void", "kind": 7, "label": "FlutterExceptionHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncValueGetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to asynchronously report a value on demand.\n\nSee also:\n\n * [ValueGetter], a synchronous version of this signature.\n * [AsyncValueSetter], the setter equivalent of this signature.", "detail": "() → Future<T>", "kind": 7, "label": "AsyncValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EnumProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An property than displays enum values tersely.\n\nThe enum value is displayed with the class name stripped. For example:\n[HitTestBehavior.deferToChild] is shown as `deferToChild`.\n\nSee also:\n\n * [DiagnosticsProperty] which documents named parameters common to all\n [DiagnosticsProperty].", "detail": "", "kind": 7, "label": "EnumProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InformationCollector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [FlutterErrorDetails.informationCollector] callback\nand other callbacks that collect information into a string buffer.", "detail": "(StringBuffer information) → void", "kind": 7, "label": "InformationCollector" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property with a [value] of type [T].\n\nIf the default `value.toString()` does not provide an adequate description\nof the value, specify `description` defining a custom description.\n\nThe [showSeparator] property indicates whether a separator should be placed\nbetween the property [name] and its [value].", "detail": "", "kind": 7, "label": "DiagnosticsProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseRegistry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A registry for packages to add licenses to, so that they can be displayed\ntogether in an interface such as the [LicensePage].\n\nPackages can register their licenses using [addLicense]. User interfaces\nthat wish to show all the licenses can obtain them by calling [licenses].\n\nThe flutter tool will automatically collect the contents of all the LICENSE\nfiles found at the root of each package into a single LICENSE file in the\ndefault asset bundle. Each license in that file is separated from the next\nby a line of eighty hyphens (`-`), and begins with a list of package names\nthat the license applies to, one to a line, separated from the next by a\nblank line. The `services` package registers a license collector that splits\nthat file and adds each entry to the registry.\n\nThe LICENSE files in each package can either consist of a single license, or\ncan be in the format described above. In the latter case, each component\nlicense and list of package names is merged independently.\n\nSee also:\n\n * [showAboutDialog], which shows a Material-style dialog with information\n about the application, including a button that shows a [LicensePage] that\n uses this API to select licenses to show.\n * [AboutListTile], which is a widget that can be added to a [Drawer]. When\n tapped it calls [showAboutDialog].", "detail": "", "kind": 7, "label": "LicenseRegistry" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MessageProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Debugging message displayed like a property.\n\n\nThe following two properties are better expressed using this\n[MessageProperty] class, rather than [StringProperty], as the intent is to\nshow a message with property style display rather than to describe the value\nof an actual property of the object:\n\n```dart\nvar table = MessageProperty('table size', '$columns\\u00D7$rows');\nvar usefulness = MessageProperty('usefulness ratio', 'no metrics collected yet (never painted)');\n```\n\nOn the other hand, [StringProperty] is better suited when the property has a\nconcrete value that is a string:\n\n```dart\nvar name = StringProperty('name', _name);\n```\n\nSee also:\n\n * [DiagnosticsNode.message], which serves the same role for messages\n without a clear property name.\n * [StringProperty], which is a better fit for properties with string values.", "detail": "", "kind": 7, "label": "MessageProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseEntryWithLineBreaks", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [LicenseEntry] for licenses that separate paragraphs with blank\nlines and that hard-wrap text within paragraphs. Lines that begin with one\nor more space characters are also assumed to introduce new paragraphs,\nunless they start with the same number of spaces as the previous line, in\nwhich case it's assumed they are a continuation of an indented paragraph.\n\n\nFor example, the BSD license in this format could be encoded as follows:\n\n```dart\nvoid initMyLibrary() {\n LicenseRegistry.addLicense(() async* {\n yield LicenseEntryWithLineBreaks(<String>['my_library'], '''\nCopyright 2016 The Sample Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Example Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.''');\n });\n}\n```\n\nThis would result in a license with six [paragraphs], the third, fourth, and\nfifth being indented one level.\n\n## Performance considerations\n\nComputing the paragraphs is relatively expensive. Doing the work for one\nlicense per frame is reasonable; doing more at the same time is ill-advised.\nConsider doing all the work at once using [compute] to move the work to\nanother thread, or spreading the work across multiple frames using\n[scheduleTask].", "detail": "", "kind": 7, "label": "LicenseEntryWithLineBreaks" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showSnackBar]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself had been used, no [Scaffold] would have\nbeen found, and the [Scaffold.of] function would have returned null.\n\n```dart\n @override\n Widget build(BuildContext context) {\n // here, Scaffold.of(context) returns null\n return Scaffold(\n appBar: AppBar(title: Text('Demo')),\n body: Builder(\n builder: (BuildContext context) {\n return FlatButton(\n child: Text('BUTTON'),\n onPressed: () {\n // here, Scaffold.of(context) returns the locally created Scaffold\n Scaffold.of(context).showSnackBar(SnackBar(\n content: Text('Hello.')\n ));\n }\n );\n }\n )\n );\n }\n```\n\nThe [BuildContext] for a particular widget can change location over time as\nthe widget is moved around the tree. Because of this, values returned from\nthe methods on this class should not be cached beyond the execution of a\nsingle synchronous function.\n\n[BuildContext] objects are actually [Element] objects. The [BuildContext]\ninterface is used to discourage direct manipulation of [Element] objects.", "detail": "", "kind": 7, "label": "BuildContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTarget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that receives data when a [Draggable] widget is dropped.\n\nWhen a draggable is dragged on top of a drag target, the drag target is\nasked whether it will accept the data the draggable is carrying. If the user\ndoes drop the draggable on top of the drag target (and the drag target has\nindicated that it will accept the draggable's data), then the drag target is\nasked to accept the draggable's data.\n\nSee also:\n\n * [Draggable]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "DragTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Widget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the configuration for an [Element].\n\nWidgets are the central class hierarchy in the Flutter framework. A widget\nis an immutable description of part of a user interface. Widgets can be\ninflated into elements, which manage the underlying render tree.\n\nWidgets themselves have no mutable state (all their fields must be final).\nIf you wish to associate mutable state with a widget, consider using a\n[StatefulWidget], which creates a [State] object (via\n[StatefulWidget.createState]) whenever it is inflated into an element and\nincorporated into the tree.\n\nA given widget can be included in the tree zero or more times. In particular\na given widget can be placed in the tree multiple times. Each time a widget\nis placed in the tree, it is inflated into an [Element], which means a\nwidget that is incorporated into the tree multiple times will be inflated\nmultiple times.\n\nThe [key] property controls how one widget replaces another widget in the\ntree. If the [runtimeType] and [key] properties of the two widgets are\n[operator==], respectively, then the new widget replaces the old widget by\nupdating the underlying element (i.e., by calling [Element.update] with the\nnew widget). Otherwise, the old element is removed from the tree, the new\nwidget is inflated into an element, and the new element is inserted into the\ntree.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.", "detail": "", "kind": 7, "label": "Widget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPhysicalModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PhysicalModel].\n\nThe [borderRadius] and [elevation] are animated.\n\nThe [color] is animated if the [animateColor] property is set; otherwise,\nthe color changes immediately at the start of the animation for the other\ntwo properties. This allows the color to be animated independently (e.g.\nbecause it is being driven by an [AnimatedTheme]).\n\nThe [shape] is not animated.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].", "detail": "", "kind": 7, "label": "AnimatedPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerLocation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to show a [Banner].\n\nThe start and end locations are relative to the ambient [Directionality]\n(which can be overridden by [Banner.layoutDirection]).", "detail": "", "kind": 13, "label": "BannerLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface that [Scrollable] widgets implement in order to use\n[ScrollPosition].\n\nSee also:\n\n * [ScrollableState], which is the most common implementation of this\n interface.\n * [ScrollPosition], which uses this interface to communicate with the\n scrollable widget.", "detail": "", "kind": 7, "label": "ScrollContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapInjector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [SliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [Viewport], so that it will always be laid out before the\n[SliverOverlapInjector] during a particular frame.\n\nSee also:\n\n * [NestedScrollView], which uses a [SliverOverlapAbsorber] to align its\n children, and which shows sample usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalTranslation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[FractionalTranslation], even if the contents are offset such that\nthey overflow.\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [new Transform.translate], which applies an absolute offset translation\n transformation instead of an offset scaled to the child.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightShuttleBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A function that lets [Hero]s self supply a [Widget] that is shown during the\nhero's flight from one route to another instead of default (which is to\nshow the destination route's instance of the Hero).", "detail": "(BuildContext flightContext, Animation<double> animation, HeroFlightDirection flightDirection, BuildContext fromHeroContext, BuildContext toHeroContext) → Widget", "kind": 7, "label": "HeroFlightShuttleBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State object for a [Scrollable] widget.\n\nTo manipulate a [Scrollable] widget's scroll position, use the object\nobtained from the [position] property.\n\nTo be informed of when a [Scrollable] widget is scrolling, use a\n[NotificationListener] to listen for [ScrollNotification] notifications.\n\nThis class is not intended to be subclassed. To specialize the behavior of a\n[Scrollable], provide it with a [ScrollPhysics].", "detail": "", "kind": 7, "label": "ScrollableState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbsorbPointer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this widget prevents its subtree from receiving\npointer events by terminating hit testing at itself. It still consumes space\nduring layout and paints its child as usual. It just prevents its children\nfrom being the target of located events, because it returns true from\n[RenderBox.hitTest].\n\n\nSee also:\n\n * [IgnorePointer], which also prevents its children from receiving pointer\n events but is itself invisible to hit testing.", "detail": "", "kind": 7, "label": "AbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativePositionedTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which transitions the child's position\nbased on the value of [rect] relative to a bounding box with the\nspecified [size].\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [RelativePositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "RelativePositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that manages a pair of text selection handles.\n\nThe selection handles are displayed in the [Overlay] that most closely\nencloses the given [BuildContext].", "detail": "", "kind": 7, "label": "TextSelectionOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a [Widget] when given a concrete value of a [ValueListenable<T>].\n\nIf the `child` parameter provided to the [ValueListenableBuilder] is not\nnull, the same `child` widget is passed back to this [ValueWidgetBuilder]\nand should typically be incorporated in the returned widget tree.\n\nSee also:\n\n * [ValueListenableBuilder], a widget which invokes this builder each time\n a [ValueListenable] changes value.", "detail": "(BuildContext context, T value, Widget child) → Widget", "kind": 7, "label": "ValueWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverSafeArea", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that insets another sliver by sufficient padding to avoid\nintrusions by the operating system.\n\nFor example, this will indent the sliver by enough to avoid the status bar\nat the top of the screen.\n\nIt will also indent the sliver by the amount necessary to avoid The Notch\non the iPhone X, or other similar creative physical features of the\ndisplay.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\nSee also:\n\n * [SafeArea], for insetting widgets to avoid operating system intrusions.\n * [SliverPadding], for insetting slivers in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SliverSafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Navigator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that manages a set of child widgets with a stack discipline.\n\nMany apps have a navigator near the top of their widget hierarchy in order\nto display their logical history using an [Overlay] with the most recently\nvisited pages visually on top of the older pages. Using this pattern lets\nthe navigator visually transition from one page to another by moving the widgets\naround in the overlay. Similarly, the navigator can be used to show a dialog\nby positioning the dialog widget above the current page.\n\n## Using the Navigator\n\nMobile apps typically reveal their contents via full-screen elements\ncalled \"screens\" or \"pages\". In Flutter these elements are called\nroutes and they're managed by a [Navigator] widget. The navigator\nmanages a stack of [Route] objects and provides methods for managing\nthe stack, like [Navigator.push] and [Navigator.pop].\n\n### Displaying a full-screen route\n\nAlthough you can create a navigator directly, it's most common to use\nthe navigator created by a [WidgetsApp] or a [MaterialApp] widget. You\ncan refer to that navigator with [Navigator.of].\n\nA [MaterialApp] is the simplest way to set things up. The [MaterialApp]'s\nhome becomes the route at the bottom of the [Navigator]'s stack. It is what\nyou see when the app is launched.\n\n```dart\nvoid main() {\n runApp(MaterialApp(home: MyAppHome()));\n}\n```\n\nTo push a new route on the stack you can create an instance of\n[MaterialPageRoute] with a builder function that creates whatever you\nwant to appear on the screen. For example:\n\n```dart\nNavigator.push(context, MaterialPageRoute<void>(\n builder: (BuildContext context) {\n return Scaffold(\n appBar: AppBar(title: Text('My Page')),\n body: Center(\n child: FlatButton(\n child: Text('POP'),\n onPressed: () {\n Navigator.pop(context);\n },\n ),\n ),\n );\n },\n));\n```\n\nThe route defines its widget with a builder function instead of a\nchild widget because it will be built and rebuilt in different\ncontexts depending on when it's pushed and popped.\n\nAs you can see, the new route can be popped, revealing the app's home\npage, with the Navigator's pop method:\n\n```dart\nNavigator.pop(context);\n```\n\nIt usually isn't necessary to provide a widget that pops the Navigator\nin a route with a [Scaffold] because the Scaffold automatically adds a\n'back' button to its AppBar. Pressing the back button causes\n[Navigator.pop] to be called. On Android, pressing the system back\nbutton does the same thing.\n\n### Using named navigator routes\n\nMobile apps often manage a large number of routes and it's often\neasiest to refer to them by name. Route names, by convention,\nuse a path-like structure (for example, '/a/b/c').\nThe app's home page route is named '/' by default.\n\nThe [MaterialApp] can be created\nwith a [Map<String, WidgetBuilder>] which maps from a route's name to\na builder function that will create it. The [MaterialApp] uses this\nmap to create a value for its navigator's [onGenerateRoute] callback.\n\n```dart\nvoid main() {\n runApp(MaterialApp(\n home: MyAppHome(), // becomes the route named '/'\n routes: <String, WidgetBuilder> {\n '/a': (BuildContext context) => MyPage(title: 'page A'),\n '/b': (BuildContext context) => MyPage(title: 'page B'),\n '/c': (BuildContext context) => MyPage(title: 'page C'),\n },\n ));\n}\n```\n\nTo show a route by name:\n\n```dart\nNavigator.pushNamed(context, '/b');\n```\n\n### Routes can return a value\n\nWhen a route is pushed to ask the user for a value, the value can be\nreturned via the [pop] method's result parameter.\n\nMethods that push a route return a [Future]. The Future resolves when the\nroute is popped and the [Future]'s value is the [pop] method's `result`\nparameter.\n\nFor example if we wanted to ask the user to press 'OK' to confirm an\noperation we could `await` the result of [Navigator.push]:\n\n```dart\nbool value = await Navigator.push(context, MaterialPageRoute<bool>(\n builder: (BuildContext context) {\n return Center(\n child: GestureDetector(\n child: Text('OK'),\n onTap: () { Navigator.pop(context, true); }\n ),\n );\n }\n));\n```\n\nIf the user presses 'OK' then value will be true. If the user backs\nout of the route, for example by pressing the Scaffold's back button,\nthe value will be null.\n\nWhen a route is used to return a value, the route's type parameter must\nmatch the type of [pop]'s result. That's why we've used\n`MaterialPageRoute<bool>` instead of `MaterialPageRoute<void>` or just\n`MaterialPageRoute`. (If you prefer to not specify the types, though, that's\nfine too.)\n\n### Popup routes\n\nRoutes don't have to obscure the entire screen. [PopupRoute]s cover the\nscreen with a [ModalRoute.barrierColor] that can be only partially opaque to\nallow the current screen to show through. Popup routes are \"modal\" because\nthey block input to the widgets below.\n\nThere are functions which create and show popup routes. For\nexample: [showDialog], [showMenu], and [showModalBottomSheet]. These\nfunctions return their pushed route's Future as described above.\nCallers can await the returned value to take an action when the\nroute is popped, or to discover the route's value.\n\nThere are also widgets which create popup routes, like [PopupMenuButton] and\n[DropdownButton]. These widgets create internal subclasses of PopupRoute\nand use the Navigator's push and pop methods to show and dismiss them.\n\n### Custom routes\n\nYou can create your own subclass of one of the widget library route classes\nlike [PopupRoute], [ModalRoute], or [PageRoute], to control the animated\ntransition employed to show the route, the color and behavior of the route's\nmodal barrier, and other aspects of the route.\n\nThe [PageRouteBuilder] class makes it possible to define a custom route\nin terms of callbacks. Here's an example that rotates and fades its child\nwhen the route appears or disappears. This route does not obscure the entire\nscreen because it specifies `opaque: false`, just as a popup route does.\n\n```dart\nNavigator.push(context, PageRouteBuilder(\n opaque: false,\n pageBuilder: (BuildContext context, _, __) {\n return Center(child: Text('My PageRoute'));\n },\n transitionsBuilder: (___, Animation<double> animation, ____, Widget child) {\n return FadeTransition(\n opacity: animation,\n child: RotationTransition(\n turns: Tween<double>(begin: 0.5, end: 1.0).animate(animation),\n child: child,\n ),\n );\n }\n));\n```\n\nThe page route is built in two parts, the \"page\" and the\n\"transitions\". The page becomes a descendant of the child passed to\nthe `transitionsBuilder` function. Typically the page is only built once,\nbecause it doesn't depend on its animation parameters (elided with `_`\nand `__` in this example). The transition is built on every frame\nfor its duration.\n\n### Nesting Navigators\n\nAn app can use more than one Navigator. Nesting one Navigator below\nanother Navigator can be used to create an \"inner journey\" such as tabbed\nnavigation, user registration, store checkout, or other independent journeys\nthat represent a subsection of your overall application.\n\n#### Real World Example\n\nIt is standard practice for iOS apps to use tabbed navigation where each\ntab maintains its own navigation history. Therefore, each tab has its own\n[Navigator], creating a kind of \"parallel navigation.\"\n\nIn addition to the parallel navigation of the tabs, it is still possible to\nlaunch full-screen pages that completely cover the tabs. For example: an\non-boarding flow, or an alert dialog. Therefore, there must exist a \"root\"\n[Navigator] that sits above the tab navigation. As a result, each of the\ntab's [Navigator]s are actually nested [Navigator]s sitting below a single\nroot [Navigator].\n\nThe nested [Navigator]s for tabbed navigation sit in [WidgetApp] and\n[CupertinoTabView], so you don't need to worry about nested [Navigator]s\nin this situation, but it's a real world example where nested [Navigator]s\nare used.\n\nThe following example demonstrates how a nested [Navigator] can be used to\npresent a standalone user registration journey.\n\nEven though this example uses two [Navigator]s to demonstrate nested\n[Navigator]s, a similar result is possible using only a single [Navigator].\n\nRun this example with `flutter run --route=/signup` to start it with\nthe signup flow instead of on the home page.\n\n```dart\nimport 'package:flutter/material.dart';\n```\n\n```dart\nvoid main() => runApp(new MyApp());\n```\n\n```dart\nclass MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Code Sample for Navigator',\n // MaterialApp contains our top-level Navigator\n initialRoute: '/',\n routes: {\n '/': (BuildContext context) => HomePage(),\n '/signup': (BuildContext context) => SignUpPage(),\n },\n );\n }\n}\n\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: Text('Home Page'),\n ),\n );\n }\n}\n\nclass CollectPersonalInfoPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: GestureDetector(\n onTap: () {\n // This moves from the personal info page to the credentials page,\n // replacing this page with that one.\n Navigator.of(context)\n .pushReplacementNamed('signup/choose_credentials');\n },\n child: Container(\n color: Colors.lightBlue,\n alignment: Alignment.center,\n child: Text('Collect Personal Info Page'),\n ),\n ),\n );\n }\n}\n\nclass ChooseCredentialsPage extends StatelessWidget {\n const ChooseCredentialsPage({\n this.onSignupComplete,\n });\n\n final VoidCallback onSignupComplete;\n\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: onSignupComplete,\n child: DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.pinkAccent,\n alignment: Alignment.center,\n child: Text('Choose Credentials Page'),\n ),\n ),\n );\n }\n}\n\nclass SignUpPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n // SignUpPage builds its own Navigator which ends up being a nested\n // Navigator in our app.\n return Navigator(\n initialRoute: 'signup/personal_info',\n onGenerateRoute: (RouteSettings settings) {\n WidgetBuilder builder;\n switch (settings.name) {\n case 'signup/personal_info':\n // Assume CollectPersonalInfoPage collects personal info and then\n // navigates to 'signup/choose_credentials'.\n builder = (BuildContext _) => CollectPersonalInfoPage();\n break;\n case 'signup/choose_credentials':\n // Assume ChooseCredentialsPage collects new credentials and then\n // invokes 'onSignupComplete()'.\n builder = (BuildContext _) => ChooseCredentialsPage(\n onSignupComplete: () {\n // Referencing Navigator.of(context) from here refers to the\n // top level Navigator because SignUpPage is above the\n // nested Navigator that it created. Therefore, this pop()\n // will pop the entire \"sign up\" journey and return to the\n // \"/\" route, AKA HomePage.\n Navigator.of(context).pop();\n },\n );\n break;\n default:\n throw Exception('Invalid route: ${settings.name}');\n }\n return MaterialPageRoute(builder: builder, settings: settings);\n },\n );\n }\n}\n```\n\n[Navigator.of] operates on the nearest ancestor [Navigator] from the given\n[BuildContext]. Be sure to provide a [BuildContext] below the intended\n[Navigator], especially in large [build] methods where nested [Navigator]s\nare created. The [Builder] widget can be used to access a [BuildContext] at\na desired location in the widget subtree.", "detail": "", "kind": 7, "label": "Navigator" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Texture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture widget refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture widgets are repainted autonomously as dictated by the backend (e.g.\non arrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by its parent widget, and the\ntexture is automatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "Texture" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePredicate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [Navigator.popUntil] predicate argument.", "detail": "(Route<dynamic> route) → bool", "kind": 7, "label": "RoutePredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "RenderObjectWidgets provide the configuration for [RenderObjectElement]s,\nwhich wrap [RenderObject]s, which provide the actual rendering of the\napplication.", "detail": "", "kind": 7, "label": "RenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures described by the given gesture\nfactories.\n\nFor common gestures, use a [GestureRecognizer].\n[RawGestureDetector] is useful primarily when developing your\nown gesture recognizers.\n\nConfiguring the gesture recognizers requires a carefully constructed map, as\ndescribed in [gestures] and as shown in the example below.\n\n\nThis example shows how to hook up a [TapGestureRecognizer]. It assumes that\nthe code is being used inside a [State] object with a `_last` field that is\nthen displayed as the child of the gesture detector.\n\n```dart\nRawGestureDetector(\n gestures: <Type, GestureRecognizerFactory>{\n TapGestureRecognizer: GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(\n () => TapGestureRecognizer(),\n (TapGestureRecognizer instance) {\n instance\n ..onTapDown = (TapDownDetails details) { setState(() { _last = 'down'; }); }\n ..onTapUp = (TapUpDetails details) { setState(() { _last = 'up'; }); }\n ..onTap = () { setState(() { _last = 'tap'; }); }\n ..onTapCancel = () { setState(() { _last = 'cancel'; }); };\n },\n ),\n },\n child: Container(width: 300.0, height: 300.0, color: Colors.yellow, child: Text(_last)),\n)\n```\n\nSee also:\n\n * [GestureDetector], a less flexible but much simpler widget that does the same thing.\n * [Listener], a widget that reports raw pointer events.\n * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.", "detail": "", "kind": 7, "label": "RawGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedModeBanner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a [Banner] saying \"DEBUG\" when running in checked mode.\n[MaterialApp] builds one of these by default.\nDoes nothing in release mode.", "detail": "", "kind": 7, "label": "CheckedModeBanner" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Associates a [ScrollController] with a subtree.\n\nWhen a [ScrollView] has [ScrollView.primary] set to true and is not given\nan explicit [ScrollController], the [ScrollView] uses [of] to find the\n[ScrollController] associated with its subtree.\n\nThis mechanism can be used to provide default behavior for scroll views in a\nsubtree. For example, the [Scaffold] uses this mechanism to implement the\nscroll-to-top gesture on iOS.", "detail": "", "kind": 7, "label": "PrimaryScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MetaData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "MetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an iOS view in the Widget hierarchy.\n\n\nEmbedding iOS views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\n\n\n\nConstruction of UIViews is done asynchronously, before the UIView is ready this widget paints\nnothing while maintaining the same layout constraints.", "detail": "", "kind": 7, "label": "UiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Element", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An instantiation of a [Widget] at a particular location in the tree.\n\nWidgets describe how to configure a subtree but the same widget can be used\nto configure multiple subtrees simultaneously because widgets are immutable.\nAn [Element] represents the use of a widget to configure a specific location\nin the tree. Over time, the widget associated with a given element can\nchange, for example, if the parent widget rebuilds and creates a new widget\nfor this location.\n\nElements form a tree. Most elements have a unique child, but some widgets\n(e.g., subclasses of [RenderObjectElement]) can have multiple children.\n\nElements have the following lifecycle:\n\n * The framework creates an element by calling [Widget.createElement] on the\n widget that will be used as the element's initial configuration.\n * The framework calls [mount] to add the newly created element to the tree\n at a given slot in a given parent. The [mount] method is responsible for\n inflating any child widgets and calling [attachRenderObject] as\n necessary to attach any associated render objects to the render tree.\n * At this point, the element is considered \"active\" and might appear on\n screen.\n * At some point, the parent might decide to change the widget used to\n configure this element, for example because the parent rebuilt with new\n state. When this happens, the framework will call [update] with the new\n widget. The new widget will always have the same [runtimeType] and key as\n old widget. If the parent wishes to change the [runtimeType] or key of\n the widget at this location in the tree, can do so by unmounting this\n element and inflating the new widget at this location.\n * At some point, an ancestor might decide to remove this element (or an\n intermediate ancestor) from the tree, which the ancestor does by calling\n [deactivateChild] on itself. Deactivating the intermediate ancestor will\n remove that element's render object from the render tree and add this\n element to the [owner]'s list of inactive elements, causing the framework\n to call [deactivate] on this element.\n * At this point, the element is considered \"inactive\" and will not appear\n on screen. An element can remain in the inactive state only until\n the end of the current animation frame. At the end of the animation\n frame, any elements that are still inactive will be unmounted.\n * If the element gets reincorporated into the tree (e.g., because it or one\n of its ancestors has a global key that is reused), the framework will\n remove the element from the [owner]'s list of inactive elements, call\n [activate] on the element, and reattach the element's render object to\n the render tree. (At this point, the element is again considered \"active\"\n and might appear on screen.)\n * If the element does not get reincorporated into the tree by the end of\n the current animation frame, the framework will call [unmount] on the\n element.\n * At this point, the element is considered \"defunct\" and will not be\n incorporated into the tree in the future.", "detail": "", "kind": 7, "label": "Element" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a scrolling container that animates items when they are\ninserted or removed.\n\nWhen an item is inserted with [insertItem] an animation begins running. The\nanimation is passed to [AnimatedList.itemBuilder] whenever the item's widget\nis needed.\n\nWhen an item is removed with [removeItem] its animation is reversed.\nThe removed item's animation is passed to the [removeItem] builder\nparameter.\n\nAn app that needs to insert or remove items in response to an event\ncan refer to the [AnimatedList]'s state with a global key:\n\n```dart\nGlobalKey<AnimatedListState> listKey = GlobalKey<AnimatedListState>();\n...\nAnimatedList(key: listKey, ...);\n...\nlistKey.currentState.insert(123);\n```\n\n[AnimatedList] item input handlers can also refer to their [AnimatedListState]\nwith the static [AnimatedList.of] method.", "detail": "", "kind": 7, "label": "AnimatedListState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dismissible", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dismissed by dragging in the indicated [direction].\n\nDragging or flinging this widget in the [DismissDirection] causes the child\nto slide out of view. Following the slide animation, if [resizeDuration] is\nnon-null, the Dismissible widget animates its height (or width, whichever is\nperpendicular to the dismiss direction) to zero over the [resizeDuration].\n\n\nBackgrounds can be used to implement the \"leave-behind\" idiom. If a background\nis specified it is stacked behind the Dismissible's child and is exposed when\nthe child moves.\n\nThe widget calls the [onDismissed] callback either after its size has\ncollapsed to zero (if [resizeDuration] is non-null) or immediately after\nthe slide animation (if [resizeDuration] is null). If the Dismissible is a\nlist item, it must have a key that distinguishes it from the other items and\nits [onDismissed] callback must remove the item from the list.", "detail": "", "kind": 7, "label": "Dismissible" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mutable selection state of the inspector.", "detail": "", "kind": 7, "label": "InspectorSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State associated with a [Form] widget.\n\nA [FormState] object can be used to [save], [reset], and [validate] every\n[FormField] that is a descendant of the associated [Form].\n\nTypically obtained via [Form.of].", "detail": "", "kind": 7, "label": "FormState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionHandleType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Which type of selection handle to be displayed.\n\nWith mixed-direction text, both handles may be the same type. Examples:\n\n* LTR text: 'the <quick brown> fox':\n\n The '<' is drawn with the [left] type, the '>' with the [right]\n\n* RTL text: 'XOF <NWORB KCIUQ> EHT':\n\n Same as above.\n\n* mixed text: '<the NWOR<B KCIUQ fox'\n\n Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn\n with the [left] type.\n\nSee also:\n\n * [TextDirection], which discusses left-to-right and right-to-left text in\n more detail.", "detail": "", "kind": 13, "label": "TextSelectionHandleType" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stack", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its children relative to the edges of its box.\n\nThis class is useful if you want to overlap several children in a simple\nway, for example having some text and an image, overlaid with a gradient and\na button attached to the bottom.\n\nEach child of a [Stack] widget is either _positioned_ or _non-positioned_.\nPositioned children are those wrapped in a [Positioned] widget that has at\nleast one non-null property. The stack sizes itself to contain all the\nnon-positioned children, which are positioned according to [alignment]\n(which defaults to the top-left corner in left-to-right environments and the\ntop-right corner in right-to-left environments). The positioned children are\nthen placed relative to the stack according to their top, right, bottom, and\nleft properties.\n\nThe stack paints its children in order with the first child being at the\nbottom. If you want to change the order in which the children paint, you\ncan rebuild the stack with the children in the new order. If you reorder\nthe children in this way, consider giving the children non-null keys.\nThese keys will cause the framework to move the underlying objects for\nthe children to their new locations rather than recreate them at their\nnew location.\n\nFor more details about the stack layout algorithm, see [RenderStack].\n\nIf you want to lay a number of children out in a particular pattern, or if\nyou want to make a custom layout manager, you probably want to use\n[CustomMultiChildLayout] instead. In particular, when using a [Stack] you\ncan't position children relative to their size or the stack's own size.\n\n\nUsing a [Stack] you can position widgets over one another.\n\n```dart\nStack(\n children: <Widget>[\n Container(\n width: 100,\n height: 100,\n color: Colors.red,\n ),\n Container(\n width: 90,\n height: 90,\n color: Colors.green,\n ),\n Container(\n width: 80,\n height: 80,\n color: Colors.blue,\n ),\n ],\n)\n```\n\n\nThis example shows how [Stack] can be used to enhance text visibility\nby adding gradient backdrops.\n\n```dart\nSizedBox(\n width: 250,\n height: 250,\n child: Stack(\n children: <Widget>[\n Container(\n width: 250,\n height: 250,\n color: Colors.white,\n ),\n Container(\n padding: EdgeInsets.all(5.0),\n alignment: Alignment.bottomCenter,\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: <Color>[\n Colors.black.withAlpha(0),\n Colors.black12,\n Colors.black45\n ],\n ),\n ),\n child: Text(\n \"Foreground Text\",\n style: TextStyle(color: Colors.white, fontSize: 20.0),\n ),\n ),\n ],\n ),\n)\n```\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * [Flow], which provides paint-time control of its children using transform\n matrices.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Stack" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeaderDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Delegate for configuring a [SliverPersistentHeader].", "detail": "", "kind": 7, "label": "SliverPersistentHeaderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A leaf node in the focus tree that can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nTo request focus, find the [FocusScopeNode] for the current [BuildContext]\nand call the [FocusScopeNode.requestFocus] method:\n\n```dart\nFocusScope.of(context).requestFocus(focusNode);\n```\n\nIf your widget requests focus, be sure to call\n`FocusScope.of(context).reparentIfNeeded(focusNode);` in your `build`\nmethod to reparent your [FocusNode] if your widget moves from one\nlocation in the tree to another.\n\n## Lifetime\n\nFocus nodes are long-lived objects. For example, if a stateful widget has a\nfocusable child widget, it should create a [FocusNode] in the\n[State.initState] method, and [dispose] it in the [State.dispose] method,\nproviding the same [FocusNode] to the focusable child each time the\n[State.build] method is run. In particular, creating a [FocusNode] each time\n[State.build] is invoked will cause the focus to be lost each time the\nwidget is built.\n\nSee also:\n\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusNode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the scale of a transformed widget.\n\nHere's an illustration of the [ScaleTransition] widget, with it's [alignment]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "ScaleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegion", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Annotates a region of the layer tree with a value.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer pushed into the layer tree.", "detail": "", "kind": 7, "label": "AnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the child semantics with an index.\n\nSemantic indexes are used by TalkBack/Voiceover to make announcements about\nthe current scroll state. Certain widgets like the [ListView] will\nautomatically provide a child index for building semantics. A user may wish\nto manually provide semantic indexes if not all child of the scrollable\ncontribute semantics.\n\n\nThe example below handles spacers in a scrollable that don't contribute\nsemantics. The automatic indexes would give the spaces a semantic index,\ncausing scroll announcements to erroneously state that there are four items\nvisible.\n\n```dart\nListView(\n addSemanticIndexes: false,\n semanticChildCount: 2,\n children: const <Widget>[\n IndexedSemantics(index: 0, child: Text('First')),\n Spacer(),\n IndexedSemantics(index: 1, child: Text('Second')),\n Spacer(),\n ],\n)\n```\n\nSee also:\n\n * [CustomScrollView], for an explanation of index semantics.", "detail": "", "kind": 7, "label": "IndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the physics of a [Scrollable] widget.\n\nFor example, determines how the [Scrollable] will behave when the user\nreaches the maximum scroll extent or when the user stops scrolling.\n\nWhen starting a physics [Simulation], the current scroll position and\nvelocity are used as the initial conditions for the particle in the\nsimulation. The movement of the particle in the simulation is then used to\ndetermine the scroll position for the widget.", "detail": "", "kind": 7, "label": "ScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridPaper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a rectilinear grid of lines one pixel wide.\n\nUseful with a [Stack] for visualizing your layout along a grid.\n\nThe grid's origin (where the first primary horizontal line and the first\nprimary vertical line intersect) is at the top left of the widget.\n\nThe grid is drawn over the [child] widget.", "detail": "", "kind": 7, "label": "GridPaper" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directionality", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the ambient directionality of text and\ntext-direction-sensitive render objects.\n\nFor example, [Padding] depends on the [Directionality] to resolve\n[EdgeInsetsDirectional] objects into absolute [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "Directionality" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that paints a [Decoration] either before or after its child paints.\n\n[Container] insets its child by the widths of the borders; this widget does\nnot.\n\nCommonly used with [BoxDecoration].\n\nThe [child] is not clipped. To clip a child to the shape of a particular\n[ShapeDecoration], consider using a [ClipPath] widget.\n\n\nThis sample shows a radial gradient that draws a moon on a night sky:\n\n```dart\nDecoratedBox(\n decoration: BoxDecoration(\n gradient: RadialGradient(\n center: const Alignment(-0.5, -0.6),\n radius: 0.15,\n colors: <Color>[\n const Color(0xFFEEEEEE),\n const Color(0xFF111133),\n ],\n stops: <double>[0.9, 1.0],\n ),\n ),\n)\n```\n\nSee also:\n\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * [DecoratedBoxTransition], the version of this class that animates on the\n [decoration] property.\n * [Decoration], which you can extend to provide other effects with\n [DecoratedBox].\n * [CustomPaint], another way to draw custom effects from the widget layer.", "detail": "", "kind": 7, "label": "DecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the size of one of the descendants of the object receiving\nthis notification has changed, and that therefore any assumptions about that\nlayout are no longer valid.\n\nFor example, sent by the [SizeChangedLayoutNotifier] widget whenever that\nwidget changes size.\n\nThis notification can be used for triggering repaints, but if you use this\nnotification to trigger rebuilds or relayouts, you'll create a backwards\ndependency in the frame pipeline because [SizeChangedLayoutNotification]s\nare generated during layout, which is after the build phase and in the\nmiddle of the layout phase. This backwards dependency can lead to visual\ncorruption or lags.\n\nSee [LayoutChangedNotification] for additional discussion of layout\nnotifications such as this one.\n\nSee also:\n\n * [SizeChangedLayoutNotifier], which sends this notification.\n * [LayoutChangedNotification], of which this is a subclass.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "State", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The logic and internal state for a [StatefulWidget].\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\n[State] objects are created by the framework by calling the\n[StatefulWidget.createState] method when inflating a [StatefulWidget] to\ninsert it into the tree. Because a given [StatefulWidget] instance can be\ninflated multiple times (e.g., the widget is incorporated into the tree in\nmultiple places at once), there might be more than one [State] object\nassociated with a given [StatefulWidget] instance. Similarly, if a\n[StatefulWidget] is removed from the tree and later inserted in to the tree\nagain, the framework will call [StatefulWidget.createState] again to create\na fresh [State] object, simplifying the lifecycle of [State] objects.\n\n[State] objects have the following lifecycle:\n\n * The framework creates a [State] object by calling\n [StatefulWidget.createState].\n * The newly created [State] object is associated with a [BuildContext].\n This association is permanent: the [State] object will never change its\n [BuildContext]. However, the [BuildContext] itself can be moved around\n the tree along with its subtree. At this point, the [State] object is\n considered [mounted].\n * The framework calls [initState]. Subclasses of [State] should override\n [initState] to perform one-time initialization that depends on the\n [BuildContext] or the widget, which are available as the [context] and\n [widget] properties, respectively, when the [initState] method is\n called.\n * The framework calls [didChangeDependencies]. Subclasses of [State] should\n override [didChangeDependencies] to perform initialization involving\n [InheritedWidget]s. If [BuildContext.inheritFromWidgetOfExactType] is\n called, the [didChangeDependencies] method will be called again if the\n inherited widgets subsequently change or if the widget moves in the tree.\n * At this point, the [State] object is fully initialized and the framework\n might call its [build] method any number of times to obtain a\n description of the user interface for this subtree. [State] objects can\n spontaneously request to rebuild their subtree by callings their\n [setState] method, which indicates that some of their internal state\n has changed in a way that might impact the user interface in this\n subtree.\n * During this time, a parent widget might rebuild and request that this\n location in the tree update to display a new widget with the same\n [runtimeType] and [Widget.key]. When this happens, the framework will\n update the [widget] property to refer to the new widget and then call the\n [didUpdateWidget] method with the previous widget as an argument. [State]\n objects should override [didUpdateWidget] to respond to changes in their\n associated widget (e.g., to start implicit animations). The framework\n always calls [build] after calling [didUpdateWidget], which means any\n calls to [setState] in [didUpdateWidget] are redundant.\n * During development, if a hot reload occurs (whether initiated from the\n command line `flutter` tool by pressing `r`, or from an IDE), the\n [reassemble] method is called. This provides an opportunity to\n reinitialize any data that was prepared in the [initState] method.\n * If the subtree containing the [State] object is removed from the tree\n (e.g., because the parent built a widget with a different [runtimeType]\n or [Widget.key]), the framework calls the [deactivate] method. Subclasses\n should override this method to clean up any links between this object\n and other elements in the tree (e.g. if you have provided an ancestor\n with a pointer to a descendant's [RenderObject]).\n * At this point, the framework might reinsert this subtree into another\n part of the tree. If that happens, the framework will ensure that it\n calls [build] to give the [State] object a chance to adapt to its new\n location in the tree. If the framework does reinsert this subtree, it\n will do so before the end of the animation frame in which the subtree was\n removed from the tree. For this reason, [State] objects can defer\n releasing most resources until the framework calls their [dispose]\n method.\n * If the framework does not reinsert this subtree by the end of the current\n animation frame, the framework will call [dispose], which indicates that\n this [State] object will never build again. Subclasses should override\n this method to release any resources retained by this object (e.g.,\n stop any active animations).\n * After the framework calls [dispose], the [State] object is considered\n unmounted and the [mounted] property is false. It is an error to call\n [setState] at this point. This stage of the lifecycle is terminal: there\n is no way to remount a [State] object that has been disposed.\n\nSee also:\n\n * [StatefulWidget], where the current configuration of a [State] is hosted,\n and whose documentation has sample code for [State].\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "State" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Title", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that describes this app in the operating system.", "detail": "", "kind": 7, "label": "Title" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls a scrollable widget.\n\nScroll controllers are typically stored as member variables in [State]\nobjects and are reused in each [State.build]. A single scroll controller can\nbe used to control multiple scrollable widgets, but some operations, such\nas reading the scroll [offset], require the controller to be used with a\nsingle scrollable widget.\n\nA scroll controller creates a [ScrollPosition] to manage the state specific\nto an individual [Scrollable] widget. To use a custom [ScrollPosition],\nsubclass [ScrollController] and override [createScrollPosition].\n\nA [ScrollController] is a [Listenable]. It notifies its listeners whenever\nany of the attached [ScrollPosition]s notify _their_ listeners (i.e.\nwhenever any of them scroll). It does not notify its listeners when the list\nof attached [ScrollPosition]s changes.\n\nTypically used with [ListView], [GridView], [CustomScrollView].\n\nSee also:\n\n * [ListView], [GridView], [CustomScrollView], which can be controlled by a\n [ScrollController].\n * [Scrollable], which is the lower-level widget that creates and associates\n [ScrollPosition] objects with [ScrollController] objects.\n * [PageController], which is an analogous object for controlling a\n [PageView].\n * [ScrollPosition], which manages the scroll offset for an individual\n scrolling widget.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's orientation\n(distinct from the device orientation).\n\nSee also:\n\n * [LayoutBuilder], which exposes the complete constraints, not just the\n orientation.\n * [CustomSingleChildLayout], which positions its child during layout.\n * [CustomMultiChildLayout], with which you can define the precise layout\n of a list of children during the layout phase.\n * [MediaQueryData.orientation], which exposes whether the device is in\n landscape or portrait mode.", "detail": "", "kind": 7, "label": "OrientationBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expanded", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that expands a child of a [Row], [Column], or [Flex]\nso that the child fills the available space.\n\nUsing an [Expanded] widget makes a child of a [Row], [Column], or [Flex]\nexpand to fill the available space along the main axis (e.g., horizontally for\na [Row] or vertically for a [Column]). If multiple children are expanded,\nthe available space is divided among them according to the [flex] factor.\n\nAn [Expanded] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Expanded] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\n\nThis example shows how to use an [Expanded] widget in a [Column] so that\nit's middle child, a [Container] here, expands to fill the space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Column Sample'),\n ),\n body: Center(\n child: Column(\n children: <Widget>[\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n Expanded(\n child: Container(\n color: Colors.blue,\n width: 100,\n ),\n ),\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n ],\n ),\n ),\n );\n}\n```\n\nThis example shows how to use an [Expanded] widget in a [Row] with multiple\nchildren expanded, utilizing the [flex] factor to prioritize available space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Row Sample'),\n ),\n body: Center(\n child: Row(\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n Container(\n color: Colors.blue,\n height: 100,\n width: 50,\n ),\n Expanded(\n flex: 1,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Flexible], which does not force the child to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Expanded" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that uses a single child layout model.\n\nSee also:\n\n * [ListView], which is a [BoxScrollView] that uses a linear layout model.\n * [GridView], which is a [BoxScrollView] that uses a 2D layout model.\n * [CustomScrollView], which can combine multiple child layout models into a\n single scroll view.", "detail": "", "kind": 7, "label": "BoxScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The text style to apply to descendant [Text] widgets without explicit style.", "detail": "", "kind": 7, "label": "DefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BallisticScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on a physics [Simulation].\n\nA [BallisticScrollActivity] is typically used when the user lifts their\nfinger off the screen to continue the scrolling gesture with the current velocity.\n\n[BallisticScrollActivity] is also used to restore a scroll view to a valid\nscroll offset when the geometry of the scroll view changes. In these\nsituations, the [Simulation] typically starts with a zero velocity.\n\nSee also:\n\n * [DrivenScrollActivity], which animates a scroll view based on a set of\n animation parameters.", "detail": "", "kind": 7, "label": "BallisticScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenVisitor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks passed to [AnimatedWidgetBaseState.forEachTween].", "detail": "(Tween<T> tween, T targetValue, TweenConstructor<T> constructor) → Tween<T>", "kind": 7, "label": "TweenVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints a [Banner].", "detail": "", "kind": 7, "label": "BannerPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two relative rects.\n\nThis class specializes the interpolation of [Tween<RelativeRect>] to\nuse [RelativeRect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RelativeRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has mutable state.\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\nA stateful widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\nStateful widgets are useful when the part of the user interface you are\ndescribing can change dynamically, e.g. due to having an internal\nclock-driven state, or depending on some system state. For compositions that\ndepend only on the configuration information in the object itself and the\n[BuildContext] in which the widget is inflated, consider using\n[StatelessWidget].\n\n\n[StatefulWidget] instances themselves are immutable and store their mutable\nstate either in separate [State] objects that are created by the\n[createState] method, or in objects to which that [State] subscribes, for\nexample [Stream] or [ChangeNotifier] objects, to which references are stored\nin final fields on the [StatefulWidget] itself.\n\nThe framework calls [createState] whenever it inflates a\n[StatefulWidget], which means that multiple [State] objects might be\nassociated with the same [StatefulWidget] if that widget has been inserted\ninto the tree in multiple places. Similarly, if a [StatefulWidget] is\nremoved from the tree and later inserted in to the tree again, the framework\nwill call [createState] again to create a fresh [State] object, simplifying\nthe lifecycle of [State] objects.\n\nA [StatefulWidget] keeps the same [State] object when moving from one\nlocation in the tree to another if its creator used a [GlobalKey] for its\n[key]. Because a widget with a [GlobalKey] can be used in at most one\nlocation in the tree, a widget that uses a [GlobalKey] has at most one\nassociated element. The framework takes advantage of this property when\nmoving a widget with a global key from one location in the tree to another\nby grafting the (unique) subtree associated with that widget from the old\nlocation to the new location (instead of recreating the subtree at the new\nlocation). The [State] objects associated with [StatefulWidget] are grafted\nalong with the rest of the subtree, which means the [State] object is reused\n(instead of being recreated) in the new location. However, in order to be\neligible for grafting, the widget must be inserted into the new location in\nthe same animation frame in which it was removed from the old location.\n\n## Performance considerations\n\nThere are two primary categories of [StatefulWidget]s.\n\nThe first is one which allocates resources in [State.initState] and disposes\nof them in [State.dispose], but which does not depend on [InheritedWidget]s\nor call [State.setState]. Such widgets are commonly used at the root of an\napplication or page, and communicate with subwidgets via [ChangeNotifier]s,\n[Stream]s, or other such objects. Stateful widgets following such a pattern\nare relatively cheap (in terms of CPU and GPU cycles), because they are\nbuilt once then never update. They can, therefore, have somewhat complicated\nand deep build methods.\n\nThe second category is widgets that use [State.setState] or depend on\n[InheritedWidget]s. These will typically rebuild many times during the\napplication's lifetime, and it is therefore important to minimize the impact\nof rebuilding such a widget. (They may also use [State.initState] or\n[State.didChangeDependencies] and allocate resources, but the important part\nis that they rebuild.)\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateful widget:\n\n * Push the state to the leaves. For example, if your page has a ticking\n clock, rather than putting the state at the top of the page and\n rebuilding the entire page each time the clock ticks, create a dedicated\n clock widget that only updates itself.\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. Ideally, a stateful widget would only create a\n single widget, and that widget would be a [RenderObjectWidget].\n (Obviously this isn't always practical, but the closer a widget gets to\n this ideal, the more efficient it will be.)\n\n * If a subtree does not change, cache the widget that represents that\n subtree and re-use it each time it can be used. It is massively more\n efficient for a widget to be re-used than for a new (but\n identically-configured) widget to be created. Factoring out the stateful\n part into a widget that takes a child argument is a common way of doing\n this.\n\n * Use `const` widgets where possible. (This is equivalent to caching a\n widget and re-using it.)\n\n * Avoid changing the depth of any created subtrees or changing the type of\n any widgets in the subtree. For example, rather than returning either the\n child or the child wrapped in an [IgnorePointer], always wrap the child\n widget in an [IgnorePointer] and control the [IgnorePointer.ignoring]\n property. This is because changing the depth of the subtree requires\n rebuilding, laying out, and painting the entire subtree, whereas just\n changing the property will require the least possible change to the\n render tree (in the case of [IgnorePointer], for example, no layout or\n repaint is necessary at all).\n\n * If the depth must be changed for some reason, consider wrapping the\n common parts of the subtrees in widgets that have a [GlobalKey] that\n remains consistent for the life of the stateful widget. (The\n [KeyedSubtree] widget may be useful for this purpose if no other widget\n can conveniently be assigned the key.)\n\n\nThis is a skeleton of a stateful widget subclass called `YellowBird`.\n\nIn this example. the [State] has no actual state. State is normally\nrepresented as private member fields. Also, normally widgets have more\nconstructor arguments, each of which corresponds to a `final` property.\n\n```dart\nclass YellowBird extends StatefulWidget {\n const YellowBird({ Key key }) : super(key: key);\n\n @override\n _YellowBirdState createState() => _YellowBirdState();\n}\n\nclass _YellowBirdState extends State<YellowBird> {\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFFFFE306));\n }\n}\n```\n\nThis example shows the more generic widget `Bird` which can be given a\ncolor and a child, and which has some internal state with a method that\ncan be called to mutate it:\n\n```dart\nclass Bird extends StatefulWidget {\n const Bird({\n Key key,\n this.color = const Color(0xFFFFE306),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n _BirdState createState() => _BirdState();\n}\n\nclass _BirdState extends State<Bird> {\n double _size = 1.0;\n\n void grow() {\n setState(() { _size += 0.1; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(\n color: widget.color,\n transform: Matrix4.diagonal3Values(_size, _size, 1.0),\n child: widget.child,\n );\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [State], where the logic behind a [StatefulWidget] is hosted.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatefulWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. Rather than receiving\ntheir children as an explicit [List], they receive their children using a\n[SliverChildDelegate].\n\nIt's uncommon to subclass [SliverChildDelegate]. Instead, consider using one\nof the existing subclasses that provide adaptors to builder callbacks or\nexplicit child lists.\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as in the\ncase of [SliverChildListDelegate]) or lazily provided ones (such as in the\ncase of [SliverChildBuilderDelegate]).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree, states\nand render objects are destroyed. A new child at the same position in the\nsliver will be lazily recreated along with new elements, states and render\nobjects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the sliver child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the sliver child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child widget\n subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the sliver child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the sliver keeps the child's\n render object (and by extension, its associated elements and states) in a\n cache list instead of destroying them. When scrolled back into view, the\n render object is repainted as-is (if it wasn't marked dirty in the\n interim).\n\n This only works if the [SliverChildDelegate] subclasses don't wrap the\n child widget subtree with other widgets such as [AutomaticKeepAlive] and\n [RepaintBoundary] via `addAutomaticKeepAlives` and\n `addRepaintBoundaries`.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default in\n [SliverChildListDelegate] or [SliverChildListDelegate]). Instead of\n unconditionally caching the child element subtree when scrolling\n off-screen like [KeepAlive], [AutomaticKeepAlive] can let whether to\n cache the subtree be determined by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its sliver child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the sliver child element subtree will be\n destroyed when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive by\n using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.", "detail": "", "kind": 7, "label": "SliverChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildListDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using an\nexplicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollIndicatorNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that an [GlowingOverscrollIndicator] will start showing an\noverscroll indication.\n\nTo prevent the indicator from showing the indication, call [disallowGlow] on\nthe notification.\n\nSee also:\n\n * [GlowingOverscrollIndicator], which generates this type of notification.", "detail": "", "kind": 7, "label": "OverscrollIndicatorNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget with a preferred size.\n\nThis widget does not impose any constraints on its child, and it doesn't\naffect the child's layout in any way. It just advertises a preferred size\nwhich can be used by the parent.\n\nSee also:\n\n * [AppBar.bottom] and [Scaffold.appBar], which require preferred size widgets.\n * [PreferredSizeWidget], the interface which this widget implements to expose\n its preferred size.\n * [AppBar] and [TabBar], which implement PreferredSizeWidget.", "detail": "", "kind": 7, "label": "PreferredSize" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [InheritedWidget] that's intended to be used as the base class for\nmodels whose dependents may only depend on one part or \"aspect\" of the\noverall model.\n\nAn inherited widget's dependents are unconditionally rebuilt when the\ninherited widget changes per [InheritedWidget.updateShouldNotify].\nThis widget is similar except that dependents aren't rebuilt\nunconditionally.\n\nWidgets that depend on an [InheritedModel] qualify their dependence\nwith a value that indicates what \"aspect\" of the model they depend\non. When the model is rebuilt, dependents will also be rebuilt, but\nonly if there was a change in the model that corresponds to the aspect\nthey provided.\n\nThe type parameter `T` is the type of the model aspect objects.\n\n\nWidgets create a dependency on an [InheritedModel] with a static method:\n[InheritedModel.inheritFrom]. This method's `context` parameter\ndefines the subtree that will be rebuilt when the model changes.\nTypically the `inheritFrom` method is called from a model-specific\nstatic `of` method. For example:\n\n```dart\nclass MyModel extends InheritedModel<String> {\n // ...\n static MyModel of(BuildContext context, String aspect) {\n return InheritedModel.inheritFrom<MyModel>(context, aspect: aspect);\n }\n}\n```\n\nCalling `MyModel.of(context, 'foo')` means that `context` should only\nbe rebuilt when the `foo` aspect of `MyModel` changes. If the aspect\nis null, then the model supports all aspects.\n\nWhen the inherited model is rebuilt the [updateShouldNotify] and\n[updateShouldNotifyDependent] methods are used to decide what\nshould be rebuilt. If [updateShouldNotify] returns true, then the\ninherited model's [updateShouldNotifyDependent] method is tested for\neach dependent and the set of aspect objects it depends on.\nThe [updateShouldNotifyDependent] method must compare the set of aspect\ndependencies with the changes in the model itself.\n\nFor example:\n\n```dart\nclass ABModel extends InheritedModel<String> {\n ABModel({ this.a, this.b, Widget child }) : super(child: child);\n\n final int a;\n final int b;\n\n @override\n bool updateShouldNotify(ABModel old) {\n return a != old.a || b != old.b;\n }\n\n @override\n bool updateShouldNotifyDependent(ABModel old, Set<String> aspects) {\n return (a != old.a && aspects.contains('a'))\n || (b != old.b && aspects.contains('b'))\n }\n\n // ...\n}\n```\n\nIn the previous example the dependencies checked by\n[updateShouldNotifyDependent] are just the aspect strings passed to\n`inheritFromWidgetOfExactType`. They're represented as a [Set] because\none Widget can depend on more than one aspect of the model.\nIf a widget depends on the model but doesn't specify an aspect,\nthen changes in the model will cause the widget to be rebuilt\nunconditionally.\n\nSee also:\n\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.", "detail": "", "kind": 7, "label": "InheritedModel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollbarPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomPainter] for painting scrollbars.\n\nUnlike [CustomPainter]s that subclasses [CustomPainter] and only repaint\nwhen [shouldRepaint] returns true (which requires this [CustomPainter] to\nbe rebuilt), this painter has the added optimization of repainting and not\nrebuilding when:\n\n * the scroll position changes; and\n * when the scrollbar fades away.\n\nCalling [update] with the new [ScrollMetrics] will repaint the new scrollbar\nposition.\n\nUpdating the value on the provided [fadeoutOpacityAnimation] will repaint\nwith the new opacity.\n\nYou must call [dispose] on this [ScrollbarPainter] when it's no longer used.\n\nSee also:\n\n * [Scrollbar] for a widget showing a scrollbar around a [Scrollable] in the\n Material Design style.\n * [CupertinoScrollbar] for a widget showing a scrollbar around a\n [Scrollable] in the iOS style.", "detail": "", "kind": 7, "label": "ScrollbarPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that displays widgets in the [Navigator]'s [Overlay].", "detail": "", "kind": 7, "label": "OverlayRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListItemBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedList].", "detail": "(BuildContext context, int index, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionControls", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for building the selection UI, to be provided by the\nimplementor of the toolbar widget.\n\nOverride text operations such as [handleCut] if needed.", "detail": "", "kind": 7, "label": "TextSelectionControls" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the opacity of a widget.\n\nFor a widget that automatically animates between the sizes of two children,\nfading between them, see [AnimatedCrossFade].\n\n\nHere's an illustration of the [FadeTransition] widget, with it's [opacity]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:", "detail": "", "kind": 7, "label": "FadeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that establishes a page storage bucket for this widget subtree.", "detail": "", "kind": 7, "label": "PageStorage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPadding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Padding] which automatically transitions the\nindentation over a given duration whenever the given inset changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.", "detail": "", "kind": 7, "label": "AnimatedPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for localized resource values for the lowest levels of the Flutter\nframework.\n\nIn particular, this maps locales to a specific [Directionality] using the\n[textDirection] property.\n\nSee also:\n\n * [DefaultWidgetsLocalizations], which implements this interface and\n supports a variety of locales.", "detail": "", "kind": 7, "label": "WidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Orientation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether in portrait or landscape.", "detail": "", "kind": 13, "label": "Orientation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that listens for [Notification]s bubbling up the tree.\n\nNotifications will trigger the [onNotification] callback only if their\n[runtimeType] is a subtype of `T`.\n\nTo dispatch notifications, use the [Notification.dispatch] method.", "detail": "", "kind": 7, "label": "NotificationListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics used by a [PageView].\n\nThese physics cause the page view to snap to page boundaries.\n\nSee also:\n\n * [ScrollPhysics], the base class which defines the API for scrolling\n physics.\n * [PageView.physics], which can override the physics used by a page view.", "detail": "", "kind": 7, "label": "PageScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers.\n\n`T` is the type of gesture recognizer this class manages.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal group of cells in a [Table].\n\nEvery row in a table must have the same number of children.\n\nThe alignment of individual cells in a row can be controlled using a\n[TableCell].", "detail": "", "kind": 7, "label": "TableRow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollUpdateNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has changed its scroll position.\n\nSee also:\n\n * [OverscrollNotification], which indicates that a [Scrollable] widget\n has not changed its scroll position because the change would have caused\n its scroll position to go outside its scroll bounds.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollUpdateNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [ScrollPosition] to a scroll view with fixed item sizes.\n\nThe metrics are available on [ScrollNotification]s generated from a scroll\nviews such as [ListWheelScrollView]s with a [FixedExtentScrollController] and\nexposes the current [itemIndex] and the scroll view's [itemExtent].\n\n`FixedExtent` refers to the fact that the scrollable items have the same size.\nThis is distinct from `Fixed` in the parent class name's [FixedScrollMetric]\nwhich refers to its immutability.", "detail": "", "kind": 7, "label": "FixedExtentMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that renders an exception's message.\n\nThis widget is used when a build method fails, to help with determining\nwhere the problem lies. Exceptions are also logged to the console, which you\ncan read using `flutter logs`. The console will also include additional\ninformation such as the stack trace for the exception.", "detail": "", "kind": 7, "label": "ErrorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFade", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that cross-fades between two given children and animates itself\nbetween their sizes.\n\nThe animation is controlled through the [crossFadeState] parameter.\n[firstCurve] and [secondCurve] represent the opacity curves of the two\nchildren. The [firstCurve] is inverted, i.e. it fades out when providing a\ngrowing curve like [Curves.linear]. The [sizeCurve] is the curve used to\nanimate between the size of the fading-out child and the size of the\nfading-in child.\n\nThis widget is intended to be used to fade a pair of widgets with the same\nwidth. In the case where the two children have different heights, the\nanimation crops overflowing children during the animation by aligning their\ntop edge, which means that the bottom will be clipped.\n\nThe animation is automatically triggered when an existing\n[AnimatedCrossFade] is rebuilt with a different value for the\n[crossFadeState] property.\n\n\nThis code fades between two representations of the Flutter logo. It depends\non a boolean field `_first`; when `_first` is true, the first logo is shown,\notherwise the second logo is shown. When the field changes state, the\n[AnimatedCrossFade] widget cross-fades between the two forms of the logo\nover three seconds.\n\n```dart\nAnimatedCrossFade(\n duration: const Duration(seconds: 3),\n firstChild: const FlutterLogo(style: FlutterLogoStyle.horizontal, size: 100.0),\n secondChild: const FlutterLogo(style: FlutterLogoStyle.stacked, size: 100.0),\n crossFadeState: _first ? CrossFadeState.showFirst : CrossFadeState.showSecond,\n)\n```\n\nSee also:\n\n * [AnimatedSize], the lower-level widget which [AnimatedCrossFade] uses to\n automatically change size.\n * [AnimatedSwitcher], which switches out a child for a new one with a\n customizable transition.", "detail": "", "kind": 7, "label": "AnimatedCrossFade" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flexible", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Row], [Column], or [Flex] flexes.\n\nUsing a [Flexible] widget gives a child of a [Row], [Column], or [Flex]\nthe flexibility to expand to fill the available space in the main axis\n(e.g., horizontally for a [Row] or vertically for a [Column]), but, unlike\n[Expanded], [Flexible] does not require the child to fill the available\nspace.\n\nA [Flexible] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Flexible] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\nSee also:\n\n * [Expanded], which forces the child to expand to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flexible" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrivenScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on animation parameters.\n\nFor example, a [DrivenScrollActivity] is used to implement\n[ScrollController.animateTo].\n\nSee also:\n\n * [BallisticScrollActivity], which animates a scroll view based on a\n physics [Simulation].", "detail": "", "kind": 7, "label": "DrivenScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Spacer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Spacer creates an adjustable, empty spacer that can be used to tune the\nspacing between widgets in a [Flex] container, like [Row] or [Column].\n\nThe [Spacer] widget will take up any available space, so setting the\n[Flex.mainAxisAlignment] on a flex container that contains a [Spacer] to\n[MainAxisAlignment.spaceAround], [MainAxisAlignment.spaceBetween], or\n[MainAxisAlignment.spaceEvenly] will not have any visible effect: the\n[Spacer] has taken up all of the additional space, therefore there is none\nleft to redistribute.\n\n\n```dart\nRow(\n children: <Widget>[\n Text('Begin'),\n Spacer(), // Defaults to a flex of one.\n Text('Middle'),\n // Gives twice the space between Middle and End than Begin and Middle.\n Spacer(flex: 2),\n Text('End'),\n ],\n)\n```\n\nSee also:\n\n * [Row] and [Column], which are the most common containers to use a Spacer\n in.\n * [SizedBox], to create a box with a specific size and an optional child.", "detail": "", "kind": 7, "label": "Spacer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollStartNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has started scrolling.\n\nSee also:\n\n * [ScrollEndNotification], which indicates that scrolling has stopped.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollStartNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [Viewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "NestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Row", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a horizontal array.\n\nTo cause a child to expand to fill the available horizontal space, wrap the\nchild in an [Expanded] widget.\n\nThe [Row] widget does not scroll (and in general it is considered an error\nto have more children in a [Row] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a vertical variant, see [Column].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example divides the available space into three (horizontally), and\nplaces text centered in the first two cells and the Flutter logo centered in\nthe third:\n\n```dart\nRow(\n children: <Widget>[\n Expanded(\n child: Text('Deliver features faster', textAlign: TextAlign.center),\n ),\n Expanded(\n child: Text('Craft beautiful UIs', textAlign: TextAlign.center),\n ),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\n## Troubleshooting\n\n### Why does my row have a yellow and black warning stripe?\n\nIf the non-flexible contents of the row (those that are not wrapped in\n[Expanded] or [Flexible] widgets) are together wider than the row itself,\nthen the row is said to have overflowed. When a row overflows, the row does\nnot have any remaining space to share between its [Expanded] and [Flexible]\nchildren. The row reports this by drawing a yellow and black striped\nwarning box on the edge that is overflowing. If there is room on the outside\nof the row, the amount of overflow is printed in red lettering.\n\n\n#### Story time\n\nSuppose, for instance, that you had this code:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nThe row first asks its first child, the [FlutterLogo], to lay out, at\nwhatever size the logo would like. The logo is friendly and happily decides\nto be 24 pixels to a side. This leaves lots of room for the next child. The\nrow then asks that next child, the text, to lay out, at whatever size it\nthinks is best.\n\nAt this point, the text, not knowing how wide is too wide, says \"Ok, I will\nbe thiiiiiiiiiiiiiiiiiiiis wide.\", and goes well beyond the space that the\nrow has available, not wrapping. The row responds, \"That's not fair, now I\nhave no more room available for my other children!\", and gets angry and\nsprouts a yellow and black strip.\n\nThe fix is to wrap the second child in an [Expanded] widget, which tells the\nrow that the child should be given the remaining room:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Expanded(\n child: Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n ),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nNow, the row first asks the logo to lay out, and then asks the _icon_ to lay\nout. The [Icon], like the logo, is happy to take on a reasonable size (also\n24 pixels, not coincidentally, since both [FlutterLogo] and [Icon] honor the\nambient [IconTheme]). This leaves some room left over, and now the row tells\nthe text exactly how wide to be: the exact width of the remaining space. The\ntext, now happy to comply to a reasonable request, wraps the text within\nthat width, and you end up with a paragraph split over several lines.\n\n## Layout algorithm\n\n_This section describes how a [Row] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Row] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded horizontal constraints and the incoming\n vertical constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight vertical constraints that\n match the incoming max height.\n2. Divide the remaining horizontal space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of horizontal space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same vertical constraints\n as in step 1, but instead of using unbounded horizontal constraints, use\n horizontal constraints based on the amount of space allocated in step 2.\n Children with [Flexible.fit] properties that are [FlexFit.tight] are\n given tight constraints (i.e., forced to fill the allocated space), and\n children with [Flexible.fit] properties that are [FlexFit.loose] are\n given loose constraints (i.e., not forced to fill the allocated space).\n4. The height of the [Row] is the maximum height of the children (which will\n always satisfy the incoming vertical constraints).\n5. The width of the [Row] is determined by the [mainAxisSize] property. If\n the [mainAxisSize] property is [MainAxisSize.max], then the width of the\n [Row] is the max width of the incoming constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the width of the [Row] is the sum\n of widths of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any horizontal\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Column], for a vertical equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may by sized smaller (leaving some remaining room unused).\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Row" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A snapping physics that always lands directly on items instead of anywhere\nwithin the scroll extent.\n\nBehaves similarly to a slot machine wheel except the ballistics simulation\nnever overshoots and rolls back within a single item if it's to settle on\nthat item.\n\nMust be used with a scrollable that uses a [FixedExtentScrollController].\n\nDefers back to the parent beyond the scroll extents.", "detail": "", "kind": 7, "label": "FixedExtentScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveHandle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Listenable] which can be manually triggered.\n\nUsed with [KeepAliveNotification] objects as their\n[KeepAliveNotification.handle].\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses a\n[KeepAliveHandle] internally.", "detail": "", "kind": 7, "label": "KeepAliveHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SafeArea", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by sufficient padding to avoid intrusions by\nthe operating system.\n\nFor example, this will indent the child by enough to avoid the status bar at\nthe top of the screen.\n\nIt will also indent the child by the amount necessary to avoid The Notch on\nthe iPhone X, or other similar creative physical features of the display.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\n\nSee also:\n\n * [SliverSafeArea], for insetting slivers to avoid operating system\n intrusions.\n * [Padding], for insetting widgets in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedOpacity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Opacity] which automatically transitions the child's\nopacity over a given duration whenever the given opacity changes.\n\nAnimating an opacity is relatively expensive because it requires painting\nthe child into an intermediate buffer.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\n\n```dart\nclass LogoFade extends StatefulWidget {\n @override\n createState() => LogoFadeState();\n}\n\nclass LogoFadeState extends State<LogoFade> {\n double opacityLevel = 1.0;\n\n void _changeOpacity() {\n setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedOpacity(\n opacity: opacityLevel,\n duration: Duration(seconds: 3),\n child: FlutterLogo(),\n ),\n RaisedButton(\n child: Text('Fade Logo'),\n onPressed: _changeOpacity,\n ),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [FadeTransition], an explicitly animated version of this widget, where\n an [Animation] is provided by the caller instead of being built in.", "detail": "", "kind": 7, "label": "AnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboardListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls a callback whenever the user presses or releases a key\non a keyboard.\n\nA [RawKeyboardListener] is useful for listening to raw key events and\nhardware buttons that are represented as keys. Typically used by games and\nother apps that use keyboards for purposes other than text entry.\n\nFor text entry, consider using a [EditableText], which integrates with\non-screen keyboards and input method editors (IMEs).\n\nSee also:\n\n * [EditableText], which should be used instead of this widget for text\n entry.", "detail": "", "kind": 7, "label": "RawKeyboardListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedDefaultTextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [DefaultTextStyle] which automatically transitions the\ndefault text style (the text style to apply to descendant [Text] widgets\nwithout explicit style) over a given duration whenever the given style\nchanges.\n\nThe [textAlign], [softWrap], [textOverflow], and [maxLines] properties are\nnot animated and take effect immediately when changed.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].", "detail": "", "kind": 7, "label": "AnimatedDefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that composes other [Element]s.\n\nRather than creating a [RenderObject] directly, a [ComponentElement] creates\n[RenderObject]s indirectly by creating other [Element]s.\n\nContrast with [RenderObjectElement].", "detail": "", "kind": 7, "label": "ComponentElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleListResolutionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeListResolutionCallback].\n\nA [LocaleListResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the list of\nlocales for the device.\n\nThe [locales] list is the device's preferred locales when the app started, or the\ndevice's preferred locales the user selected after the app was started. This list\nis in order of preference. If this list is null or empty, then Flutter has not yet\nreceived the locale information from the platform. The [supportedLocales] parameter\nis just the value of [WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleResolutionCallback], which takes only one default locale (instead of a list)\n and is attempted only after this callback fails or is null. [LocaleListResolutionCallback]\n is recommended over [LocaleResolutionCallback].", "detail": "(List<Locale> locales, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleListResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place in an [Overlay] that can contain a widget.\n\nOverlay entries are inserted into an [Overlay] using the\n[OverlayState.insert] or [OverlayState.insertAll] functions. To find the\nclosest enclosing overlay for a given [BuildContext], use the [Overlay.of]\nfunction.\n\nAn overlay entry can be in at most one overlay at a time. To remove an entry\nfrom its overlay, call the [remove] function on the overlay entry.\n\nBecause an [Overlay] uses a [Stack] layout, overlay entries can use\n[Positioned] and [AnimatedPositioned] to position themselves within the\noverlay.\n\nFor example, [Draggable] uses an [OverlayEntry] to show the drag avatar that\nfollows the user's finger across the screen after the drag begins. Using the\noverlay to display the drag avatar lets the avatar float over the other\nwidgets in the app. As the user's finger moves, draggable calls\n[markNeedsBuild] on the overlay entry to cause it to rebuild. It its build,\nthe entry includes a [Positioned] with its top and left property set to\nposition the drag avatar near the user's finger. When the drag is over,\n[Draggable] removes the entry from the overlay to remove the drag avatar\nfrom view.\n\nBy default, if there is an entirely [opaque] entry over this one, then this\none will not be included in the widget tree (in particular, stateful widgets\nwithin the overlay entry will not be instantiated). To ensure that your\noverlay entry is still built even if it is not visible, set [maintainState]\nto true. This is more expensive, so should be done with care. In particular,\nif widgets in an overlay entry with [maintainState] set to true repeatedly\ncall [State.setState], the user's battery will be drained unnecessarily.\n\nSee also:\n\n * [Overlay]\n * [OverlayState]\n * [WidgetsApp]\n * [MaterialApp]", "detail": "", "kind": 7, "label": "OverlayEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HoldScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing but can be released to resume\nnormal idle behavior.\n\nThis is used while the user is touching the [Scrollable] but before the\ntouch has become a [Drag].\n\nFor the purposes of [ScrollNotification]s, this activity does not constitute\nscrolling, and does not prevent the user from interacting with the contents\nof the [Scrollable] (unlike when a drag has begun or there is a scroll\nanimation underway).", "detail": "", "kind": 7, "label": "HoldScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a [Scrollable]'s contents, useful for modeling the state\nof its viewport.\n\nThis class defines a current position, [pixels], and a range of values\nconsidered \"in bounds\" for that position. The range has a minimum value at\n[minScrollExtent] and a maximum value at [maxScrollExtent] (inclusive). The\nviewport scrolls in the direction and axis described by [axisDirection]\nand [axis].\n\nThe [outOfRange] getter will return true if [pixels] is outside this defined\nrange. The [atEdge] getter will return true if the [pixels] position equals\neither the [minScrollExtent] or the [maxScrollExtent].\n\nThe dimensions of the viewport in the given [axis] are described by\n[viewportDimension].\n\nThe above values are also exposed in terms of [extentBefore],\n[extentInside], and [extentAfter], which may be more useful for use cases\nsuch as scroll bars; for example, see [Scrollbar].\n\nSee also:\n\n * [FixedScrollMetrics], which is an immutable object that implements this\n interface.", "detail": "", "kind": 7, "label": "ScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAliveClientMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin with convenience methods for clients of [AutomaticKeepAlive]. Used\nwith [State] subclasses.\n\nSubclasses must implement [wantKeepAlive], and their [build] methods must\ncall `super.build` (the return value will always return null, and should be\nignored).\n\nThen, whenever [wantKeepAlive]'s value changes (or might change), the\nsubclass should call [updateKeepAlive].\n\nThe type argument `T` is the type of the [StatefulWidget] subclass of the\n[State] into which this class is being mixed.\n\nSee also:\n\n * [AutomaticKeepAlive], which listens to messages from this mixin.\n * [KeepAliveNotification], the notifications sent by this mixin.", "detail": "", "kind": 7, "label": "AutomaticKeepAliveClientMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offstage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that lays the child out as if it was in the tree, but without\npainting anything, without making the child available for hit testing, and\nwithout taking any room in the parent.\n\nAnimations continue to run in offstage children, and therefore use battery\nand CPU time, regardless of whether the animations end up being visible.\n\n[Offstage] can be used to measure the dimensions of a widget without\nbringing it on screen (yet). To hide a widget from view while it is not\nneeded, prefer removing the widget from the tree entirely rather than\nkeeping it alive in an [Offstage] subtree.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly).\n * [TickerMode], which can be used to disable animations in a subtree.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Offstage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state of connection to an asynchronous computation.\n\nSee also:\n\n * [AsyncSnapshot], which augments a connection state with information\n received from the asynchronous computation.", "detail": "", "kind": 13, "label": "ConnectionState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ParentDataWidget] as its configuration.", "detail": "", "kind": 7, "label": "ParentDataElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenableBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget whose content stays synced with a [ValueListenable].\n\nGiven a [ValueListenable<T>] and a [builder] which builds widgets from\nconcrete values of `T`, this class will automatically register itself as a\nlistener of the [ValueListenable] and call the [builder] with updated values\nwhen the value changes.\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nvalue of the [ValueListenable], it's more efficient to build that subtree\nonce instead of rebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\n[ValueListenableBuilder] will pass it back to your [builder] function so\nthat you can incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis sample shows how you could use a [ValueListenableBuilder] instead of\nsetting state on the whole [Scaffold] in the default `flutter create` app.\n\n```dart\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State<MyHomePage> {\n final ValueNotifier<int> _counter = ValueNotifier<int>(0);\n final Widget goodJob = const Text('Good job!');\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title)\n ),\n body: Center(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pushed the button this many times:'),\n ValueListenableBuilder(\n builder: (BuildContext context, int value, Widget child) {\n // This builder will only get called when the _counter\n // is updated.\n return Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: <Widget>[\n Text('$value'),\n child,\n ],\n );\n },\n valueListenable: _counter,\n // The child parameter is most helpful if the child is\n // expensive to build and does not depend on the value from\n // the notifier.\n child: goodJob,\n )\n ],\n ),\n ),\n floatingActionButton: FloatingActionButton(\n child: Icon(Icons.plus_one),\n onPressed: () => _counter.value += 1,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedBuilder], which also triggers rebuilds from a [Listenable]\n without passing back a specific value from a [ValueListenable].\n * [NotificationListener], which lets you rebuild based on [Notification]\n coming from its descendant widgets rather than a [ValueListenable] that\n you have a direct reference to.\n * [StreamBuilder], where a builder can depend on a [Stream] rather than\n a [ValueListenable] for more advanced use cases.", "detail": "", "kind": 7, "label": "ValueListenableBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route with entrance and exit transitions.", "detail": "", "kind": 7, "label": "TransitionRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePageBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's primary contents.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildPage] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) → Widget", "kind": 7, "label": "RoutePageBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of a method that provides a [BuildContext] and\n[ScrollController] for building a widget that may overflow the draggable\n[Axis] of the containing [DraggableScrollSheet].\n\nUsers should apply the [scrollController] to a [ScrollView] subclass, such\nas a [SingleChildScrollView], [ListView] or [GridView], to have the whole\nsheet be draggable.", "detail": "(BuildContext context, ScrollController scrollController) → Widget", "kind": 7, "label": "ScrollableWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that builds a widget given an [Orientation].\n\nUsed by [OrientationBuilder.builder].", "detail": "(BuildContext context, Orientation orientation) → Widget", "kind": 7, "label": "OrientationWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A viewport showing a subset of children on a wheel.\n\nTypically used with [ListWheelScrollView], this viewport is similar to\n[Viewport] in that it shows a subset of children in a scrollable based\non the scrolling offset and the children's dimensions. But uses\n[RenderListWheelViewport] to display the children on a wheel.\n\nSee also:\n\n * [ListWheelScrollView], widget that combines this viewport with a scrollable.\n * [RenderListWheelViewport], the render object that renders the children\n on a wheel.", "detail": "", "kind": 7, "label": "ListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget, e.g. [StatelessWidget.build]\nor [State.build].\n\nUsed by [Builder.builder], [OverlayEntry.builder], etc.\n\nSee also:\n\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [TransitionBuilder], which is similar but also takes a child.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context) → Widget", "kind": 7, "label": "WidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the draggable is dropped.\n\nThe velocity and offset at which the pointer was moving when the draggable\nwas dropped is available in the [DraggableDetails]. Also included in the\n`details` is whether the draggable's [DragTarget] accepted it.\n\nUsed by [Draggable.onDragEnd]", "detail": "(DraggableDetails details) → void", "kind": 7, "label": "DragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the constructor that is called when an error occurs while\nbuilding a widget.\n\nThe argument provides information regarding the cause of the error.\n\nSee also:\n\n * [ErrorWidget.builder], which can be set to override the default\n [ErrorWidget] builder.\n * [FlutterError.reportError], which is typically called with the same\n [FlutterErrorDetails] object immediately prior to [ErrorWidget.builder]\n being called.", "detail": "(FlutterErrorDetails details) → Widget", "kind": 7, "label": "ErrorWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewHeaderSliversBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [NestedScrollView] for building its header.\n\nThe `innerBoxIsScrolled` argument is typically used to control the\n[SliverAppBar.forceElevated] property to ensure that the app bar shows a\nshadow, since it would otherwise not necessarily be aware that it had\ncontent ostensibly below it.", "detail": "(BuildContext context, bool innerBoxIsScrolled) → List<Widget>", "kind": 7, "label": "NestedScrollViewHeaderSliversBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes how [Scrollable] widgets should behave.\n\nUsed by [ScrollConfiguration] to configure the [Scrollable] widgets in a\nsubtree.", "detail": "", "kind": 7, "label": "ScrollBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AspectRatio", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that attempts to size the child to a specific aspect ratio.\n\nThe widget first tries the largest width permitted by the layout\nconstraints. The height of the widget is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The widget will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the widget would\ncontinue iterating through the constraints. If the widget does not\nfind a feasible size after consulting each constraint, the widget\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "AspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetAccept", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for causing a [DragTarget] to accept the given data.\n\nUsed by [DragTarget.onAccept].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that overlays a widget over the current route.", "detail": "", "kind": 7, "label": "PopupRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has a child widget provided to it, instead of building a new\nwidget.\n\nUseful as a base class for other widgets, such as [InheritedWidget] and\n[ParentDataWidget].\n\nSee also:\n\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [ParentDataWidget], for widgets that populate the\n [RenderObject.parentData] slot of their child's [RenderObject] to\n configure the parent widget's layout.\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "ProxyWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleTickerProviderStateMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides a single [Ticker] that is configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create the [AnimationController] in a [State] that only uses a single\n[AnimationController], mix in this class, then pass `vsync: this`\nto the animation controller constructor.\n\nThis mixin only supports vending a single ticker. If you might have multiple\n[AnimationController] objects over the lifetime of the [State], use a full\n[TickerProviderStateMixin] instead.", "detail": "", "kind": 7, "label": "SingleTickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NeverScrollableScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that does not allow the user to scroll.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "NeverScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectionChangedCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the selection change callback used by\n[WidgetInspectorService.selectionChangedCallback].", "detail": "() → void", "kind": 7, "label": "InspectorSelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcher", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that by default does a [FadeTransition] between a new widget and\nthe widget previously set on the [AnimatedSwitcher] as a child.\n\nIf they are swapped fast enough (i.e. before [duration] elapses), more than\none previous child can exist and be transitioning out while the newest one\nis transitioning in.\n\nIf the \"new\" child is the same widget type and key as the \"old\" child, but\nwith different parameters, then [AnimatedSwitcher] will *not* do a\ntransition between them, since as far as the framework is concerned, they\nare the same widget and the existing widget can be updated with the new\nparameters. To force the transition to occur, set a [Key] on each child\nwidget that you wish to be considered unique (typically a [ValueKey] on the\nwidget data that distinguishes this child from the others).\n\nThe same key can be used for a new child as was used for an already-outgoing\nchild; the two will not be considered related. (For example, if a progress\nindicator with key A is first shown, then an image with key B, then another\nprogress indicator with key A again, all in rapid succession, then the old\nprogress indicator and the image will be fading out while a new progress\nindicator is fading in.)\n\n\n```dart\nclass ClickCounter extends StatefulWidget {\n const ClickCounter({Key key}) : super(key: key);\n\n @override\n _ClickCounterState createState() => _ClickCounterState();\n}\n\nclass _ClickCounterState extends State<ClickCounter> {\n int _count = 0;\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Material(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n AnimatedSwitcher(\n duration: const Duration(milliseconds: 500),\n transitionBuilder: (Widget child, Animation<double> animation) {\n return ScaleTransition(child: child, scale: animation);\n },\n child: Text(\n '$_count',\n // This key causes the AnimatedSwitcher to interpret this as a \"new\"\n // child each time the count changes, so that it will begin its animation\n // when the count changes.\n key: ValueKey<int>(_count),\n style: Theme.of(context).textTheme.display1,\n ),\n ),\n RaisedButton(\n child: const Text('Increment'),\n onPressed: () {\n setState(() {\n _count += 1;\n });\n },\n ),\n ],\n ),\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedCrossFade], which only fades between two children, but also\n interpolates their sizes, and is reversible.\n * [FadeTransition] which [AnimatedSwitcher] uses to perform the transition.", "detail": "", "kind": 7, "label": "AnimatedSwitcher" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building the widget representing the form field.\n\nUsed by [FormField.builder].", "detail": "(FormFieldState<T> field) → Widget", "kind": 7, "label": "FormFieldBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Builder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that calls a closure to obtain its child widget.\n\nSee also:\n\n * [StatefulBuilder], a platonic widget which also has state.", "detail": "", "kind": 7, "label": "Builder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPrototypeExtentList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places its box children in a linear array and constrains them\nto have the same extent as a prototype item along the main axis.\n\n[SliverPrototypeExtentList] arranges its children in a line along\nthe main axis starting at offset zero and without gaps. Each child is\nconstrained to the same extent as the [prototypeItem] along the main axis\nand the [SliverConstraints.crossAxisExtent] along the cross axis.\n\n[SliverPrototypeExtentList] is more efficient than [SliverList] because\n[SliverPrototypeExtentList] does not need to lay out its children to obtain\ntheir extent along the main axis. It's a little more flexible than\n[SliverFixedExtentList] because there's no need to determine the appropriate\nitem extent in pixels.\n\nSee also:\n\n * [SliverFixedExtentList], whose itemExtent is a pixel value.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverPrototypeExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Center", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that centers its child within itself.\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\nSee also:\n\n * [Align], which lets you arbitrarily position a child within itself,\n rather than just centering it.\n * [Row], a widget that displays its children in a horizontal array.\n * [Column], a widget that displays its children in a vertical array.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Center" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Text", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A run of text with a single style.\n\nThe [Text] widget displays a string of text with single style. The string\nmight break across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nThe [style] argument is optional. When omitted, the text will use the style\nfrom the closest enclosing [DefaultTextStyle]. If the given style's\n[TextStyle.inherit] property is true (the default), the given style will\nbe merged with the closest enclosing [DefaultTextStyle]. This merging\nbehavior is useful, for example, to make the text bold while using the\ndefault font family and size.\n\n\n```dart\nText(\n 'Hello, $_name! How are you?',\n textAlign: TextAlign.center,\n overflow: TextOverflow.ellipsis,\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\nUsing the [Text.rich] constructor, the [Text] widget can\ndisplay a paragraph with differently styled [TextSpan]s. The sample\nthat follows displays \"Hello beautiful world\" with different styles\nfor each word.\n\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'Hello', // default text style\n children: <TextSpan>[\n TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),\n TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),\n ],\n ),\n)\n```\n\n## Interactivity\n\nTo make [Text] react to touch events, wrap it in a [GestureDetector] widget\nwith a [GestureDetector.onTap] handler.\n\nIn a material design application, consider using a [FlatButton] instead, or\nif that isn't appropriate, at least using an [InkWell] instead of\n[GestureDetector].\n\nTo make sections of the text interactive, use [RichText] and specify a\n[TapGestureRecognizer] as the [TextSpan.recognizer] of the relevant part of\nthe text.\n\nSee also:\n\n * [RichText], which gives you more control over the text styles.\n * [DefaultTextStyle], which sets default styles for [Text] widgets.", "detail": "", "kind": 7, "label": "Text" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes and positions children efficiently, according to the\nlogic in a [FlowDelegate].\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow, which happens\nwithout the children being laid out again (contrast this with a [Stack],\nwhich does the sizing and positioning together during layout).\n\nThe most efficient way to trigger a repaint of the flow is to supply an\nanimation to the constructor of the [FlowDelegate]. The flow will listen to\nthis animation and repaint whenever the animation ticks, avoiding both the\nbuild and layout phases of the pipeline.\n\nSee also:\n\n * [Wrap], which provides the layout model that some other frameworks call\n \"flow\", and is otherwise unrelated to [Flow].\n * [FlowDelegate], which controls the visual presentation of the children.\n * [Stack], which arranges children relative to the edges of the container.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that both has state and calls a closure to obtain its child widget.\n\nSee also:\n\n * [Builder], the platonic stateless widget.", "detail": "", "kind": 7, "label": "StatefulBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A bridge from a [RenderObject] to an [Element] tree.\n\nThe given container is the [RenderObject] that the [Element] tree should be\ninserted into. It must be a [RenderObject] that implements the\n[RenderObjectWithChildMixin] protocol. The type argument `T` is the kind of\n[RenderObject] that the container expects as its child.\n\nUsed by [runApp] to bootstrap applications.", "detail": "", "kind": 7, "label": "RenderObjectToWidgetAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivityDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A backend for a [ScrollActivity].\n\nUsed by subclasses of [ScrollActivity] to manipulate the scroll view that\nthey are acting upon.\n\nSee also:\n\n * [ScrollActivity], which uses this class as its delegate.\n * [ScrollPositionWithSingleContext], the main implementation of this interface.", "detail": "", "kind": 7, "label": "ScrollActivityDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rectangle.\n\nBy default, [ClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].\n\n[ClipRect] is commonly used with these widgets, which commonly paint outside\ntheir bounds:\n\n * [CustomPaint]\n * [CustomSingleChildLayout]\n * [CustomMultiChildLayout]\n * [Align] and [Center] (e.g., if [Align.widthFactor] or\n [Align.heightFactor] is less than 1.0).\n * [OverflowBox]\n * [SizedOverflowBox]\n\n\nFor example, by combining a [ClipRect] with an [Align], one can show just\nthe top half of an [Image]:\n\n```dart\nClipRect(\n child: Align(\n alignment: Alignment.topCenter,\n heightFactor: 0.5,\n child: Image.network(userAvatarUrl),\n ),\n)\n```\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutId", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metadata for identifying children in a [CustomMultiChildLayout].\n\nThe [MultiChildLayoutDelegate.hasChild],\n[MultiChildLayoutDelegate.layoutChild], and\n[MultiChildLayoutDelegate.positionChild] methods use these identifiers.", "detail": "", "kind": 7, "label": "LayoutId" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Placeholder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a box that represents where other widgets will one day\nbe added.\n\nThis widget is useful during development to indicate that the interface is\nnot yet complete.\n\nBy default, the placeholder is sized to fit its container. If the\nplaceholder is in an unbounded space, it will size itself according to the\ngiven [fallbackWidth] and [fallbackHeight].", "detail": "", "kind": 7, "label": "Placeholder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RebuildDirtyWidgetCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugOnRebuildDirtyWidget] implementations.", "detail": "(Element e, bool builtOnce) → void", "kind": 7, "label": "RebuildDirtyWidgetCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConfirmDismissCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to give the application an opportunity to\nconfirm or veto a dismiss gesture.\n\nUsed by [Dismissible.confirmDismiss].", "detail": "(DismissDirection direction) → Future<bool>", "kind": 7, "label": "ConfirmDismissCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a multiple box children that each fill the viewport.\n\n[SliverFillViewport] places its children in a linear array along the main\naxis. Each child is sized to fill the viewport, both in the main and cross\naxis.\n\nSee also:\n\n * [SliverFixedExtentList], which has a configurable\n [SliverFixedExtentList.itemExtent].\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LimitedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box that limits its size only when it's unconstrained.\n\nIf this widget's maximum width is unconstrained then its child's width is\nlimited to [maxWidth]. Similarly, if this widget's maximum height is\nunconstrained then its child's height is limited to [maxHeight].\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).\n\nSee also:\n\n * [ConstrainedBox], which applies its constraints in all cases, not just\n when the incoming constraints are unbounded.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "LimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncSnapshot", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable representation of the most recent interaction with an asynchronous\ncomputation.\n\nSee also:\n\n * [StreamBuilder], which builds itself based on a snapshot from interacting\n with a [Stream].\n * [FutureBuilder], which builds itself based on a snapshot from interacting\n with a [Future].", "detail": "", "kind": 7, "label": "AsyncSnapshot" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultAssetBundle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the default asset bundle for its descendants.\n\nFor example, used by [Image] to determine which bundle to use for\n[AssetImage]s if no bundle is specified explicitly.\n\n\nThis can be used in tests to override what the current asset bundle is, thus\nallowing specific resources to be injected into the widget under test.\n\nFor example, a test could create a test asset bundle like this:\n\n```dart\nclass TestAssetBundle extends CachingAssetBundle {\n @override\n Future<ByteData> load(String key) async {\n if (key == 'resources/test')\n return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);\n return null;\n }\n}\n```\n\n...then wrap the widget under test with a [DefaultAssetBundle] using this\nbundle implementation:\n\n```dart\nawait tester.pumpWidget(\n MaterialApp(\n home: DefaultAssetBundle(\n bundle: TestAssetBundle(),\n child: TestWidget(),\n ),\n ),\n);\n```\n\nAssuming that `TestWidget` uses [DefaultAssetBundle.of] to obtain its\n[AssetBundle], it will now see the [TestAssetBundle]'s \"Hello World!\" data\nwhen requesting the \"resources/test\" asset.\n\nSee also:\n\n * [AssetBundle], the interface for asset bundles.\n * [rootBundle], the default default asset bundle.", "detail": "", "kind": 7, "label": "DefaultAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Banner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a diagonal message above the corner of another widget.\n\nUseful for showing the execution mode of an app (e.g., that asserts are\nenabled.)\n\nSee also:\n\n * [CheckedModeBanner], which the [WidgetsApp] widget includes by default in\n debug mode, to show a banner that says \"DEBUG\".", "detail": "", "kind": 7, "label": "Banner" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay show two time series. The first shows how much time was required\non this thread to produce each frame. The second shows how much time was\nrequired on the GPU thread to produce each frame. Ideally, both these values\nwould be less than the total frame budget for the hardware on which the app\nis running. For example, if the hardware has a screen that updates at 60 Hz,\neach thread should ideally spend less than 16ms producing each frame. This\nideal condition is indicated by a green vertical line for each thread.\nOtherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "PerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildListDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using an explicit list.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[SliverChildBuilderDelegate] or by subclassing [SliverChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.\n\nThe widgets in the given [children] list are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\nSee [SliverChildBuilderDelegate] for sample code using\n`semanticIndexOffset` and `semanticIndexCallback`.\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.", "detail": "", "kind": 7, "label": "SliverChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling view inside of which can be nested other scrolling views, with\ntheir scroll positions being intrinsically linked.\n\nThe most common use case for this widget is a scrollable view with a\nflexible [SliverAppBar] containing a [TabBar] in the header (build by\n[headerSliverBuilder], and with a [TabBarView] in the [body], such that the\nscrollable view's contents vary based on which tab is visible.\n\n## Motivation\n\nIn a normal [ScrollView], there is one set of slivers (the components of the\nscrolling view). If one of those slivers hosted a [TabBarView] which scrolls\nin the opposite direction (e.g. allowing the user to swipe horizontally\nbetween the pages represented by the tabs, while the list scrolls\nvertically), then any list inside that [TabBarView] would not interact with\nthe outer [ScrollView]. For example, flinging the inner list to scroll to\nthe top would not cause a collapsed [SliverAppBar] in the outer [ScrollView]\nto expand.\n\n[NestedScrollView] solves this problem by providing custom\n[ScrollController]s for the outer [ScrollView] and the inner [ScrollView]s\n(those inside the [TabBarView], hooking them together so that they appear,\nto the user, as one coherent scroll view.\n\n\nThis example shows a [NestedScrollView] whose header is the combination of a\n[TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a\n[SliverOverlapAbsorber]/[SliverOverlapInjector] pair to make the inner lists\nalign correctly, and it uses [SafeArea] to avoid any horizontal disturbances\n(e.g. the \"notch\" on iOS when the phone is horizontal). In addition,\n[PageStorageKey]s are used to remember the scroll position of each tab's\nlist.\n\nIn the example below, `_tabs` is a list of strings, one for each tab, giving\nthe tab labels. In a real application, it would be replaced by the actual\ndata model being represented.\n\n```dart\nDefaultTabController(\n length: _tabs.length, // This is the number of tabs.\n child: NestedScrollView(\n headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {\n // These are the slivers that show up in the \"outer\" scroll view.\n return <Widget>[\n SliverOverlapAbsorber(\n // This widget takes the overlapping behavior of the SliverAppBar,\n // and redirects it to the SliverOverlapInjector below. If it is\n // missing, then it is possible for the nested \"inner\" scroll view\n // below to end up under the SliverAppBar even when the inner\n // scroll view thinks it has not been scrolled.\n // This is not necessary if the \"headerSliverBuilder\" only builds\n // widgets that do not overlap the next sliver.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n child: SliverAppBar(\n title: const Text('Books'), // This is the title in the app bar.\n pinned: true,\n expandedHeight: 150.0,\n // The \"forceElevated\" property causes the SliverAppBar to show\n // a shadow. The \"innerBoxIsScrolled\" parameter is true when the\n // inner scroll view is scrolled beyond its \"zero\" point, i.e.\n // when it appears to be scrolled below the SliverAppBar.\n // Without this, there are cases where the shadow would appear\n // or not appear inappropriately, because the SliverAppBar is\n // not actually aware of the precise position of the inner\n // scroll views.\n forceElevated: innerBoxIsScrolled,\n bottom: TabBar(\n // These are the widgets to put in each tab in the tab bar.\n tabs: _tabs.map((String name) => Tab(text: name)).toList(),\n ),\n ),\n ),\n ];\n },\n body: TabBarView(\n // These are the contents of the tab views, below the tabs.\n children: _tabs.map((String name) {\n return SafeArea(\n top: false,\n bottom: false,\n child: Builder(\n // This Builder is needed to provide a BuildContext that is \"inside\"\n // the NestedScrollView, so that sliverOverlapAbsorberHandleFor() can\n // find the NestedScrollView.\n builder: (BuildContext context) {\n return CustomScrollView(\n // The \"controller\" and \"primary\" members should be left\n // unset, so that the NestedScrollView can control this\n // inner scroll view.\n // If the \"controller\" property is set, then this scroll\n // view will not be associated with the NestedScrollView.\n // The PageStorageKey should be unique to this ScrollView;\n // it allows the list to remember its scroll position when\n // the tab view is not on the screen.\n key: PageStorageKey<String>(name),\n slivers: <Widget>[\n SliverOverlapInjector(\n // This is the flip side of the SliverOverlapAbsorber above.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n ),\n SliverPadding(\n padding: const EdgeInsets.all(8.0),\n // In this example, the inner scroll view has\n // fixed-height list items, hence the use of\n // SliverFixedExtentList. However, one could use any\n // sliver widget here, e.g. SliverList or SliverGrid.\n sliver: SliverFixedExtentList(\n // The items in this example are fixed to 48 pixels\n // high. This matches the Material Design spec for\n // ListTile widgets.\n itemExtent: 48.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n // This builder is called for each child.\n // In this example, we just number each list item.\n return ListTile(\n title: Text('Item $index'),\n );\n },\n // The childCount of the SliverChildBuilderDelegate\n // specifies how many children this inner list\n // has. In this example, each tab has a list of\n // exactly 30 items, but this is arbitrary.\n childCount: 30,\n ),\n ),\n ),\n ],\n );\n },\n ),\n );\n }).toList(),\n ),\n ),\n)\n```", "detail": "", "kind": 7, "label": "NestedScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list that works page by page.\n\nEach child of a page view is forced to be the same size as the viewport.\n\nYou can use a [PageController] to control which page is visible in the view.\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nThe [PageController] can also be used to control the\n[PageController.initialPage], which determines which page is shown when the\n[PageView] is first constructed, and the [PageController.viewportFraction],\nwhich determines the size of the pages as a fraction of the viewport size.\n\n\nSee also:\n\n * [PageController], which controls which page is visible in the view.\n * [SingleChildScrollView], when you need to make a single child scrollable.\n * [ListView], for a scrollable list of boxes.\n * [GridView], for a scrollable grid of boxes.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "PageView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBoxTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DecoratedBox] that animates the different properties\nof its [Decoration].\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [DecoratedBox], which also draws a [Decoration] but is not animated.\n * [AnimatedContainer], a more full-featured container that also animates on\n decoration using an internal animation.", "detail": "", "kind": 7, "label": "DecoratedBoxTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetectorState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [RawGestureDetector].", "detail": "", "kind": 7, "label": "RawGestureDetectorState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Decoration]s.\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[Decoration.lerp].\n\nFor [ShapeDecoration]s which know how to [ShapeDecoration.lerpTo] or\n[ShapeDecoration.lerpFrom] each other, this will produce a smooth\ninterpolation between decorations.\n\nSee also:\n\n * [Tween] for a discussion on how to use interpolation objects.\n * [ShapeDecoration], [RoundedRectangleBorder], [CircleBorder], and\n [StadiumBorder] for examples of shape borders that can be smoothly\n interpolated.\n * [BoxBorder] for a border that can only be smoothly interpolated between other\n [BoxBorder]s.", "detail": "", "kind": 7, "label": "DecorationTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [RenderObjectWidget] as its configuration.\n\n[RenderObjectElement] objects have an associated [RenderObject] widget in\nthe render tree, which handles concrete operations like laying out,\npainting, and hit testing.\n\nContrast with [ComponentElement].\n\nFor details on the lifecycle of an element, see the discussion at [Element].\n\n## Writing a RenderObjectElement subclass\n\nThere are three common child models used by most [RenderObject]s:\n\n* Leaf render objects, with no children: The [LeafRenderObjectElement] class\n handles this case.\n\n* A single child: The [SingleChildRenderObjectElement] class handles this\n case.\n\n* A linked list of children: The [MultiChildRenderObjectElement] class\n handles this case.\n\nSometimes, however, a render object's child model is more complicated. Maybe\nit has a two-dimensional array of children. Maybe it constructs children on\ndemand. Maybe it features multiple lists. In such situations, the\ncorresponding [Element] for the [Widget] that configures that [RenderObject]\nwill be a new subclass of [RenderObjectElement].\n\nSuch a subclass is responsible for managing children, specifically the\n[Element] children of this object, and the [RenderObject] children of its\ncorresponding [RenderObject].\n\n### Specializing the getters\n\n[RenderObjectElement] objects spend much of their time acting as\nintermediaries between their [widget] and their [renderObject]. To make this\nmore tractable, most [RenderObjectElement] subclasses override these getters\nso that they return the specific type that the element expects, e.g.:\n\n```dart\nclass FooElement extends RenderObjectElement {\n\n @override\n Foo get widget => super.widget;\n\n @override\n RenderFoo get renderObject => super.renderObject;\n\n // ...\n}\n```\n\n### Slots\n\nEach child [Element] corresponds to a [RenderObject] which should be\nattached to this element's render object as a child.\n\nHowever, the immediate children of the element may not be the ones that\neventually produce the actual [RenderObject] that they correspond to. For\nexample a [StatelessElement] (the element of a [StatelessWidget]) simply\ncorresponds to whatever [RenderObject] its child (the element returned by\nits [StatelessWidget.build] method) corresponds to.\n\nEach child is therefore assigned a _slot_ token. This is an identifier whose\nmeaning is private to this [RenderObjectElement] node. When the descendant\nthat finally produces the [RenderObject] is ready to attach it to this\nnode's render object, it passes that slot token back to this node, and that\nallows this node to cheaply identify where to put the child render object\nrelative to the others in the parent render object.\n\n### Updating children\n\nEarly in the lifecycle of an element, the framework calls the [mount]\nmethod. This method should call [updateChild] for each child, passing in\nthe widget for that child, and the slot for that child, thus obtaining a\nlist of child [Element]s.\n\nSubsequently, the framework will call the [update] method. In this method,\nthe [RenderObjectElement] should call [updateChild] for each child, passing\nin the [Element] that was obtained during [mount] or the last time [update]\nwas run (whichever happened most recently), the new [Widget], and the slot.\nThis provides the object with a new list of [Element] objects.\n\nWhere possible, the [update] method should attempt to map the elements from\nthe last pass to the widgets in the new pass. For example, if one of the\nelements from the last pass was configured with a particular [Key], and one\nof the widgets in this new pass has that same key, they should be paired up,\nand the old element should be updated with the widget (and the slot\ncorresponding to the new widget's new position, also). The [updateChildren]\nmethod may be useful in this regard.\n\n[updateChild] should be called for children in their logical order. The\norder can matter; for example, if two of the children use [PageStorage]'s\n`writeState` feature in their build method (and neither has a [Widget.key]),\nthen the state written by the first will be overwritten by the second.\n\n#### Dynamically determining the children during the build phase\n\nThe child widgets need not necessarily come from this element's widget\nverbatim. They could be generated dynamically from a callback, or generated\nin other more creative ways.\n\n#### Dynamically determining the children during layout\n\nIf the widgets are to be generated at layout time, then generating them when\nthe [update] method won't work: layout of this element's render object\nhasn't started yet at that point. Instead, the [update] method can mark the\nrender object as needing layout (see [RenderObject.markNeedsLayout]), and\nthen the render object's [RenderObject.performLayout] method can call back\nto the element to have it generate the widgets and call [updateChild]\naccordingly.\n\nFor a render object to call an element during layout, it must use\n[RenderObject.invokeLayoutCallback]. For an element to call [updateChild]\noutside of its [update] method, it must use [BuildOwner.buildScope].\n\nThe framework provides many more checks in normal operation than it does\nwhen doing a build during layout. For this reason, creating widgets with\nlayout-time build semantics should be done with great care.\n\n#### Handling errors when building\n\nIf an element calls a builder function to obtain widgets for its children,\nit may find that the build throws an exception. Such exceptions should be\ncaught and reported using [FlutterError.reportError]. If a child is needed\nbut a builder has failed in this way, an instance of [ErrorWidget] can be\nused instead.\n\n### Detaching children\n\nIt is possible, when using [GlobalKey]s, for a child to be proactively\nremoved by another element before this element has been updated.\n(Specifically, this happens when the subtree rooted at a widget with a\nparticular [GlobalKey] is being moved from this element to an element\nprocessed earlier in the build phase.) When this happens, this element's\n[forgetChild] method will be called with a reference to the affected child\nelement.\n\nThe [forgetChild] method of a [RenderObjectElement] subclass must remove the\nchild element from its child list, so that when it next [update]s its\nchildren, the removed child is not considered.\n\nFor performance reasons, if there are many elements, it may be quicker to\ntrack which elements were forgotten by storing them in a [Set], rather than\nproactively mutating the local record of the child list and the identities\nof all the slots. For example, see the implementation of\n[MultiChildRenderObjectElement].\n\n### Maintaining the render object tree\n\nOnce a descendant produces a render object, it will call\n[insertChildRenderObject]. If the descendant's slot changes identity, it\nwill call [moveChildRenderObject]. If a descendant goes away, it will call\n[removeChildRenderObject].\n\nThese three methods should update the render tree accordingly, attaching,\nmoving, and detaching the given child render object from this element's own\nrender object respectively.\n\n### Walking the children\n\nIf a [RenderObjectElement] object has any children [Element]s, it must\nexpose them in its implementation of the [visitChildren] method. This method\nis used by many of the framework's internal mechanisms, and so should be\nfast. It is also used by the test framework and [debugDumpApp].", "detail": "", "kind": 7, "label": "RenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ProxyWidget] as its configuration.", "detail": "", "kind": 7, "label": "ProxyElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which takes a specific\n[Animation<RelativeRect>] to transition the child's position from a start\nposition to an end position over the lifetime of the animation.\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [PositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "PositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CreateRectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that takes two [Rect] instances and returns a\n[RectTween] that transitions between them.\n\nThis is typically used with a [HeroController] to provide an animation for\n[Hero] positions that looks nicer than a linear movement. For example, see\n[MaterialRectArcTween].", "detail": "(Rect begin, Rect end) → Tween<Rect>", "kind": 7, "label": "CreateRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for strategies that build widgets based on asynchronous\ninteraction.\n\nSee also:\n\n * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Stream].\n * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Future].", "detail": "(BuildContext context, AsyncSnapshot<T> snapshot) → Widget", "kind": 7, "label": "AsyncWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlockSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops the semantics of all widget that were painted before it\nin the same semantic container.\n\nThis is useful to hide widgets from accessibility tools that are painted\nbehind a certain widget, e.g. an alert should usually disallow interaction\nwith any widget located \"behind\" the alert (even when they are still\npartially visible). Similarly, an open [Drawer] blocks interactions with\nany widget outside the drawer.\n\nSee also:\n\n * [ExcludeSemantics] which drops all semantics of its descendants.", "detail": "", "kind": 7, "label": "BlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[SliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [SliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children.\n\n\nIf the children have a fixed extent in the main axis, consider using\n[SliverFixedExtentList] rather than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis and is therefore more efficient.\n\n\nSee also:\n\n * [SliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDetector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures.\n\nAttempts to recognize gestures that correspond to its non-null callbacks.\n\nIf this widget has a child, it defers to that child for its sizing behavior.\nIf it does not have a child, it grows to fit the parent instead.\n\nBy default a GestureDetector with an invisible child ignores touches;\nthis behavior can be controlled with [behavior].\n\nGestureDetector also listens for accessibility events and maps\nthem to the callbacks. To ignore accessibility events, set\n[excludeFromSemantics] to true.\n\nSee <http://flutter.dev/gestures/> for additional information.\n\nMaterial design applications typically react to touches with ink splash\neffects. The [InkWell] class implements this effect and can be used in place\nof a [GestureDetector] for handling taps.\n\n\nThis example makes a rectangle react to being tapped by setting the\n`_lights` field:\n\n```dart\nGestureDetector(\n onTap: () {\n setState(() { _lights = true; });\n },\n child: Container(\n color: Colors.yellow,\n child: Text('TURN LIGHTS ON'),\n ),\n)\n```\n\n## Debugging\n\nTo see how large the hit test box of a [GestureDetector] is for debugging\npurposes, set [debugPaintPointersEnabled] to true.", "detail": "", "kind": 7, "label": "GestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalizationsDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A factory for a set of localized resources of type `T`, to be loaded by a\n[Localizations] widget.\n\nTypical applications have one [Localizations] widget which is created by the\n[WidgetsApp] and configured with the app's `localizationsDelegates`\nparameter (a list of delegates). The delegate's [type] is used to identify\nthe object created by an individual delegate's [load] method.", "detail": "", "kind": 7, "label": "LocalizationsDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProviderStateMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides [Ticker] objects that are configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create an [AnimationController] in a class that uses this mixin, pass\n`vsync: this` to the animation controller constructor whenever you\ncreate a new animation controller.\n\nIf you only have a single [Ticker] (for example only a single\n[AnimationController]) for the lifetime of your [State], then using a\n[SingleTickerProviderStateMixin] is more efficient. This is the common case.", "detail": "", "kind": 7, "label": "TickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that hook [ParentData] information to children of\n[RenderObjectWidget]s.\n\nThis can be used to provide per-child configuration for\n[RenderObjectWidget]s with more than one child. For example, [Stack] uses\nthe [Positioned] parent data widget to position each child.\n\nA [ParentDataWidget] is specific to a particular kind of [RenderObject], and\nthus also to a particular [RenderObjectWidget] class. That class is `T`, the\n[ParentDataWidget] type argument.\n\n\nThis example shows how you would build a [ParentDataWidget] to configure a\n`FrogJar` widget's children by specifying a [Size] for each one.\n\n```dart\nclass FrogSize extends ParentDataWidget<FrogJar> {\n FrogSize({\n Key key,\n @required this.size,\n @required Widget child,\n }) : assert(child != null),\n assert(size != null),\n super(key: key, child: child);\n\n final Size size;\n\n @override\n void applyParentData(RenderObject renderObject) {\n final FrogJarParentData parentData = renderObject.parentData;\n if (parentData.size != size) {\n parentData.size = size;\n final RenderFrogJar targetParent = renderObject.parent;\n targetParent.markNeedsLayout();\n }\n }\n}\n```\n\nSee also:\n\n * [RenderObject], the superclass for layout algorithms.\n * [RenderObject.parentData], the slot that this class configures.\n * [ParentData], the superclass of the data that will be placed in\n [RenderObject.parentData] slots.\n * [RenderObjectWidget], the class for widgets that wrap [RenderObject]s.\n The `T` type parameter for [ParentDataWidget] is a [RenderObjectWidget].\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.", "detail": "", "kind": 7, "label": "ParentDataWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for scrolling activities like dragging and flinging.\n\nSee also:\n\n * [ScrollPosition], which uses [ScrollActivity] objects to manage the\n [ScrollPosition] of a [Scrollable].", "detail": "", "kind": 7, "label": "ScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageIcon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An icon that comes from an [ImageProvider], e.g. an [AssetImage].\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for icons based on glyphs from fonts instead of images.\n * [Icons], a predefined font based set of icons from the material design library.", "detail": "", "kind": 7, "label": "ImageIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorberHandle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Handle to provide to a [SliverOverlapAbsorber], a [SliverOverlapInjector],\nand an [NestedScrollViewViewport], to shift overlap in a [NestedScrollView].\n\nA particular [SliverOverlapAbsorberHandle] can only be assigned to a single\n[SliverOverlapAbsorber] at a time. It can also be (and normally is) assigned\nto one or more [SliverOverlapInjector]s, which must be later descendants of\nthe same [NestedScrollViewViewport] as the [SliverOverlapAbsorber]. The\n[SliverOverlapAbsorber] must be a direct descendant of the\n[NestedScrollViewViewport], taking part in the same sliver layout. (The\n[SliverOverlapInjector] can be a descendant that takes part in a nested\nscroll view's sliver layout.)\n\nWhenever the [NestedScrollViewViewport] is marked dirty for layout, it will\ncause its assigned [SliverOverlapAbsorberHandle] to fire notifications. It\nis the responsibility of the [SliverOverlapInjector]s (and any other\nclients) to mark themselves dirty when this happens, in case the geometry\nsubsequently changes during layout.\n\nSee also:\n\n * [NestedScrollView], which uses a [NestedScrollViewViewport] and a\n [SliverOverlapAbsorber] to align its children, and which shows sample\n usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorberHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nSee also the discussions at [Key] and [Widget.key].", "detail": "", "kind": 7, "label": "ObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetToRenderBoxAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An adapter for placing a specific [RenderBox] in the widget tree.\n\nA given render object can be placed at most once in the widget tree. This\nwidget enforces that restriction by keying itself using a [GlobalObjectKey]\nfor the given render object.", "detail": "", "kind": 7, "label": "WidgetToRenderBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ValueKey] that defines where [PageStorage] values will be saved.\n\n[Scrollable]s ([ScrollPosition]s really) use [PageStorage] to save their\nscroll offset. Each time a scroll completes, the scrollable's page\nstorage is updated.\n\n[PageStorage] is used to save and restore values that can outlive the widget.\nThe values are stored in a per-route [Map] whose keys are defined by the\n[PageStorageKey]s for the widget and its ancestors. To make it possible\nfor a saved value to be found when a widget is recreated, the key's values\nmust not be objects whose identity will change each time the widget is created.\n\nFor example, to ensure that the scroll offsets for the scrollable within\neach `MyScrollableTabView` below are restored when the [TabBarView]\nis recreated, we've specified [PageStorageKey]s whose values are the\ntabs' string labels.\n\n```dart\nTabBarView(\n children: myTabs.map((Tab tab) {\n MyScrollableTabView(\n key: PageStorageKey<String>(tab.text), // like 'Tab 1'\n tab: tab,\n ),\n }),\n)\n```", "detail": "", "kind": 7, "label": "PageStorageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectButtonBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by\n[WidgetInspector.selectButtonBuilder].", "detail": "(BuildContext context, VoidCallback onPressed) → Widget", "kind": 7, "label": "InspectorSelectButtonBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOval", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildBuilderDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using a builder\ncallback.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot have to be built until they are displayed.", "detail": "", "kind": 7, "label": "ListWheelChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatelessWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatelessElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenConstructor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a [Tween] factory.\n\nThis is the type of one of the arguments of [TweenVisitor], the signature\nused by [AnimatedWidgetBaseState.forEachTween].", "detail": "(T targetValue) → Tween<T>", "kind": 7, "label": "TweenConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetLeave", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] leaves a [DragTarget].\n\nUsed by [DragTarget.onLeave].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetLeave" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigationToolbar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[NavigationToolbar] is a layout helper to position 3 widgets or groups of\nwidgets along a horizontal axis that's sensible for an application's\nnavigation bar such as in Material Design and in iOS.\n\nThe [leading] and [trailing] widgets occupy the edges of the widget with\nreasonable size constraints while the [middle] widget occupies the remaining\nspace in either a center aligned or start aligned fashion.\n\nEither directly use the themed app bars such as the Material [AppBar] or\nthe iOS [CupertinoNavigationBar] or wrap this widget with more theming\nspecifications for your own custom app bar.", "detail": "", "kind": 7, "label": "NavigationToolbar" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines which portion of the content is visible in a scroll view.\n\nThe [pixels] value determines the scroll offset that the scroll view uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThe [ScrollPosition] applies [physics] to scrolling, and stores the\n[minScrollExtent] and [maxScrollExtent].\n\nScrolling is controlled by the current [activity], which is set by\n[beginActivity]. [ScrollPosition] itself does not start any activities.\nInstead, concrete subclasses, such as [ScrollPositionWithSingleContext],\ntypically start activities in response to user input or instructions from a\n[ScrollController].\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\n## Subclassing ScrollPosition\n\nOver time, a [Scrollable] might have many different [ScrollPosition]\nobjects. For example, if [Scrollable.physics] changes type, [Scrollable]\ncreates a new [ScrollPosition] with the new physics. To transfer state from\nthe old instance to the new instance, subclasses implement [absorb]. See\n[absorb] for more details.\n\nSubclasses also need to call [didUpdateScrollDirection] whenever\n[userScrollDirection] changes values.\n\nSee also:\n\n * [Scrollable], which uses a [ScrollPosition] to determine which portion of\n its content to display.\n * [ScrollController], which can be used with [ListView], [GridView] and\n other scrollable widgets to control a [ScrollPosition].\n * [ScrollPositionWithSingleContext], which is the most commonly used\n concrete subclass of [ScrollPosition].\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents the details when a specific pointer event occurred on\nthe [Draggable].\n\nThis includes the [Velocity] at which the pointer was moving and [Offset]\nwhen the draggable event occurred, and whether its [DragTarget] accepted it.\n\nAlso, this is the details object for callbacks that use [DragEndCallback].", "detail": "", "kind": 7, "label": "DraggableDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeMatcher", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This class is a work-around for the \"is\" operator not accepting a variable value as its right operand", "detail": "", "kind": 7, "label": "TypeMatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [MultiChildRenderObjectWidget] as its configuration.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [ContainerRenderObjectMixin] mixin with a parent data\ntype that implements [ContainerParentDataMixin<RenderObject>]. Such widgets\nare expected to inherit from [MultiChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "MultiChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given [Listenable] changes value.\n\n[AnimatedWidget] is most commonly used with [Animation] objects, which are\n[Listenable], but it can be used with any [Listenable], including\n[ChangeNotifier] and [ValueNotifier].\n\n[AnimatedWidget] is most useful for widgets that are otherwise stateless. To\nuse [AnimatedWidget], simply subclass it and implement the build function.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedWidget].\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with TickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return SpinningContainer(controller: _controller);\n }\n}\n\nclass SpinningContainer extends AnimatedWidget {\n const SpinningContainer({Key key, AnimationController controller})\n : super(key: key, listenable: controller);\n\n Animation<double> get _progress => listenable;\n\n @override\n Widget build(BuildContext context) {\n return Transform.rotate(\n angle: _progress.value * 2.0 * math.pi,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n );\n }\n}\n```\n\nFor more complex case involving additional state, consider using\n[AnimatedBuilder].\n\nSee also:\n\n * [AnimatedBuilder], which is useful for more complex use cases.\n * [Animation], which is a [Listenable] object that can be used for\n [listenable].\n * [ChangeNotifier], which is another [Listenable] object that can be used\n for [listenable].", "detail": "", "kind": 7, "label": "AnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Localizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the [Locale] for its `child` and the localized resources that the\nchild depends on.\n\nLocalized resources are loaded by the list of [LocalizationsDelegate]\n`delegates`. Each delegate is essentially a factory for a collection\nof localized resources. There are multiple delegates because there are\nmultiple sources for localizations within an app.\n\nDelegates are typically simple subclasses of [LocalizationsDelegate] that\noverride [LocalizationsDelegate.load]. For example a delegate for the\n`MyLocalizations` class defined below would be:\n\n```dart\nclass _MyDelegate extends LocalizationsDelegate<MyLocalizations> {\n @override\n Future<MyLocalizations> load(Locale locale) => MyLocalizations.load(locale);\n\n @override\n bool shouldReload(MyLocalizationsDelegate old) => false;\n}\n```\n\nEach delegate can be viewed as a factory for objects that encapsulate a\na set of localized resources. These objects are retrieved with\nby runtime type with [Localizations.of].\n\nThe [WidgetsApp] class creates a `Localizations` widget so most apps\nwill not need to create one. The widget app's `Localizations` delegates can\nbe initialized with [WidgetsApp.localizationsDelegates]. The [MaterialApp]\nclass also provides a `localizationsDelegates` parameter that's just\npassed along to the [WidgetsApp].\n\nApps should retrieve collections of localized resources with\n`Localizations.of<MyLocalizations>(context, MyLocalizations)`,\nwhere MyLocalizations is an app specific class defines one function per\nresource. This is conventionally done by a static `.of` method on the\nMyLocalizations class.\n\nFor example, using the `MyLocalizations` class defined below, one would\nlookup a localized title string like this:\n```dart\nMyLocalizations.of(context).title()\n```\nIf `Localizations` were to be rebuilt with a new `locale` then\nthe widget subtree that corresponds to [BuildContext] `context` would\nbe rebuilt after the corresponding resources had been loaded.\n\nThis class is effectively an [InheritedWidget]. If it's rebuilt with\na new `locale` or a different list of delegates or any of its\ndelegates' [LocalizationsDelegate.shouldReload()] methods returns true,\nthen widgets that have created a dependency by calling\n`Localizations.of(context)` will be rebuilt after the resources\nfor the new locale have been loaded.\n\n\nThis following class is defined in terms of the\n[Dart `intl` package](https://github.com/dart-lang/intl). Using the `intl`\npackage isn't required.\n\n```dart\nclass MyLocalizations {\n MyLocalizations(this.locale);\n\n final Locale locale;\n\n static Future<MyLocalizations> load(Locale locale) {\n return initializeMessages(locale.toString())\n .then((void _) {\n return MyLocalizations(locale);\n });\n }\n\n static MyLocalizations of(BuildContext context) {\n return Localizations.of<MyLocalizations>(context, MyLocalizations);\n }\n\n String title() => Intl.message('<title>', name: 'title', locale: locale.toString());\n // ... more Intl.message() methods like title()\n}\n```\nA class based on the `intl` package imports a generated message catalog that provides\nthe `initializeMessages()` function and the per-locale backing store for `Intl.message()`.\nThe message catalog is produced by an `intl` tool that analyzes the source code for\nclasses that contain `Intl.message()` calls. In this case that would just be the\n`MyLocalizations` class.\n\nOne could choose another approach for loading localized resources and looking them up while\nstill conforming to the structure of this example.", "detail": "", "kind": 7, "label": "Localizations" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformTarget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be targeted by a [CompositedTransformFollower].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\nupdates the [link] object so that any [CompositedTransformFollower] widgets\nthat are subsequently composited in the same frame and were given the same\n[LayerLink] can position themselves at the same screen location.\n\nA single [CompositedTransformTarget] can be followed by multiple\n[CompositedTransformFollower] widgets.\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nany linked [CompositedTransformFollower]s.\n\nSee also:\n\n * [CompositedTransformFollower], the widget that can target this one.\n * [LeaderLayer], the layer that implements this widget's logic.", "detail": "", "kind": 7, "label": "CompositedTransformTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for being notified when a form field changes value.\n\nUsed by [FormField.onSaved].", "detail": "(T newValue) → void", "kind": 7, "label": "FormFieldSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFadeBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [AnimatedCrossFade.layoutBuilder] callback.\n\nThe `topChild` is the child fading in, which is normally drawn on top. The\n`bottomChild` is the child fading out, normally drawn on the bottom.\n\nFor good performance, the returned widget tree should contain both the\n`topChild` and the `bottomChild`; the depth of the tree, and the types of\nthe widgets in the tree, from the returned widget to each of the children\nshould be the same; and where there is a widget with multiple children, the\ntop child and the bottom child should be keyed using the provided\n`topChildKey` and `bottomChildKey` keys respectively.\n\n\n```dart\nWidget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) {\n return Stack(\n fit: StackFit.loose,\n children: <Widget>[\n Positioned(\n key: bottomChildKey,\n left: 0.0,\n top: 0.0,\n right: 0.0,\n child: bottomChild,\n ),\n Positioned(\n key: topChildKey,\n child: topChild,\n )\n ],\n );\n}\n```", "detail": "(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) → Widget", "kind": 7, "label": "AnimatedCrossFadeBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableScrollableSheet", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container for a [Scrollable] that responds to drag gestures by resizing\nthe scrollable until a limit is reached, and then scrolling.\n\nThis widget can be dragged along the vertical axis between its\n[minChildSize], which defaults to `0.25` and [maxChildSize], which defaults\nto `1.0`. These sizes are percentages of the height of the parent container.\n\nThe widget coordinates resizing and scrolling of the widget returned by\nbuilder as the user drags along the horizontal axis.\n\nThe widget will initially be displayed at its initialChildSize which\ndefaults to `0.5`, meaning half the height of its parent. Dragging will work\nbetween the range of minChildSize and maxChildSize (as percentages of the\nparent container's height) as long as the builder creates a widget which\nuses the provided [ScrollController]. If the widget created by the\n[ScrollableWidgetBuilder] does not use provided [ScrollController], the\nsheet will remain at the initialChildSize.\n\n\nThis is a sample widget which shows a [ListView] that has 25 [ListTile]s.\nIt starts out as taking up half the body of the [Scaffold], and can be\ndragged up to the full height of the scaffold or down to 25% of the height\nof the scaffold. Upon reaching full height, the list contents will be\nscrolled up or down, until they reach the top of the list again and the user\ndrags the sheet back down.\n\n```dart\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('DraggableScrollableSheet'),\n ),\n body: SizedBox.expand(\n child: DraggableScrollableSheet(\n builder: (BuildContext context, ScrollController scrollController) {\n return Container(\n color: Colors.blue[100],\n child: ListView.builder(\n controller: scrollController,\n itemCount: 25,\n itemBuilder: (BuildContext context, int index) {\n return ListTile(title: Text('Item $index'));\n },\n ),\n );\n },\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DraggableScrollableSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ControlsWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that creates a widget given the two callbacks `onStepContinue` and\n`onStepCancel`.\n\nUsed by [Stepper.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].", "detail": "(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) → Widget", "kind": 7, "label": "ControlsWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.pageRouteBuilder].\n\nCreates a [PageRoute] using the given [RouteSettings] and [WidgetBuilder].", "detail": "(RouteSettings settings, WidgetBuilder builder) → PageRoute<T>", "kind": 7, "label": "PageRouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverToBoxAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box widget.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverToBoxAdapter]\nis a basic sliver that creates a bridge back to one of the usual box-based\nwidgets.\n\nRather than using multiple [SliverToBoxAdapter] widgets to display multiple\nbox widgets in a [CustomScrollView], consider using [SliverList],\n[SliverFixedExtentList], [SliverPrototypeExtentList], or [SliverGrid],\nwhich are more efficient because they instantiate only those children that\nare actually visible through the scroll view's viewport.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.\n * [SliverList], which displays multiple box widgets in a linear array.\n * [SliverFixedExtentList], which displays multiple box widgets with the\n same main-axis extent in a linear array.\n * [SliverPrototypeExtentList], which displays multiple box widgets with the\n same main-axis extent as a prototype item, in a linear array.\n * [SliverGrid], which displays multiple box widgets in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin used by routes to handle back navigations internally by popping a list.\n\nWhen a [Navigator] is instructed to pop, the current route is given an\nopportunity to handle the pop internally. A `LocalHistoryRoute` handles the\npop internally if its list of local history entries is non-empty. Rather\nthan being removed as the current route, the most recent [LocalHistoryEntry]\nis removed from the list and its [LocalHistoryEntry.onRemove] is called.", "detail": "", "kind": 7, "label": "LocalHistoryRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An element that lazily builds children for a [SliverMultiBoxAdaptorWidget].\n\nImplements [RenderSliverBoxChildManager], which lets this element manage\nthe children of subclasses of [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flex", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a one-dimensional array.\n\nThe [Flex] widget allows you to control the axis along which the children are\nplaced (horizontal or vertical). This is referred to as the _main axis_. If\nyou know the main axis in advance, then consider using a [Row] (if it's\nhorizontal) or [Column] (if it's vertical) instead, because that will be less\nverbose.\n\nTo cause a child to expand to fill the available space in the [direction]\nof this widget's main axis, wrap the child in an [Expanded] widget.\n\nThe [Flex] widget does not scroll (and in general it is considered an error\nto have more children in a [Flex] than will fit in the available room). If\nyou have some widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nIf you only have one child, then rather than using [Flex], [Row], or\n[Column], consider using [Align] or [Center] to position the child.\n\n## Layout algorithm\n\n_This section describes how a [Flex] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Flex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded main axis constraints and the incoming\n cross axis constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight cross axis constraints\n that match the incoming max extent in the cross axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of main axis space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [Flex] is the maximum cross axis extent of\n the children (which will always satisfy the incoming constraints).\n5. The main axis extent of the [Flex] is determined by the [mainAxisSize]\n property. If the [mainAxisSize] property is [MainAxisSize.max], then the\n main axis extent of the [Flex] is the max extent of the incoming main\n axis constraints. If the [mainAxisSize] property is [MainAxisSize.min],\n then the main axis extent of the [Flex] is the sum of the main axis\n extents of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a version of this widget that is always horizontal.\n * [Column], for a version of this widget that is always vertical.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n that may be sized smaller (leaving some remaining room unused).\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flex" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GenerateAppTitle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.onGenerateTitle].\n\nUsed to generate a value for the app's [Title.title], which the device uses\nto identify the app for the user. The `context` includes the [WidgetsApp]'s\n[Localizations] widget so that this method can be used to produce a\nlocalized title.\n\nThis function must not return null.", "detail": "(BuildContext context) → String", "kind": 7, "label": "GenerateAppTitle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExcludeSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops all the semantics of its descendants.\n\nWhen [excluding] is true, this widget (and its subtree) is excluded from\nthe semantics tree.\n\nThis can be used to hide descendant widgets that would otherwise be\nreported but that would only be confusing. For example, the\nmaterial library's [Chip] widget hides the avatar since it is\nredundant with the chip label.\n\nSee also:\n\n * [BlockSemantics] which drops semantics of widgets earlier in the tree.", "detail": "", "kind": 7, "label": "ExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlayChanged", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting changes to the selection component of a\n[TextEditingValue] for the purposes of a [TextSelectionOverlay]. The\n[caretRect] argument gives the location of the caret in the coordinate space\nof the [RenderBox] given by the [TextSelectionOverlay.renderObject].\n\nUsed by [TextSelectionOverlay.onSelectionOverlayChanged].", "detail": "(TextEditingValue value, Rect caretRect) → void", "kind": 7, "label": "TextSelectionOverlayChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollEndNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has stopped scrolling.\n\nSee also:\n\n * [ScrollStartNotification], which indicates that scrolling has started.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollEndNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatefulWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatefulElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of the [LayoutBuilder] builder function.", "detail": "(BuildContext context, BoxConstraints constraints) → Widget", "kind": 7, "label": "LayoutWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImagePhase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The phases a [FadeInImage] goes through.", "detail": "", "kind": 13, "label": "FadeInImagePhase" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SlideTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the position of a widget relative to its normal position.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nBy default, the offsets are applied in the coordinate system of the canvas\n(so positive x offsets move the child towards the right). If a\n[textDirection] is provided, then the offsets are applied in the reading\ndirection, so in right-to-left text, positive x offsets move towards the\nleft, and in left-to-right text, positive x offsets move towards the right.\n\nHere's an illustration of the [SlideTransition] widget, with it's [position]\nanimated by a [CurvedAnimation] set to [Curves.elasticIn]:\n\nSee also:\n\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SlideTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyleTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [TextStyle]s.\n\nThis class specializes the interpolation of [Tween<TextStyle>] to use\n[TextStyle.lerp].\n\nThis will not work well if the styles don't set the same fields.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "TextStyleTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches Android.\n\nSee also:\n\n * [BouncingScrollSimulation], which implements iOS scroll physics.", "detail": "", "kind": 7, "label": "ClampingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The activity a scroll view performs when a the user drags their finger\nacross the screen.\n\nSee also:\n\n * [ScrollDragController], which listens to the [Drag] and actually scrolls\n the scroll view.", "detail": "", "kind": 7, "label": "DragScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildLoopingListDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies infinite children for [ListWheelScrollView] by\nlooping an explicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildLoopingListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsFlutterBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A concrete binding for applications based on the Widgets framework.\n\nThis is the glue that binds the framework to the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Route", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstraction for an entry managed by a [Navigator].\n\nThis class defines an abstract interface between the navigator and the\n\"routes\" that are pushed on and popped off the navigator. Most routes have\nvisual affordances, which they place in the navigators [Overlay] using one\nor more [OverlayEntry] objects.\n\nSee [Navigator] for more explanation of how to use a Route\nwith navigation, including code examples.\n\nSee [MaterialPageRoute] for a route that replaces the\nentire screen with a platform-adaptive transition.", "detail": "", "kind": 7, "label": "Route" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates its own size and clips and aligns its child.\n\n[SizeTransition] acts as a [ClipRect] that animates either its width or its\nheight, depending upon the value of [axis]. The alignment of the child along\nthe [axis] is specified by the [axisAlignment].\n\nLike most widgets, [SizeTransition] will conform to the constraints it is\ngiven, so be sure to put it in a context where it can change size. For\ninstance, if you place it into a [Container] with a fixed size, then the\n[SizeTransition] will not be able to change size, and will appear to do\nnothing.\n\nHere's an illustration of the [SizeTransition] widget, with it's [sizeFactor]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [AnimatedCrossFade], for a widget that automatically animates between\n the sizes of two children, fading between them.\n * [ScaleTransition], a widget that scales the size of the child instead of\n clipping it.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SizeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IdleScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing.\n\nWhen a scroll view is not scrolling, it is performing the idle activity.\n\nIf the [Scrollable] changes dimensions, this activity triggers a ballistic\nactivity to restore the view.", "detail": "", "kind": 7, "label": "IdleScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building children of a [DragTarget].\n\nThe `candidateData` argument contains the list of drag data that is hovering\nover this [DragTarget] and that has passed [DragTarget.onWillAccept]. The\n`rejectedData` argument contains the list of drag data that is hovering over\nthis [DragTarget] and that will not be accepted by the [DragTarget].\n\nUsed by [DragTarget.builder].", "detail": "(BuildContext context, List<T> candidateData, List<dynamic> rejectedData) → Widget", "kind": 7, "label": "DragTargetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticIndexCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback which produces a semantic index given a widget and the local index.\n\nReturn a null value to prevent a widget from receiving an index.\n\nA semantic index is used to tag child semantic nodes for accessibility\nannouncements in scroll view.\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.\n * [SliverChildBuilderDelegate], for an explanation of how this is used to\n generate indexes.", "detail": "(Widget widget, int localIndex) → int", "kind": 7, "label": "SemanticIndexCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDragController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scrolls a scroll view as the user drags their finger across the screen.\n\nSee also:\n\n * [DragScrollActivity], which is the activity the scroll view performs\n while a drag is underway.", "detail": "", "kind": 7, "label": "ScrollDragController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedStack", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] that shows a single child from a list of children.\n\nThe displayed child is the one with the given [index]. The stack is\nalways as big as the largest child.\n\nIf value is null, then nothing is displayed.\n\nSee also:\n\n * [Stack], for more details about stacks.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Transform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a transformation before painting its child.\n\n\n\nThis example rotates and skews an orange box containing text, keeping the\ntop right corner pinned to its original position.\n\n```dart\nContainer(\n color: Colors.black,\n child: Transform(\n alignment: Alignment.topRight,\n transform: Matrix4.skewY(0.3)..rotateZ(-math.pi / 12.0),\n child: Container(\n padding: const EdgeInsets.all(8.0),\n color: const Color(0xFFE8581C),\n child: const Text('Apartment for rent!'),\n ),\n ),\n)\n```\n\nSee also:\n\n * [RotatedBox], which rotates the child widget during layout, not just\n during painting.\n * [FractionalTranslation], which applies a translation to the child\n that is relative to the child's size.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.", "detail": "", "kind": 7, "label": "Transform" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotificationPredicate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A predicate for [ScrollNotification], used to customize widgets that\nlisten to notifications from their children.", "detail": "(ScrollNotification notification) → bool", "kind": 7, "label": "ScrollNotificationPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated widget that automatically transitions its size over a given\nduration whenever the given child's size changes.", "detail": "", "kind": 7, "label": "AnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysScrollableScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that always lets the user scroll.\n\nOn Android, overscrolls will be clamped by default and result in an\noverscroll glow. On iOS, overscrolls will load a spring that will return\nthe scroll view to its normal range when released.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "AlwaysScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that prevent the scroll offset from reaching\nbeyond the bounds of the content.\n\nThis is the behavior typically seen on Android.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on Android.\n * [BouncingScrollPhysics], which is the analogous physics for iOS' bouncing\n behavior.\n * [GlowingOverscrollIndicator], which is used by [ScrollConfiguration] to\n provide the glowing effect that is usually found with this clamping effect\n on Android. When using a [MaterialApp], the [GlowingOverscrollIndicator]'s\n glow color is specified to use [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "ClampingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RichText", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A paragraph of rich text.\n\nThe [RichText] widget displays text that uses multiple different styles. The\ntext to display is described using a tree of [TextSpan] objects, each of\nwhich has an associated style that is used for that subtree. The text might\nbreak across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nText displayed in a [RichText] widget must be explicitly styled. When\npicking which style to use, consider using [DefaultTextStyle.of] the current\n[BuildContext] to provide defaults. For more details on how to style text in\na [RichText] widget, see the documentation for [TextStyle].\n\nConsider using the [Text] widget to integrate with the [DefaultTextStyle]\nautomatically. When all the text uses the same style, the default constructor\nis less verbose. The [Text.rich] constructor allows you to style multiple\nspans with the default text style while still allowing specified styles per\nspan.\n\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Hello ',\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),\n TextSpan(text: ' world!'),\n ],\n ),\n)\n```\n\nSee also:\n\n * [TextStyle], which discusses how to style text.\n * [TextSpan], which is used to describe the text in a paragraph.\n * [Text], which automatically applies the ambient styles described by a\n [DefaultTextStyle] to a single string.", "detail": "", "kind": 7, "label": "RichText" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScope", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a scope in which widgets can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nA focus scope does not itself receive focus but instead helps remember\nprevious focus states. A scope is currently active when its [node] is the\nfirst focus of its parent scope. To activate a [FocusScope], either use the\n[autofocus] property or explicitly make the [node] the first focus in the\nparent scope:\n\n```dart\nFocusScope.of(context).setFirstFocus(node);\n```\n\nIf a [FocusScope] is removed from the widget tree, then the previously\nfocused node will be focused, but only if the [node] is the same [node]\nobject as in the previous frame. To assure this, you can use a GlobalKey to\nkeep the [FocusScope] widget from being rebuilt from one frame to the next,\nor pass in the [node] from a parent that is not rebuilt. If there is no next\nsibling, then the parent scope node will be focused.\n\nSee also:\n\n * [FocusScopeNode], which is the associated node in the focus tree.\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.", "detail": "", "kind": 7, "label": "FocusScope" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Form", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An optional container for grouping together multiple form field widgets\n(e.g. [TextField] widgets).\n\nEach individual form field should be wrapped in a [FormField] widget, with\nthe [Form] widget as a common ancestor of all of those. Call methods on\n[FormState] to save, reset, or validate each [FormField] that is a\ndescendant of this [Form]. To obtain the [FormState], you may use [Form.of]\nwith a context whose ancestor is the [Form], or pass a [GlobalKey] to the\n[Form] constructor and call [GlobalKey.currentState].\n\nThis example shows a [Form] with one [TextFormField] and a [RaisedButton]. A\n[GlobalKey] is used here to identify the [Form] and validate input.\n\n```dart\nfinal _formKey = GlobalKey<FormState>();\n\n@override\nWidget build(BuildContext context) {\n return Form(\n key: _formKey,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n TextFormField(\n validator: (value) {\n if (value.isEmpty) {\n return 'Please enter some text';\n }\n },\n ),\n Padding(\n padding: const EdgeInsets.symmetric(vertical: 16.0),\n child: RaisedButton(\n onPressed: () {\n // Validate will return true if the form is valid, or false if\n // the form is invalid.\n if (_formKey.currentState.validate()) {\n // Process data.\n }\n },\n child: Text('Submit'),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [GlobalKey], a key that is unique across the entire app.\n * [FormField], a single form field widget that maintains the current state.\n * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].", "detail": "", "kind": 7, "label": "Form" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4Tween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Matrix4]s.\n\nThis class specializes the interpolation of [Tween<Matrix4>] to be\nappropriate for transformation matrices.\n\nCurrently this class works only for translations.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "Matrix4Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IgnorePointer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is invisible during hit testing.\n\nWhen [ignoring] is true, this widget (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because it returns\nfalse from [RenderBox.hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [AbsorbPointer], which also prevents its children from receiving pointer\n events but is itself visible to hit testing.", "detail": "", "kind": 7, "label": "IgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Table", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses the table layout algorithm for its children.\n\n\nIf you only have one row, the [Row] widget is more appropriate. If you only\nhave one column, the [SliverList] or [Column] widgets will be more\nappropriate.\n\nRows size vertically based on their contents. To control the column widths,\nuse the [columnWidths] property.\n\nFor more details about the table layout algorithm, see [RenderTable].\nTo control the alignment of children, see [TableCell].", "detail": "", "kind": 7, "label": "Table" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that does not require mutable state.\n\nA stateless widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\n\nStateless widget are useful when the part of the user interface you are\ndescribing does not depend on anything other than the configuration\ninformation in the object itself and the [BuildContext] in which the widget\nis inflated. For compositions that can change dynamically, e.g. due to\nhaving an internal clock-driven state, or depending on some system state,\nconsider using [StatefulWidget].\n\n## Performance considerations\n\nThe [build] method of a stateless widget is typically only called in three\nsituations: the first time the widget is inserted in the tree, when the\nwidget's parent changes its configuration, and when an [InheritedWidget] it\ndepends on changes.\n\nIf a widget's parent will regularly change the widget's configuration, or if\nit depends on inherited widgets that frequently change, then it is important\nto optimize the performance of the [build] method to maintain a fluid\nrendering performance.\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateless widget:\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. For example, instead of an elaborate arrangement\n of [Row]s, [Column]s, [Padding]s, and [SizedBox]es to position a single\n child in a particularly fancy manner, consider using just an [Align] or a\n [CustomSingleChildLayout]. Instead of an intricate layering of multiple\n [Container]s and with [Decoration]s to draw just the right graphical\n effect, consider a single [CustomPaint] widget.\n\n * Use `const` widgets where possible, and provide a `const` constructor for\n the widget so that users of the widget can also do so.\n\n * Consider refactoring the stateless widget into a stateful widget so that\n it can use some of the techniques described at [StatefulWidget], such as\n caching common parts of subtrees and using [GlobalKey]s when changing the\n tree structure.\n\n * If the widget is likely to get rebuilt frequently due to the use of\n [InheritedWidget]s, consider refactoring the stateless widget into\n multiple widgets, with the parts of the tree that change being pushed to\n the leaves. For example instead of building a tree with four widgets, the\n inner-most widget depending on the [Theme], consider factoring out the\n part of the build function that builds the inner-most widget into its own\n widget, so that only the inner-most widget needs to be rebuilt when the\n theme changes.\n\n\nThe following is a skeleton of a stateless widget subclass called `GreenFrog`.\n\nNormally, widgets have more constructor arguments, each of which corresponds\nto a `final` property.\n\n```dart\nclass GreenFrog extends StatelessWidget {\n const GreenFrog({ Key key }) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFF2DBD3A));\n }\n}\n```\n\n\nThis next example shows the more generic widget `Frog` which can be given\na color and a child:\n\n```dart\nclass Frog extends StatelessWidget {\n const Frog({\n Key key,\n this.color = const Color(0xFF2DBD3A),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n @override\n Widget build(BuildContext context) {\n return Container(color: color, child: child);\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatelessWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteObserver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that notifies [RouteAware]s of changes to the\nstate of their [Route].\n\n[RouteObserver] informs subscribers whenever a route of type `R` is pushed\non top of their own route of type `R` or popped from it. This is for example\nuseful to keep track of page transitions, e.g. a `RouteObserver<PageRoute>`\nwill inform subscribed [RouteAware]s whenever the user navigates away from\nthe current page route to another page route.\n\nTo be informed about route changes of any type, consider instantiating a\n`RouteObserver<Route>`.\n\n## Type arguments\n\nWhen using more aggressive\n[lints](http://dart-lang.github.io/linter/lints/), in particular lints such\nas `always_specify_types`, the Dart analyzer will require that certain types\nbe given with their type arguments. Since the [Route] class and its\nsubclasses have a type argument, this includes the arguments passed to this\nclass. Consider using `dynamic` to specify the entire class of routes rather\nthan only specific subtypes. For example, to watch for all [PageRoute]\nvariants, the `RouteObserver<PageRoute<dynamic>>` type may be used.\n\n\nTo make a [StatefulWidget] aware of its current [Route] state, implement\n[RouteAware] in its [State] and subscribe it to a [RouteObserver]:\n\n```dart\n// Register the RouteObserver as a navigation observer.\nfinal RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();\nvoid main() {\n runApp(MaterialApp(\n home: Container(),\n navigatorObservers: [routeObserver],\n ));\n}\n\nclass RouteAwareWidget extends StatefulWidget {\n State<RouteAwareWidget> createState() => RouteAwareWidgetState();\n}\n\n// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.\nclass RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n routeObserver.subscribe(this, ModalRoute.of(context));\n }\n\n @override\n void dispose() {\n routeObserver.unsubscribe(this);\n super.dispose();\n }\n\n @override\n void didPush() {\n // Route was pushed onto navigator and is now topmost route.\n }\n\n @override\n void didPopNext() {\n // Covering route was popped off the navigator.\n }\n\n @override\n Widget build(BuildContext context) => Container();\n\n}\n```", "detail": "", "kind": 7, "label": "RouteObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Future].\n\nThe [future] must have been obtained earlier, e.g. during [State.initState],\n[State.didUpdateConfig], or [State.didChangeDependencies]. It must not be\ncreated during the [State.build] or [StatelessWidget.build] method call when\nconstructing the [FutureBuilder]. If the [future] is created at the same\ntime as the [FutureBuilder], then every time the [FutureBuilder]'s parent is\nrebuilt, the asynchronous task will be restarted.\n\nA general guideline is to assume that every `build` method could get called\nevery frame, and to treat omitted calls as an optimization.\n\n\n## Timing\n\nWidget rebuilding is scheduled by the completion of the future, using\n[State.setState], but is otherwise decoupled from the timing of the future.\nThe [builder] callback is called at the discretion of the Flutter pipeline, and\nwill thus receive a timing-dependent sub-sequence of the snapshots that\nrepresent the interaction with the future.\n\nA side-effect of this is that providing a new but already-completed future\nto a [FutureBuilder] will result in a single frame in the\n[ConnectionState.waiting] state. This is because there is no way to\nsynchronously determine that a [Future] has already completed.\n\n## Builder contract\n\nFor a future that completes successfully with data, assuming [initialData]\nis null, the [builder] will be called with either both or only the latter of\nthe following snapshots:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withData(ConnectionState.done, 'some data')`\n\nIf that same future instead completed with an error, the [builder] would be\ncalled with either both or only the latter of:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withError(ConnectionState.done, 'some error')`\n\nThe initial snapshot data can be controlled by specifying [initialData]. You\nwould use this facility to ensure that if the [builder] is invoked before\nthe future completes, the snapshot carries data of your choice rather than\nthe default null value.\n\nThe data and error fields of the snapshot change only as the connection\nstate field transitions from `waiting` to `done`, and they will be retained\nwhen changing the [FutureBuilder] configuration to another future. If the\nold future has already completed successfully with data as above, changing\nconfiguration to a new future results in snapshot pairs of the form:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.none, 'data of first future')`\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, 'data of second future')`\n\nIn general, the latter will be produced only when the new future is\nnon-null, and the former only when the old future is non-null.\n\nA [FutureBuilder] behaves identically to a [StreamBuilder] configured with\n`future?.asStream()`, except that snapshots with `ConnectionState.active`\nmay appear for the latter, depending on how the stream is implemented.\n\n\nThis sample shows a [FutureBuilder] configuring a text label to show the\nstate of an asynchronous calculation returning a string. Assume the\n`_calculation` field is set by pressing a button elsewhere in the UI.\n\n```dart\nFutureBuilder<String>(\n future: _calculation, // a previously-obtained Future<String> or null\n builder: (BuildContext context, AsyncSnapshot<String> snapshot) {\n switch (snapshot.connectionState) {\n case ConnectionState.none:\n return Text('Press button to start.');\n case ConnectionState.active:\n case ConnectionState.waiting:\n return Text('Awaiting result...');\n case ConnectionState.done:\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n return Text('Result: ${snapshot.data}');\n }\n return null; // unreachable\n },\n)\n```", "detail": "", "kind": 7, "label": "FutureBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossFadeState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Specifies which of two children to show. See [AnimatedCrossFade].\n\nThe child that is shown will fade in, while the other will fade out.", "detail": "", "kind": 13, "label": "CrossFadeState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalObjectKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nIf the object is not private, then it is possible that collisions will occur\nwhere independent widgets will reuse the same object as their\n[GlobalObjectKey] value in a different part of the tree, leading to a global\nkey conflict. To avoid this problem, create a private [GlobalObjectKey]\nsubclass, as in:\n\n```dart\nclass _MyKey extends GlobalObjectKey {\n const _MyKey(Object value) : super(value);\n}\n```\n\nSince the [runtimeType] of the key is part of its identity, this will\nprevent clashes with other [GlobalObjectKey]s even if they have the same\nvalue.\n\nAny [GlobalObjectKey] created for the same value will match.", "detail": "", "kind": 7, "label": "GlobalObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the default color, opacity, and size of icons in a widget subtree.\n\nThe icon theme is honored by [Icon] and [ImageIcon] widgets.", "detail": "", "kind": 7, "label": "IconTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyedSubtree", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that builds its child.\n\nUseful for attaching a key to an existing widget.", "detail": "", "kind": 7, "label": "KeyedSubtree" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of an [Align] that animates its [Align.alignment] property.\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "AlignTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls callbacks in response to pointer events.\n\nRather than listening for raw pointer events, consider listening for\nhigher-level gestures using [GestureDetector].\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nIf it has a child, this widget defers to the child for sizing behavior. If\nit does not have a child, it grows to fit the parent instead.\n\nThis example makes a [Container] react to being entered by a mouse\npointer, showing a count of the number of entries and exits.\n\n```dart\nimport 'package:flutter/gestures.dart';\n```\n\n```dart\nint _enterCounter = 0;\nint _exitCounter = 0;\ndouble x = 0.0;\ndouble y = 0.0;\n\nvoid _incrementCounter(PointerEnterEvent details) {\n setState(() {\n _enterCounter++;\n });\n}\n\nvoid _decrementCounter(PointerExitEvent details) {\n setState(() {\n _exitCounter++;\n });\n}\n\nvoid _updateLocation(PointerHoverEvent details) {\n setState(() {\n x = details.position.dx;\n y = details.position.dy;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Center(\n child: ConstrainedBox(\n constraints: new BoxConstraints.tight(Size(300.0, 200.0)),\n child: Listener(\n onPointerEnter: _incrementCounter,\n onPointerHover: _updateLocation,\n onPointerExit: _decrementCounter,\n child: Container(\n color: Colors.lightBlueAccent,\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pointed at this box this many times:'),\n Text(\n '$_enterCounter Entries\\n$_exitCounter Exits',\n style: Theme.of(context).textTheme.display1,\n ),\n Text(\n 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [MouseTracker] an object that tracks mouse locations in the [GestureBinding].", "detail": "", "kind": 7, "label": "Listener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherLayoutBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom layouts for\n[AnimatedSwitcher].\n\nThe builder should return a widget which contains the given children, laid\nout as desired. It must not return null. The builder should be able to\nhandle an empty list of `previousChildren`, or a null `currentChild`.\n\nThe `previousChildren` list is an unmodifiable list, sorted with the oldest\nat the beginning and the newest at the end. It does not include the\n`currentChild`.", "detail": "(Widget currentChild, List<Widget> previousChildren) → Widget", "kind": 7, "label": "AnimatedSwitcherLayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView].\n\n[ListWheelScrollView] lazily constructs its children during layout to avoid\ncreating more children than are visible through the [Viewport]. This\ndelegate is responsible for providing children to [ListWheelScrollView]\nduring that stage.\n\nSee also:\n\n * [ListWheelChildListDelegate], a delegate that supplies children using an\n explicit list.\n * [ListWheelChildLoopingListDelegate], a delegate that supplies infinite\n children by looping an explicit list.\n * [ListWheelChildBuilderDelegate], a delegate that supplies children using\n a builder callback.", "detail": "", "kind": 7, "label": "ListWheelChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositionedDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PositionedDirectional] which automatically transitions\nthe child's position over a given duration whenever the given position\nchanges.\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositionedDirectional] will trigger\na relayout as well. ([SlideTransition] is also text-direction-aware.)\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositioned], which specifies the widget's position visually (the\n same as this widget, but for animating [Positioned]).", "detail": "", "kind": 7, "label": "AnimatedPositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopScope", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Registers a callback to veto attempts by the user to dismiss the enclosing\n[ModalRoute].\n\nSee also:\n\n * [ModalRoute.addScopedWillPopCallback] and [ModalRoute.removeScopedWillPopCallback],\n which this widget uses to register and unregister [onWillPop].", "detail": "", "kind": 7, "label": "WillPopScope" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetWillAccept", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for determining whether the given data will be accepted by a [DragTarget].\n\nUsed by [DragTarget.onWillAccept].", "detail": "(T data) → bool", "kind": 7, "label": "DragTargetWillAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCell", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Table] is aligned.\n\nA [TableCell] widget must be a descendant of a [Table], and the path from\nthe [TableCell] widget to its enclosing [Table] must contain only\n[TableRow]s, [StatelessWidget]s, or [StatefulWidget]s (not\nother kinds of widgets, like [RenderObjectWidget]s).", "detail": "", "kind": 7, "label": "TableCell" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableTextState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [EditableText].", "detail": "", "kind": 7, "label": "EditableTextState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteAware", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for objects that are aware of their current [Route].\n\nThis is used with [RouteObserver] to make a widget aware of changes to the\n[Navigator]'s session history.", "detail": "", "kind": 7, "label": "RouteAware" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [LeafRenderObjectWidget] as its configuration.", "detail": "", "kind": 7, "label": "LeafRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorObserver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for observing the behavior of a [Navigator].", "detail": "", "kind": 7, "label": "NavigatorObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [State.setState] functions.", "detail": "(VoidCallback fn) → void", "kind": 7, "label": "StateSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list of widgets arranged linearly.\n\n[ListView] is the most commonly used scrolling widget. It displays its\nchildren one after another in the scroll direction. In the cross axis, the\nchildren are required to fill the [ListView].\n\nIf non-null, the [itemExtent] forces the children to have the given extent\nin the scroll direction. Specifying an [itemExtent] is more efficient than\nletting the children determine their own extent because the scrolling\nmachinery can make use of the foreknowledge of the children's extent to save\nwork, for example when the scroll position changes drastically.\n\nThere are four options for constructing a [ListView]:\n\n 1. The default constructor takes an explicit [List<Widget>] of children. This\n constructor is appropriate for list views with a small number of\n children because constructing the [List] requires doing work for every\n child that could possibly be displayed in the list view instead of just\n those children that are actually visible.\n\n 2. The [ListView.builder] constructor takes an [IndexedWidgetBuilder], which\n builds the children on demand. This constructor is appropriate for list views\n with a large (or infinite) number of children because the builder is called\n only for those children that are actually visible.\n\n 3. The [ListView.separated] constructor takes two [IndexedWidgetBuilder]s:\n `itemBuilder` builds child items on demand, and `separatorBuilder`\n similarly builds separator children which appear in between the child items.\n This constructor is appropriate for list views with a fixed number of children.\n\n 4. The [ListView.custom] constructor takes a [SliverChildDelegate], which provides\n the ability to customize additional aspects of the child model. For example,\n a [SliverChildDelegate] can control the algorithm used to estimate the\n size of children that are not actually visible.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nThis example uses the default constructor for [ListView] which takes an\nexplicit [List<Widget>] of children. This [ListView]'s children are made up\nof [Container]s with [Text].\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view.png)\n\n```dart\nListView(\n padding: const EdgeInsets.all(8.0),\n children: <Widget>[\n Container(\n height: 50,\n color: Colors.amber[600],\n child: const Center(child: Text('Entry A')),\n ),\n Container(\n height: 50,\n color: Colors.amber[500],\n child: const Center(child: Text('Entry B')),\n ),\n Container(\n height: 50,\n color: Colors.amber[100],\n child: const Center(child: Text('Entry C')),\n ),\n ],\n)\n```\n\nThis example mirrors the previous one, creating the same list using the\n[ListView.builder] constructor. Using the [IndexedWidgetBuilder], children\nare built lazily and can be infinite in number.\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_builder.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.builder(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n }\n);\n```\n\nThis example continues to build from our the previous ones, creating a\nsimilar list using [ListView.separated]. Here, a [Divider] is used as a\nseparator.\n\n![A ListView of 3 amber colored containers with sample text and a Divider\nbetween each of them.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_separated.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.separated(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n },\n separatorBuilder: (BuildContext context, int index) => const Divider(),\n);\n```\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as when using\nthe default constructor) or lazily provided ones (such as when using the\n[ListView.builder] constructor).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree,\nstates and render objects are destroyed. A new child at the same position\nin the list will be lazily recreated along with new elements, states and\nrender objects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the list child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the list child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child\n widget subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the list child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the list keeps the child's render\n object (and by extension, its associated elements and states) in a cache\n list instead of destroying them. When scrolled back into view, the render\n object is repainted as-is (if it wasn't marked dirty in the interim).\n\n This only works if [addAutomaticKeepAlives] and [addRepaintBoundaries]\n are false since those parameters cause the [ListView] to wrap each child\n widget subtree with other widgets.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default when\n [addAutomaticKeepAlives] is true). Instead of unconditionally caching the\n child element subtree when scrolling off-screen like [KeepAlive],\n [AutomaticKeepAlive] can let whether to cache the subtree be determined\n by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its list child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the list child element subtree will be destroyed\n when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive\n by using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\n## Transitioning to [CustomScrollView]\n\nA [ListView] is basically a [CustomScrollView] with a single [SliverList] in\nits [CustomScrollView.slivers] property.\n\nIf [ListView] is no longer sufficient, for example because the scroll view\nis to have both a list and a grid, or because the list is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[ListView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [ListView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing either a\n[SliverList] or a [SliverFixedExtentList]; the former if [itemExtent] on the\n[ListView] was null, and the latter if [itemExtent] was not null.\n\nThe [childrenDelegate] property on [ListView] corresponds to the\n[SliverList.delegate] (or [SliverFixedExtentList.delegate]) property. The\n[new ListView] constructor's `children` argument corresponds to the\n[childrenDelegate] being a [SliverChildListDelegate] with that same\nargument. The [new ListView.builder] constructor's `itemBuilder` and\n`childCount` arguments correspond to the [childrenDelegate] being a\n[SliverChildBuilderDelegate] with the matching arguments.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the list itself, and having\nthe [SliverList] instead be a child of the [SliverPadding].\n\n[CustomScrollView]s don't automatically avoid obstructions from [MediaQuery]\nlike [ListView]s do. To reproduce the behavior, wrap the slivers in\n[SliverSafeArea]s.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [ListView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nListView(\n shrinkWrap: true,\n padding: const EdgeInsets.all(20.0),\n children: <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n shrinkWrap: true,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverList(\n delegate: SliverChildListDelegate(\n <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n ),\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is scrollable, 2D array of widgets.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [ListBody], which arranges its children in a similar manner, but without\n scrolling.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ListView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable, 2D array of widgets.\n\nThe main axis direction of a grid is the direction in which it scrolls (the\n[scrollDirection]).\n\nThe most commonly used grid layouts are [GridView.count], which creates a\nlayout with a fixed number of tiles in the cross axis, and\n[GridView.extent], which creates a layout with tiles that have a maximum\ncross-axis extent. A custom [SliverGridDelegate] can produce an arbitrary 2D\narrangement of children, including arrangements that are unaligned or\noverlapping.\n\nTo create a grid with a large (or infinite) number of children, use the\n[GridView.builder] constructor with either a\n[SliverGridDelegateWithFixedCrossAxisCount] or a\n[SliverGridDelegateWithMaxCrossAxisExtent] for the [gridDelegate].\n\nTo use a custom [SliverChildDelegate], use [GridView.custom].\n\nTo create a linear array of children, use a [ListView].\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n## Transitioning to [CustomScrollView]\n\nA [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in\nits [CustomScrollView.slivers] property.\n\nIf [GridView] is no longer sufficient, for example because the scroll view\nis to have both a grid and a list, or because the grid is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[GridView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [GridView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing just a\n[SliverGrid].\n\nThe [childrenDelegate] property on [GridView] corresponds to the\n[SliverGrid.delegate] property, and the [gridDelegate] property on the\n[GridView] corresponds to the [SliverGrid.gridDelegate] property.\n\nThe [new GridView], [new GridView.count], and [new GridView.extent]\nconstructors' `children` arguments correspond to the [childrenDelegate]\nbeing a [SliverChildListDelegate] with that same argument. The [new\nGridView.builder] constructor's `itemBuilder` and `childCount` arguments\ncorrespond to the [childrenDelegate] being a [SliverChildBuilderDelegate]\nwith the matching arguments.\n\nThe [new GridView.count] and [new GridView.extent] constructors create\ncustom grid delegates, and have equivalently named constructors on\n[SliverGrid] to ease the transition: [new SliverGrid.count] and [new\nSliverGrid.extent] respectively.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the grid itself, and having\nthe [SliverGrid] instead be a child of the [SliverPadding].\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [GridView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nGridView.count(\n primary: false,\n padding: const EdgeInsets.all(20.0),\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n primary: false,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverGrid.count(\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ListView], which is scrollable, linear list of widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "GridView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Opacity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.\n\n\n\nThis example shows some [Text] when the `_visible` member field is true, and\nhides it when it is false:\n\n```dart\nOpacity(\n opacity: _visible ? 1.0 : 0.0,\n child: const Text('Now you see me, now you don\\'t!'),\n)\n```\n\nThis is more efficient than adding and removing the child widget from the\ntree on demand.\n\n## Performance considerations for opacity animation\n\nAnimating an [Opacity] widget directly causes the widget (and possibly its\nsubtree) to rebuild each frame, which is not very efficient. Consider using\nan [AnimatedOpacity] instead.\n\n## Transparent image\n\nIf only a single [Image] or [Color] needs to be composited with an opacity\nbetween 0.0 and 1.0, it's much faster to directly use them without [Opacity]\nwidgets.\n\nFor example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much\nfaster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`.\n\n\nThe following example draws an [Image] with 0.5 opacity without using\n[Opacity]:\n\n```dart\nImage.network(\n 'https://raw.githubusercontent.com/flutter/assets-for-api-docs/master/packages/diagrams/assets/blend_mode_destination.jpeg',\n color: Color.fromRGBO(255, 255, 255, 0.5),\n colorBlendMode: BlendMode.modulate\n)\n```\n\n\nDirectly drawing an [Image] or [Color] with opacity is faster than using\n[Opacity] on top of them because [Opacity] could apply the opacity to a\ngroup of widgets and therefore a costly offscreen buffer will be used.\nDrawing content into the offscreen buffer may also trigger render target\nswitches and such switching is particularly slow in older GPUs.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly, because it is either visible or hidden, rather than allowing\n fractional opacity values).\n * [ShaderMask], which can apply more elaborate effects to its child.\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [AnimatedOpacity], which uses an animation internally to efficiently\n animate opacity.\n * [FadeTransition], which uses a provided animation to efficiently animate\n opacity.\n * [Image], which can directly provide a partially transparent image with\n much less performance hit.", "detail": "", "kind": 7, "label": "Opacity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that merges the semantics of its descendants.\n\nCauses all the semantics of the subtree rooted at this node to be\nmerged into one node in the semantics tree. For example, if you\nhave a widget with a Text node next to a checkbox widget, this\ncould be used to merge the label from the Text node with the\n\"checked\" semantic state of the checkbox into a single node that\nhad both the label and the checked state. Otherwise, the label\nwould be presented as a separate feature than the checkbox, and\nthe user would not be able to be sure that they were related.\n\nBe aware that if two nodes in the subtree have conflicting\nsemantics, the result may be nonsensical. For example, a subtree\nwith a checked checkbox and an unchecked checkbox will be\npresented as checked. All the labels will be merged into a single\nstring (with newlines separating each label from the other). If\nmultiple nodes in the merged subtree can handle semantic gestures,\nthe first one in tree order will be the one to receive the\ncallbacks.", "detail": "", "kind": 7, "label": "MergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that automatically dispatches a [SizeChangedLayoutNotification]\nwhen the layout dimensions of its child change.\n\nThe notification is not sent for the initial layout (since the size doesn't\nchange in that case, it's just established).\n\nTo listen for the notification dispatched by this widget, use a\n[NotificationListener<SizeChangedLayoutNotification>].\n\nThe [Material] class listens for [LayoutChangedNotification]s, including\n[SizeChangedLayoutNotification]s, to repaint [InkResponse] and [InkWell] ink\neffects. When a widget is likely to change size, wrapping it in a\n[SizeChangedLayoutNotifier] will cause the ink effects to correctly repaint\nwhen the child changes size.\n\nSee also:\n\n * [Notification], the base class for notifications that bubble through the\n widget tree.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollHoldController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for holding a [Scrollable] stationary.\n\nAn object that implements this interface is returned by\n[ScrollPosition.hold]. It holds the scrollable stationary until an activity\nis started or the [cancel] method is called.", "detail": "", "kind": 7, "label": "ScrollHoldController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Notification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that can bubble up the widget tree.\n\nYou can determine the type of a notification using the `is` operator to\ncheck the [runtimeType] of the notification.\n\nTo listen for notifications in a subtree, use a [NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].", "detail": "", "kind": 7, "label": "Notification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleResolutionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeResolutionCallback].\n\nIt is recommended to provide a [LocaleListResolutionCallback] instead of a\n[LocaleResolutionCallback] when possible, as [LocaleResolutionCallback] only\nreceives a subset of the information provided in [LocaleListResolutionCallback].\n\nA [LocaleResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the default\nlocale for the device after [LocaleListResolutionCallback] fails or is not provided.\n\nThis callback is also used if the app is created with a specific locale using\nthe [new WidgetsApp] `locale` parameter.\n\nThe [locale] is either the value of [WidgetsApp.locale], or the device's default\nlocale when the app started, or the device locale the user selected after the app\nwas started. The default locale is the first locale in the list of preferred\nlocales. If [locale] is null, then Flutter has not yet received the locale\ninformation from the platform. The [supportedLocales] parameter is just the value of\n[WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleListResolutionCallback], which takes a list of preferred locales (instead of one locale).\n Resolutions by [LocaleListResolutionCallback] take precedence over [LocaleResolutionCallback].", "detail": "(Locale locale, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBindingObserver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for classes that register with the Widgets layer binding.\n\nWhen used as a mixin, provides no-op method implementations.\n\nSee [WidgetsBinding.addObserver] and [WidgetsBinding.removeObserver].\n\nThis class can be extended directly, to get default behaviors for all of the\nhandlers, or can used with the `implements` keyword, in which case all the\nhandlers must be implemented (and the analyzer will list those that have\nbeen omitted).\n\n\nThis [StatefulWidget] implements the parts of the [State] and\n[WidgetsBindingObserver] protocols necessary to react to application\nlifecycle messages. See [didChangeAppLifecycleState].\n\n```dart\nclass AppLifecycleReactor extends StatefulWidget {\n const AppLifecycleReactor({ Key key }) : super(key: key);\n\n @override\n _AppLifecycleReactorState createState() => _AppLifecycleReactorState();\n}\n\nclass _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {\n @override\n void initState() {\n super.initState();\n WidgetsBinding.instance.addObserver(this);\n }\n\n @override\n void dispose() {\n WidgetsBinding.instance.removeObserver(this);\n super.dispose();\n }\n\n AppLifecycleState _notification;\n\n @override\n void didChangeAppLifecycleState(AppLifecycleState state) {\n setState(() { _notification = state; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Text('Last notification: $_notification');\n }\n}\n```\n\nTo respond to other notifications, replace the [didChangeAppLifecycleState]\nmethod above with other methods from this class.", "detail": "", "kind": 7, "label": "WidgetsBindingObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirectionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to indicate that it has been dismissed in\nthe given `direction`.\n\nUsed by [Dismissible.onDismissed].", "detail": "(DismissDirection direction) → void", "kind": 7, "label": "DismissDirectionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract widget for building widgets that gradually change their\nvalues over a period of time.\n\nSubclasses' States must provide a way to visit the subclass's relevant\nfields to animate. [ImplicitlyAnimatedWidget] will then automatically\ninterpolate and animate those fields using the provided duration and\ncurve when those fields change.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that blocks interaction with previous routes.\n\n[ModalRoute]s cover the entire [Navigator]. They are not necessarily\n[opaque], however; for example, a pop-up menu uses a [ModalRoute] but only\nshows the menu in a small box overlapping the previous route.\n\nThe `T` type argument is the return value of the route. If there is no\nreturn value, consider using `void` as the return value.", "detail": "", "kind": 7, "label": "ModalRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BorderRadius]s.\n\nThis class specializes the interpolation of [Tween<BorderRadius>] to use\n[BorderRadius.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderRadiusTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that efficiently propagate information down the tree.\n\nTo obtain the nearest instance of a particular type of inherited widget from\na build context, use [BuildContext.inheritFromWidgetOfExactType].\n\nInherited widgets, when referenced in this way, will cause the consumer to\nrebuild when the inherited widget itself changes state.\n\n\n\nThe following is a skeleton of an inherited widget called `FrogColor`:\n\n```dart\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor) as FrogColor;\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n```\n\nThe convention is to provide a static method `of` on the [InheritedWidget]\nwhich does the call to [BuildContext.inheritFromWidgetOfExactType]. This\nallows the class to define its own fallback logic in case there isn't\na widget in scope. In the example above, the value returned will be\nnull in that case, but it could also have defaulted to a value.\n\nSometimes, the `of` method returns the data rather than the inherited\nwidget; for example, in this case it could have returned a [Color] instead\nof the `FrogColor` widget.\n\nOccasionally, the inherited widget is an implementation detail of another\nclass, and is therefore private. The `of` method in that case is typically\nput on the public class instead. For example, [Theme] is implemented as a\n[StatelessWidget] that builds a private inherited widget; [Theme.of] looks\nfor that inherited widget using [BuildContext.inheritFromWidgetOfExactType]\nand then returns the [ThemeData].\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressDraggable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child draggable starting from long press.", "detail": "", "kind": 7, "label": "LongPressDraggable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls how [Scrollable] widgets behave in a subtree.\n\nThe scroll configuration determines the [ScrollPhysics] and viewport\ndecorations used by descendants of [child].", "detail": "", "kind": 7, "label": "ScrollConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interactive button within either material's [BottomNavigationBar]\nor the iOS themed [CupertinoTabBar] with an icon and title.\n\nThis class is rarely used in isolation. It is typically embedded in one of\nthe bottom navigation widgets above.\n\nSee also:\n\n * [BottomNavigationBar]\n * <https://material.io/design/components/bottom-navigation.html>\n * [CupertinoTabBar]\n * <https://developer.apple.com/ios/human-interface-guidelines/bars/tab-bars>", "detail": "", "kind": 7, "label": "BottomNavigationBarItem" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that enables inspecting the child widget's structure.\n\nSelect a location on your device or emulator and view what widgets and\nrender object that best matches the location. An outline of the selected\nwidget and terse summary information is shown on device with detailed\ninformation is shown in the observatory or in IntelliJ when using the\nFlutter Plugin.\n\nThe inspector has a select mode and a view mode.\n\nIn the select mode, tapping the device selects the widget that best matches\nthe location of the touch and switches to view mode. Dragging a finger on\nthe device selects the widget under the drag location but does not switch\nmodes. Touching the very edge of the bounding box of a widget triggers\nselecting the widget even if another widget that also overlaps that\nlocation would otherwise have priority.\n\nIn the view mode, the previously selected widget is outlined, however,\ntouching the device has the same effect it would have if the inspector\nwasn't present. This allows interacting with the application and viewing how\nthe selected widget changes position. Clicking on the select icon in the\nbottom left corner of the application switches back to select mode.", "detail": "", "kind": 7, "label": "WidgetInspector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A graphical icon widget drawn with a glyph from a font described in\nan [IconData] such as material's predefined [IconData]s in [Icons].\n\nIcons are not interactive. For an interactive icon, consider material's\n[IconButton].\n\nThere must be an ambient [Directionality] widget when using [Icon].\nTypically this is introduced automatically by the [WidgetsApp] or\n[MaterialApp].\n\nThis widget assumes that the rendered icon is squared. Non-squared icons may\nrender incorrectly.\n\n\nThis example shows how to use [Icon] to create an addition icon, in the\ncolor pink, and 30 x 30 pixels in size.\n\n```dart\nIcon(\n Icons.add,\n color: Colors.pink,\n size: 30.0,\n)\n```\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [Icons], for the list of available icons for use with this class.\n * [IconTheme], which provides ambient configuration for icons.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "Icon" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidgetBaseState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations that need to rebuild their\nwidget tree as the animation runs.\n\nThis class calls [build] each frame that the animation tickets. For a\nvariant that does not rebuild each frame, consider subclassing\n[ImplicitlyAnimatedWidgetState] directly.\n\nSubclasses must implement the [forEachTween] method to allow\n[AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields\nand animate them.", "detail": "", "kind": 7, "label": "AnimatedWidgetBaseState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePopDisposition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates whether the current route should be popped.\n\nUsed as the return value for [Route.willPop].\n\nSee also:\n\n * [WillPopScope], a widget that hooks into the route's [Route.willPop]\n mechanism.", "detail": "", "kind": 13, "label": "RoutePopDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rounded rectangle.\n\nBy default, [ClipRRect] uses its own bounds as the base rectangle for the\nclip, but the size and location of the clip can be customized using a custom\n[clipper].\n\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Hero", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that marks its child as being a candidate for\n[hero animations](https://flutter.dev/docs/development/ui/animations/hero-animations).\n\nWhen a [PageRoute] is pushed or popped with the [Navigator], the entire\nscreen's content is replaced. An old route disappears and a new route\nappears. If there's a common visual feature on both routes then it can\nbe helpful for orienting the user for the feature to physically move from\none page to the other during the routes' transition. Such an animation\nis called a *hero animation*. The hero widgets \"fly\" in the Navigator's\noverlay during the transition and while they're in-flight they're, by\ndefault, not shown in their original locations in the old and new routes.\n\nTo label a widget as such a feature, wrap it in a [Hero] widget. When\nnavigation happens, the [Hero] widgets on each route are identified\nby the [HeroController]. For each pair of [Hero] widgets that have the\nsame tag, a hero animation is triggered.\n\nIf a [Hero] is already in flight when navigation occurs, its\nflight animation will be redirected to its new destination. The\nwidget shown in-flight during the transition is, by default, the\ndestination route's [Hero]'s child.\n\nFor a Hero animation to trigger, the Hero has to exist on the very first\nframe of the new page's animation.\n\nRoutes must not contain more than one [Hero] for each [tag].\n\n\n## Discussion\n\nHeroes and the [Navigator]'s [Overlay] [Stack] must be axis-aligned for\nall this to work. The top left and bottom right coordinates of each animated\nHero will be converted to global coordinates and then from there converted\nto that [Stack]'s coordinate space, and the entire Hero subtree will, for\nthe duration of the animation, be lifted out of its original place, and\npositioned on that stack. If the [Hero] isn't axis aligned, this is going to\nfail in a rather ugly fashion. Don't rotate your heroes!\n\nTo make the animations look good, it's critical that the widget tree for the\nhero in both locations be essentially identical. The widget of the *target*\nis, by default, used to do the transition: when going from route A to route\nB, route B's hero's widget is placed over route A's hero's widget. If a\n[flightShuttleBuilder] is supplied, its output widget is shown during the\nflight transition instead.\n\nBy default, both route A and route B's heroes are hidden while the\ntransitioning widget is animating in-flight above the 2 routes.\n[placeholderBuilder] can be used to show a custom widget in their place\ninstead once the transition has taken flight.\n\nDuring the transition, the transition widget is animated to route B's hero's\nposition, and then the widget is inserted into route B. When going back from\nB to A, route A's hero's widget is, by default, placed over where route B's\nhero's widget was, and then the animation goes the other way.\n\n### Nested Navigators\n\nIf either or both routes contain nested [Navigator]s, only [Hero]s\ncontained in the top-most routes (as defined by [Route.isCurrent]) *of those\nnested [Navigator]s* are considered for animation. Just like in the\nnon-nested case the top-most routes containing these [Hero]s in the nested\n[Navigator]s have to be [PageRoute]s.\n\n## Parts of a Hero Transition\n\n![Diagrams with parts of the Hero transition.](https://flutter.github.io/assets-for-api-docs/assets/interaction/heroes.png)", "detail": "", "kind": 7, "label": "Hero" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling container that animates items when they are inserted or removed.\n\nThis widget's [AnimatedListState] can be used to dynamically insert or remove\nitems. To refer to the [AnimatedListState] either provide a [GlobalKey] or\nuse the static [of] method from an item's input callback.\n\nThis widget is similar to one created by [ListView.builder].", "detail": "", "kind": 7, "label": "AnimatedList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Scrollable] to build the viewport through which the\nscrollable content is displayed.", "detail": "(BuildContext context, ViewportOffset position) → Widget", "kind": 7, "label": "ViewportBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraintsTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BoxConstraints].\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[BoxConstraints.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BoxConstraintsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses an [InheritedWidget] as its configuration.", "detail": "", "kind": 7, "label": "InheritedElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformFollower", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that follows a [CompositedTransformTarget].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\napplies a transformation that causes it to provide its child with a\ncoordinate space that matches that of the linked [CompositedTransformTarget]\nwidget, offset by [offset].\n\nThe [LayerLink] object used as the [link] must be the same object as that\nprovided to the matching [CompositedTransformTarget].\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nthis [CompositedTransformFollower].\n\nHit testing on descendants of this widget will only work if the target\nposition is within the box that this widget's parent considers to be\nhittable. If the parent covers the screen, this is trivially achievable, so\nthis widget is usually used as the root of an [OverlayEntry] in an app-wide\n[Overlay] (e.g. as created by the [MaterialApp] widget's [Navigator]).\n\nSee also:\n\n * [CompositedTransformTarget], the widget that this widget can target.\n * [FollowerLayer], the layer that implements this widget's logic.\n * [Transform], which applies an arbitrary transform to a child.", "detail": "", "kind": 7, "label": "CompositedTransformFollower" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableText", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A basic text input field.\n\nThis widget interacts with the [TextInput] service to let the user edit the\ntext it contains. It also provides scrolling, selection, and cursor\nmovement. This widget does not provide any focus management (e.g.,\ntap-to-focus).\n\n## Input Actions\n\nA [TextInputAction] can be provided to customize the appearance of the\naction button on the soft keyboard for Android and iOS. The default action\nis [TextInputAction.done].\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\nEditableText receives focus. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\n## Lifecycle\n\nUpon completion of editing, like pressing the \"done\" button on the keyboard,\ntwo actions take place:\n\n 1st: Editing is finalized. The default behavior of this step includes\n an invocation of [onChanged]. That default behavior can be overridden.\n See [onEditingComplete] for details.\n\n 2nd: [onSubmitted] is invoked with the user's input value.\n\n[onSubmitted] can be used to manually move focus to another input widget\nwhen a user finishes with the currently focused input widget.\n\nRather than using this widget directly, consider using [TextField], which\nis a full-featured, material-design text input field with placeholder text,\nlabels, and [Form] integration.\n\n## Gesture Events Handling\n\nThis widget provides rudimentary, platform-agnostic gesture handling for\nuser actions such as tapping, long-pressing and scrolling when\n[rendererIgnoresPointer] is false (false by default). To tightly conform\nto the platform behavior with respect to input gestures in text fields, use\n[TextField] or [CupertinoTextField]. For custom selection behavior, call\nmethods such as [RenderEditable.selectPosition],\n[RenderEditable.selectWord], etc. programmatically.\n\nSee also:\n\n * [TextField], which is a full-featured, material-design text input field\n with placeholder text, labels, and [Form] integration.", "detail": "", "kind": 7, "label": "EditableText" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an editable text field.\n\nWhenever the user modifies a text field with an associated\n[TextEditingController], the text field updates [value] and the controller\nnotifies its listeners. Listeners can then read the [text] and [selection]\nproperties to learn what the user has typed or how the selection has been\nupdated.\n\nSimilarly, if you modify the [text] or [selection] properties, the text\nfield will be notified and will update itself appropriately.\n\nA [TextEditingController] can also be used to provide an initial value for a\ntext field. If you build a text field with a controller that already has\n[text], the text field will use that text as its initial value.\n\nThe [text] or [selection] properties can be set from within a listener\nadded to this controller. If both properties need to be changed then the\ncontroller's [value] should be set instead.\n\nThis example creates a [TextField] with a [TextEditingController] whose\nchange listener forces the entered text to be lower case and keeps the\ncursor at the end of the input.\n\n```dart\nfinal _controller = TextEditingController();\n\nvoid initState() {\n _controller.addListener(() {\n final text = _controller.text.toLowerCase();\n _controller.value = _controller.value.copyWith(\n text: text,\n selection: TextSelection(baseOffset: text.length, extentOffset: text.length),\n composing: TextRange.empty,\n );\n });\n super.initState();\n}\n\nvoid dispose() {\n _controller.dispose();\n super.dispose();\n}\n\nWidget build(BuildContext context) {\n return Scaffold(\n body: Container(\n alignment: Alignment.center,\n padding: const EdgeInsets.all(6),\n child: TextFormField(\n controller: _controller,\n decoration: InputDecoration(border: OutlineInputBorder()),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [TextField], which is a Material Design text field that can be controlled\n with a [TextEditingController].\n * [EditableText], which is a raw region of editable text that can be\n controlled with a [TextEditingController].", "detail": "", "kind": 7, "label": "TextEditingController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsApp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience class that wraps a number of widgets that are commonly\nrequired for an application.\n\nOne of the primary roles that [WidgetsApp] provides is binding the system\nback button to popping the [Navigator] or quitting the application.\n\nSee also: [CheckedModeBanner], [DefaultTextStyle], [MediaQuery],\n[Localizations], [Title], [Navigator], [Overlay], [SemanticsDebugger] (the\nwidgets wrapped by this one).", "detail": "", "kind": 7, "label": "WidgetsApp" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for scroll views whose items have the same size.\n\nSimilar to a standard [ScrollController] but with the added convenience\nmechanisms to read and go to item indices rather than a raw pixel scroll\noffset.\n\nSee also:\n\n * [ListWheelScrollView], a scrollable view widget with fixed size items\n that this widget controls.\n * [FixedExtentMetrics], the `metrics` property exposed by\n [ScrollNotification] from [ListWheelScrollView] which can be used\n to listen to the current item index on a push basis rather than polling\n the [FixedExtentScrollController].", "detail": "", "kind": 7, "label": "FixedExtentScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays an image.\n\nSeveral constructors are provided for the various ways that an image can be\nspecified:\n\n * [new Image], for obtaining an image from an [ImageProvider].\n * [new Image.asset], for obtaining an image from an [AssetBundle]\n using a key.\n * [new Image.network], for obtaining an image from a URL.\n * [new Image.file], for obtaining an image from a [File].\n * [new Image.memory], for obtaining an image from a [Uint8List].\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\nTo automatically perform pixel-density-aware asset resolution, specify the\nimage using an [AssetImage] and make sure that a [MaterialApp], [WidgetsApp],\nor [MediaQuery] widget exists above the [Image] widget in the widget tree.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nSee also:\n\n * [Icon], which shows an image from a font.\n * [new Ink.image], which is the preferred way to show an image in a\n material application (especially if the image is in a [Material] and will\n have an [InkWell] on top of it).\n * [Image](https://api.flutter.dev/flutter/dart-ui/Image-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspectorService", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Service used by GUI tools to interact with the [WidgetInspector].\n\nCalls to this object are typically made from GUI tools such as the [Flutter\nIntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nusing the [Dart VM Service protocol](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md).\nThis class uses its own object id and manages object lifecycles itself\ninstead of depending on the [object ids](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#getobject)\nspecified by the VM Service Protocol because the VM Service Protocol ids\nexpire unpredictably. Object references are tracked in groups so that tools\nthat clients can use dereference all objects in a group with a single\noperation making it easier to avoid memory leaks.\n\nAll methods in this class are appropriate to invoke from debugging tools\nusing the Observatory service protocol to evaluate Dart expressions of the\nform `WidgetInspectorService.instance.methodName(arg1, arg2, ...)`. If you\nmake changes to any instance method of this class you need to verify that\nthe [Flutter IntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nwidget inspector support still works with the changes.\n\nAll methods returning String values return JSON.", "detail": "", "kind": 7, "label": "WidgetInspectorService" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorber", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[SliverOverlapInjector].\n\nSee also:\n\n * [NestedScrollView], whose documentation has sample code showing how to\n use this widget.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned without\ncommitting to a specific [TextDirection].\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nA [PositionedDirectional] widget must be a descendant of a [Stack], and the\npath from the [PositionedDirectional] widget to its enclosing [Stack] must\ncontain only [StatelessWidget]s or [StatefulWidget]s (not other kinds of\nwidgets, like [RenderObjectWidget]s).\n\nIf a widget is wrapped in a [PositionedDirectional], then it is a\n_positioned_ widget in its [Stack]. If the [top] property is non-null, the\ntop edge of this child/ will be positioned [top] layout units from the top\nof the stack widget. The [start], [bottom], and [end] properties work\nanalogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [start] and [end] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nSee also:\n\n * [Positioned], which specifies the widget's position visually.\n * [Positioned.directional], which also specifies the widget's horizontal\n position using [start] and [end] but has an explicit [TextDirection].", "detail": "", "kind": 7, "label": "PositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsDebugger", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that visualizes the semantics for the child.\n\nThis widget is useful for understand how an app presents itself to\naccessibility technology.", "detail": "", "kind": 7, "label": "SemanticsDebugger" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPadding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that applies padding on each side of another sliver.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverPadding]\nis a basic sliver that insets another sliver by applying padding on each\nside.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a [SliverPersistentHeader] with\n`pinned:true` will cause the app bar to overlap earlier slivers (contrary to\nthe normal behavior of pinned app bars), and while the app bar is pinned,\nthe padding will scroll away.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.", "detail": "", "kind": 7, "label": "SliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [SingleChildRenderObjectWidget] as its configuration.\n\nThe child is optional.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [RenderObjectWithChildMixin] mixin. Such widgets are\nexpected to inherit from [SingleChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "SingleChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQueryData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Information about a piece of media (e.g., a window).\n\nFor example, the [MediaQueryData.size] property contains the width and\nheight of the current window.\n\nTo obtain the current [MediaQueryData] for a given [BuildContext], use the\n[MediaQuery.of] function. For example, to obtain the size of the current\nwindow, use `MediaQuery.of(context).size`.\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nMediaQueryData includes two [EdgeInsets] values:\n[padding] and [viewInsets]. These\nvalues reflect the configuration of the device and are used by\nmany top level widgets, like [SafeArea] and the Cupertino and\nMaterial scaffold widgets. The padding value defines areas that\nmight not be completely visible, like the display \"notch\" on the\niPhone X. The viewInsets value defines areas that aren't visible at\nall, typically because they're obscured by the device's keyboard.\n\nThe viewInsets and padding values are independent, they're both\nmeasured from the edges of the MediaQuery widget's bounds. The\nbounds of the top level MediaQuery created by [WidgetsApp] are the\nsame as the window that contains the app.\n\nWidgets whose layouts consume space defined by [viewInsets] or\n[padding] should enclose their children in secondary MediaQuery\nwidgets that reduce those properties by the same amount.\nThe [removePadding] and [removeInsets] methods are useful for this.", "detail": "", "kind": 7, "label": "MediaQueryData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalBarrier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nSee also:\n\n * [ModalRoute], which indirectly uses this widget.\n * [AnimatedModalBarrier], which is similar but takes an animated [color]\n instead of a single color value.", "detail": "", "kind": 7, "label": "ModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that builds a widget given a child.\n\nThe child should typically be part of the returned widget tree.\n\nUsed by [AnimatedBuilder.builder], as well as [WidgetsApp.builder] and\n[MaterialApp.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context, Widget child) → Widget", "kind": 7, "label": "TransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyleTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DefaultTextStyle] that animates the different properties\nof its [TextStyle].\n\nSee also:\n\n * [DefaultTextStyle], which also defines a [TextStyle] for its descendants\n but is not animated.", "detail": "", "kind": 7, "label": "DefaultTextStyleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderNestedScrollViewViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [RenderViewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "RenderNestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have no children.", "detail": "", "kind": 7, "label": "LeafRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Viewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside.\n\n[Viewport] is the visual workhorse of the scrolling machinery. It displays a\nsubset of its children according to its own dimensions and the given\n[offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[Viewport] hosts a bidirectional list of slivers, anchored on a [center]\nsliver, which is placed at the zero scroll offset. The center widget is\ndisplayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[Viewport] cannot contain box children directly. Instead, use a\n[SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [Viewport] into widgets that are easier to use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [ShrinkWrappingViewport], a variant of [Viewport] that shrink-wraps its\n contents along the main axis.", "detail": "", "kind": 7, "label": "Viewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a shape.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\nFor shapes that cannot be expressed as a rectangle with rounded corners use\n[PhysicalShape].\n\nSee also:\n\n * [DecoratedBox], which can apply more arbitrary shadow effects.\n * [ClipRect], which applies a clip to its child.", "detail": "", "kind": 7, "label": "PhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQuery", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a subtree in which media queries resolve to the given data.\n\nFor example, to learn the size of the current media (e.g., the window\ncontaining your app), you can read the [MediaQueryData.size] property from\nthe [MediaQueryData] returned by [MediaQuery.of]:\n`MediaQuery.of(context).size`.\n\nQuerying the current media using [MediaQuery.of] will cause your widget to\nrebuild automatically whenever the [MediaQueryData] changes (e.g., if the\nuser rotates their device).\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nSee also:\n\n * [WidgetsApp] and [MaterialApp], which introduce a [MediaQuery] and keep\n it up to date with the current screen metrics as they change.\n * [MediaQueryData], the data structure that represents the metrics.", "detail": "", "kind": 7, "label": "MediaQuery" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionGestureDetector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A gesture detector to respond to non-exclusive event chains for a text field.\n\nAn ordinary [GestureDetector] configured to handle events like tap and\ndouble tap will only recognize one or the other. This widget detects both:\nfirst the tap and then, if another tap down occurs within a time limit, the\ndouble tap.\n\nSee also:\n\n * [TextField], a Material text field which uses this gesture detector.\n * [CupertinoTextField], a Cupertino text field which uses this gesture\n detector.", "detail": "", "kind": 7, "label": "TextSelectionGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Baseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its child according to the child's baseline.\n\nThis widget shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child. If [baseline] is less than the distance from\nthe top of the child to the baseline of the child, then the child\nis top-aligned instead.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [Center], a widget that centers its child within itself.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Baseline" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LabeledGlobalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key with a debugging label.\n\nThe debug label is useful for documentation and for debugging. The label\ndoes not affect the key's identity.", "detail": "", "kind": 7, "label": "LabeledGlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of an icon fulfilled by a font glyph.\n\nSee [Icons] for a number of predefined icons available for material\ndesign applications.", "detail": "", "kind": 7, "label": "IconData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches iOS.\n\nSee also:\n\n * [ClampingScrollSimulation], which implements Android scroll physics.", "detail": "", "kind": 7, "label": "BouncingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillRemaining", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[SliverFillRemaining] sizes its child to fill the viewport in the cross axis\nand to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPositionWithSingleContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll position that manages scroll activities for a single\n[ScrollContext].\n\nThis class is a concrete subclass of [ScrollPosition] logic that handles a\nsingle [ScrollContext], such as a [Scrollable]. An instance of this class\nmanages [ScrollActivity] instances, which change what content is visible in\nthe [Scrollable]'s [Viewport].\n\nSee also:\n\n * [ScrollPosition], which defines the underlying model for a position\n within a [Scrollable] but is agnostic as to how that position is\n changed.\n * [ScrollView] and its subclasses such as [ListView], which use\n [ScrollPositionWithSingleContext] to manage their scroll position.\n * [ScrollController], which can manipulate one or more [ScrollPosition]s,\n and which uses [ScrollPositionWithSingleContext] as its default class for\n scroll positions.", "detail": "", "kind": 7, "label": "ScrollPositionWithSingleContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlowingOverscrollIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A visual indication that a scroll view has overscrolled.\n\nA [GlowingOverscrollIndicator] listens for [ScrollNotification]s in order\nto control the overscroll indication. These notifications are typically\ngenerated by a [ScrollView], such as a [ListView] or a [GridView].\n\n[GlowingOverscrollIndicator] generates [OverscrollIndicatorNotification]\nbefore showing an overscroll indication. To prevent the indicator from\nshowing the indication, call [OverscrollIndicatorNotification.disallowGlow]\non the notification.\n\nCreated automatically by [ScrollBehavior.buildViewportChrome] on platforms\n(e.g., Android) that commonly use this type of overscroll indication.\n\nIn a [MaterialApp], the edge glow color is the [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "GlowingOverscrollIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverflowBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nSee also:\n\n * [RenderConstrainedOverflowBox] for details about how [OverflowBox] is\n rendered.\n * [SizedOverflowBox], a widget that is a specific size but passes its\n original constraints through to its child, which may then overflow.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], a box with a specified size.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "OverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableCanceledCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] is dropped without being accepted by a [DragTarget].\n\nUsed by [Draggable.onDraggableCanceled].", "detail": "(Velocity velocity, Offset offset) → void", "kind": 7, "label": "DraggableCanceledCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShrinkWrappingViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside and shrink wraps its children in the\nmain axis.\n\n[ShrinkWrappingViewport] displays a subset of its children according to its\nown dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[ShrinkWrappingViewport] differs from [Viewport] in that [Viewport] expands\nto fill the main axis whereas [ShrinkWrappingViewport] sizes itself to match\nits children in the main axis. This shrink wrapping behavior is expensive\nbecause the children, and hence the viewport, could potentially change size\nwhenever the [offset] changes (e.g., because of a collapsing header).\n\n[ShrinkWrappingViewport] cannot contain box children directly. Instead, use\na [SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [ShrinkWrappingViewport] into widgets that are easier to\n use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [Viewport], a viewport that does not shrink-wrap its contents.", "detail": "", "kind": 7, "label": "ShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragSelectionUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that's dragging to select text has moved again.\n\nThe first argument [startDetails] contains the details of the event that\ninitiated the dragging.\n\nThe second argument [updateDetails] contains the details of the current\npointer movement. It's the same as the one passed to [DragGestureRecognizer.onUpdate].\n\nThis signature is different from [GestureDragUpdateCallback] to make it\neasier for various text fields to use [TextSelectionGestureDetector] without\nhaving to store the start position.", "detail": "(DragStartDetails startDetails, DragUpdateDetails updateDetails) → void", "kind": 7, "label": "DragSelectionUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverWithKeepAliveWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have [KeepAlive] children.", "detail": "", "kind": 7, "label": "SliverWithKeepAliveWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrackingScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollController] whose [initialScrollOffset] tracks its most recently\nupdated [ScrollPosition].\n\nThis class can be used to synchronize the scroll offset of two or more\nlazily created scroll views that share a single [TrackingScrollController].\nIt tracks the most recently updated scroll position and reports it as its\n`initialScrollOffset`.\n\n\nIn this example each [PageView] page contains a [ListView] and all three\n[ListView]'s share a [TrackingScrollController]. The scroll offsets of all\nthree list views will track each other, to the extent that's possible given\nthe different list lengths.\n\n```dart\nPageView(\n children: <Widget>[\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),\n ),\n ],\n)\n```\n\nIn this example the `_trackingController` would have been created by the\nstateful widget that built the widget tree.", "detail": "", "kind": 7, "label": "TrackingScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for stateful widgets that have exactly one inflated instance in\nthe tree.\n\nSuch widgets must be given a [GlobalKey]. This key can be generated by the\nsubclass from its [Type] object, e.g. by calling `super(key: new\nGlobalObjectKey(MyWidget))` where `MyWidget` is the name of the subclass.\n\nSince only one instance can be inflated at a time, there is only ever one\ncorresponding [State] object. That object is exposed, for convenience, via\nthe [currentState] property.\n\nWhen subclassing [UniqueWidget], provide the corresponding [State] subclass\nas the type argument.", "detail": "", "kind": 7, "label": "UniqueWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\nScrollable widgets consist of three pieces:\n\n 1. A [Scrollable] widget, which listens for various user gestures and\n implements the interaction design for scrolling.\n 2. A viewport widget, such as [Viewport] or [ShrinkWrappingViewport], which\n implements the visual design for scrolling by displaying only a portion\n of the widgets inside the scroll view.\n 3. One or more slivers, which are widgets that can be composed to created\n various scrolling effects, such as lists, grids, and expanding headers.\n\n[ScrollView] helps orchestrate these pieces by creating the [Scrollable] and\nthe viewport and deferring to its subclass to create the slivers.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatusTransitionWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given animation changes status.", "detail": "", "kind": 7, "label": "StatusTransitionWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutChangedNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the layout of one of the descendants of the object receiving\nthis notification has changed in some way, and that therefore any\nassumptions about that layout are no longer valid.\n\nUseful if, for instance, you're trying to align multiple descendants.\n\nTo listen for notifications in a subtree, use a\n[NotificationListener<LayoutChangedNotification>].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].\n\nIn the widgets library, only the [SizeChangedLayoutNotifier] class and\n[Scrollable] classes dispatch this notification (specifically, they dispatch\n[SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).\nTransitions, in particular, do not. Changing one's layout in one's build\nfunction does not cause this notification to be dispatched automatically. If\nan ancestor expects to be notified for any layout change, make sure you\neither only use widgets that never change layout, or that notify their\nancestors when appropriate, or alternatively, dispatch the notifications\nyourself when appropriate.\n\nAlso, since this notification is sent when the layout is changed, it is only\nuseful for paint effects that depend on the layout. If you were to use this\nnotification to change the build, for instance, you would always be one\nframe behind, which would look really ugly and laggy.", "detail": "", "kind": 7, "label": "LayoutChangedNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedModalBarrier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself,\nand can be configured with an animated color value.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nThis widget is similar to [ModalBarrier] except that it takes an animated\n[color] instead of a single color.\n\nSee also:\n\n * [ModalRoute], which uses this widget.", "detail": "", "kind": 7, "label": "AnimatedModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that creates custom scroll effects using slivers.\n\nA [CustomScrollView] lets you supply [slivers] directly to create various\nscrolling effects, such as lists, grids, and expanding headers. For example,\nto create a scroll view that contains an expanding app bar followed by a\nlist and a grid, use a list of three slivers: [SliverAppBar], [SliverList],\nand [SliverGrid].\n\n[Widget]s in these [slivers] must produce [RenderSliver] objects.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n\nThis sample code shows a scroll view that contains a flexible pinned app\nbar, a grid, and an infinite list.\n\n```dart\nCustomScrollView(\n slivers: <Widget>[\n const SliverAppBar(\n pinned: true,\n expandedHeight: 250.0,\n flexibleSpace: FlexibleSpaceBar(\n title: Text('Demo'),\n ),\n ),\n SliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n ),\n SliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n ),\n ],\n)\n```\n\n## Accessibility\n\nA [CustomScrollView] can allow Talkback/VoiceOver to make announcements\nto the user when the scroll state changes. For example, on Android an\nannouncement might be read as \"showing items 1 to 10 of 23\". To produce\nthis announcement, the scroll view needs three pieces of information:\n\n * The first visible child index.\n * The total number of children.\n * The total number of visible children.\n\nThe last value can be computed exactly by the framework, however the first\ntwo must be provided. Most of the higher-level scrollable widgets provide\nthis information automatically. For example, [ListView] provides each child\nwidget with a semantic index automatically and sets the semantic child\ncount to the length of the list.\n\nTo determine visible indexes, the scroll view needs a way to associate the\ngenerated semantics of each scrollable item with a semantic index. This can\nbe done by wrapping the child widgets in an [IndexedSemantics].\n\nThis semantic index is not necessarily the same as the index of the widget in\nthe scrollable, because some widgets may not contribute semantic\ninformation. Consider a [new ListView.separated()]: every other widget is a\ndivider with no semantic information. In this case, only odd numbered\nwidgets have a semantic index (equal to the index ~/ 2). Furthermore, the\ntotal number of children in this example would be half the number of\nwidgets. (The [new ListView.separated()] constructor handles this\nautomatically; this is only used here as an example.)\n\nThe total number of visible children can be provided by the constructor\nparameter `semanticChildCount`. This should always be the same as the\nnumber of widgets wrapped in [IndexedSemantics].\n\nSee also:\n\n * [SliverList], which is a sliver that displays linear list of children.\n * [SliverFixedExtentList], which is a more efficient sliver that displays\n linear list of children that have the same extent along the scroll axis.\n * [SliverGrid], which is a sliver that displays a 2D array of children.\n * [SliverPadding], which is a sliver that adds blank space around another\n sliver.\n * [SliverAppBar], which is a sliver that displays a header that can expand\n and float as the scroll view scrolls.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].\n * [IndexedSemantics], which allows annotating child lists with an index\n for scroll announcements.", "detail": "", "kind": 7, "label": "CustomScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's size.\n\nSimilar to the [Builder] widget except that the framework calls the [builder]\nfunction at layout time and provides the parent widget's constraints. This\nis useful when the parent constrains the child's size and doesn't depend on\nthe child's intrinsic size. The [LayoutBuilder]'s final size will match its\nchild's size.\n\n\nIf the child should be smaller than the parent, consider wrapping the child\nin an [Align] widget. If the child might want to be bigger, consider\nwrapping it in a [SingleChildScrollView].\n\nSee also:\n\n * [Builder], which calls a `builder` function at build time.\n * [StatefulBuilder], which passes its `builder` function a `setState` callback.\n * [CustomSingleChildLayout], which positions its child during layout.", "detail": "", "kind": 7, "label": "LayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPaint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [CustomPaint] first asks its [painter] to paint on the\ncurrent canvas, then it paints its child, and then, after painting its\nchild, it asks its [foregroundPainter] to paint. The coordinate system of the\ncanvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing [CustomPainter].\n\n\nBecause custom paint calls its painters during paint, you cannot call\n`setState` or `markNeedsLayout` during the callback (the layout for this\nframe has already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [size], which defaults to\n[Size.zero]. [size] must not be null.\n\n[isComplex] and [willChange] are hints to the compositor's raster cache\nand must not be null.\n\n\nThis example shows how the sample custom painter shown at [CustomPainter]\ncould be used in a [CustomPaint] widget to display a background to some\ntext.\n\n```dart\nCustomPaint(\n painter: Sky(),\n child: Center(\n child: Text(\n 'Once upon a time...',\n style: const TextStyle(\n fontSize: 40.0,\n fontWeight: FontWeight.w900,\n color: Color(0xFFFFFFFF),\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomPainter], the class to extend when creating custom painters.\n * [Canvas], the class that a custom painter uses to paint.", "detail": "", "kind": 7, "label": "CustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays a [dart:ui.Image] directly.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nThis widget is rarely used directly. Instead, consider using [Image].", "detail": "", "kind": 7, "label": "RawImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicHeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Element that supports building children lazily for [ListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotatedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rotates its child by a integral number of quarter turns.\n\nUnlike [Transform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.\n\n\nThis snippet rotates the child (some [Text]) so that it renders from bottom\nto top, like an axis label on a graph:\n\n```dart\nRotatedBox(\n quarterTurns: 3,\n child: const Text('Hello World!'),\n)\n```\n\nSee also:\n\n * [Transform], which is a paint effect that allows you to apply an\n arbitrary transform to a child.\n * [new Transform.rotate], which applies a rotation paint effect.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "RotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapInjector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [RenderSliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [RenderViewport] (probably a [RenderNestedScrollViewViewport]), so\nthat it will always be laid out before the [RenderSliverOverlapInjector]\nduring a particular frame.", "detail": "", "kind": 7, "label": "RenderSliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSingleChildLayout", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.\n\nSee also:\n\n * [SingleChildLayoutDelegate], which controls the layout of the child.\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [FractionallySizedBox], which sizes its child based on a fraction of its own\n size and positions the child according to an [Alignment] value.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.", "detail": "", "kind": 7, "label": "CustomSingleChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the subtree through which this notification bubbles must be\nkept alive even if it would normally be discarded as an optimization.\n\nFor example, a focused text field might fire this notification to indicate\nthat it should not be disposed even if the user scrolls the field off\nscreen.\n\nEach [KeepAliveNotification] is configured with a [handle] that consists of\na [Listenable] that is triggered when the subtree no longer needs to be kept\nalive.\n\nThe [handle] should be triggered any time the sending widget is removed from\nthe tree (in [State.deactivate]). If the widget is then rebuilt and still\nneeds to be kept alive, it should immediately send a new notification\n(possible with the very same [Listenable]) during build.\n\nThis notification is listened to by the [AutomaticKeepAlive] widget, which\nis added to the tree automatically by [SliverList] (and [ListView]) and\n[SliverGrid] (and [GridView]) widgets.\n\nFailure to trigger the [handle] in the manner described above will likely\ncause the [AutomaticKeepAlive] to lose track of whether the widget should be\nkept alive or not, leading to memory leaks or lost data. For example, if the\nwidget that requested keep-alive is removed from the subtree but doesn't\ntrigger its [Listenable] on the way out, then the subtree will continue to\nbe kept alive until the list itself is disposed. Similarly, if the\n[Listenable] is triggered while the widget needs to be kept alive, but a new\n[KeepAliveNotification] is not immediately sent, then the widget risks being\ngarbage collected while it wants to be kept alive.\n\nIt is an error to use the same [handle] in two [KeepAliveNotification]s\nwithin the same [AutomaticKeepAlive] without triggering that [handle] before\nthe second notification is sent.\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses\n[KeepAliveNotification] internally.", "detail": "", "kind": 7, "label": "KeepAliveNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a route for the given route settings.\n\nUsed by [Navigator.onGenerateRoute] and [Navigator.onUnknownRoute].", "detail": "(RouteSettings settings) → Route<dynamic>", "kind": 7, "label": "RouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPath", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a path.\n\nCalls a callback on a delegate whenever the widget is to be\npainted. The callback returns a path and the widget prevents the\nchild from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized widgets:\n\n * To clip to a rectangle, consider [ClipRect].\n * To clip to an oval or circle, consider [ClipOval].\n * To clip to a rounded rectangle, consider [ClipRRect].\n\nTo clip to a particular [ShapeBorder], consider using either the\n[ClipPath.shape] static method or the [ShapeBorderClipper] custom clipper\nclass.", "detail": "", "kind": 7, "label": "ClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElementVisitor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback to [BuildContext.visitChildElements].\n\nThe argument is the child being visited.\n\nIt is safe to call `element.visitChildElements` reentrantly within\nthis callback.", "detail": "(Element element) → void", "kind": 7, "label": "ElementVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormField", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single form field.\n\nThis widget maintains the current state of the form field, so that updates\nand validation errors are visually reflected in the UI.\n\nWhen used inside a [Form], you can use methods on [FormState] to query or\nmanipulate the form data as a whole. For example, calling [FormState.save]\nwill invoke each [FormField]'s [onSaved] callback in turn.\n\nUse a [GlobalKey] with [FormField] if you want to retrieve its current\nstate, for example if you want one form field to depend on another.\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nSee also:\n\n * [Form], which is the widget that aggregates the form fields.\n * [TextField], which is a commonly used form field for entering text.", "detail": "", "kind": 7, "label": "FormField" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the widgets layer and the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListenerCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [Notification] listeners.\n\nReturn true to cancel the notification bubbling. Return false to allow the\nnotification to continue to be dispatched to further ancestors.\n\nUsed by [NotificationListener.onNotification].", "detail": "(T notification) → bool", "kind": 7, "label": "NotificationListenerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidgetState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations.\n\n[ImplicitlyAnimatedWidgetState] requires that subclasses respond to the\nanimation, themselves. If you would like `setState()` to be called\nautomatically as the animation changes, use [AnimatedWidgetBaseState].\n\nSubclasses must implement the [forEachTween] method to allow\n[ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's\nfields and animate them.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidgetState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteTransitionsBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's transitions.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildTransitions] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) → Widget", "kind": 7, "label": "RouteTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserScrollNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that the user has changed the direction in which they are\nscrolling.\n\nSee also:\n\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "UserScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusManager", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the focus tree.\n\nThe focus tree keeps track of which [FocusNode] is the user's current\nkeyboard focus. The widget that owns the [FocusNode] often listens for\nkeyboard events.\n\nThe focus manager is responsible for holding the [FocusScopeNode] that is\nthe root of the focus tree and tracking which [FocusNode] has the overall\nfocus.\n\nThe [FocusManager] is held by the [WidgetsBinding] as\n[WidgetsBinding.focusManager]. The [FocusManager] is rarely accessed\ndirectly. Instead, to find the [FocusScopeNode] for a given [BuildContext],\nuse [FocusScope.of].\n\nThe [FocusManager] knows nothing about [FocusNode]s other than the one that\nis currently focused. If a [FocusScopeNode] is removed, then the\n[FocusManager] will attempt to focus the next [FocusScopeNode] in the focus\ntree that it maintains, but if the current focus in that [FocusScopeNode] is\nnull, it will stop there, and no [FocusNode] will have focus.\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusManager" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for [PageView].\n\nA page controller lets you manipulate which page is visible in a [PageView].\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nSee also:\n\n * [PageView], which is the widget this object controls.", "detail": "", "kind": 7, "label": "PageController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Align", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that aligns its child within itself and optionally sizes itself\nbased on the child's size.\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\n## How it works\n\nThe [alignment] property describes a point in the `child`'s coordinate system\nand a different point in the coordinate system of this widget. The [Align]\nwidget positions the `child` such that both points are lined up on top of\neach other.\n\nThe [Align] widget in this example uses one of the defined constants from\n[Alignment], [topRight]. This places the [FlutterLogo] in the top right corner\nof the parent blue [Container].\n\n![A blue square container with the Flutter logo in the top right corner.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_constant.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment.topRight,\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [Alignment] used in the following example defines a single point:\n\n * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height\n of [FlutterLogo]/2 + height of [FlutterLogo]/2) = (36.0, 48.0).\n\nThe [Alignment] class uses a coordinate system with an origin in the center\nof the [Container], as shown with the [Icon] above. [Align] will place the\n[FlutterLogo] at (36.0, 48.0) according to this coordinate system.\n\n![A blue square container with the Flutter logo positioned according to the\nAlignment specified above. A point is marked at the center of the container\nfor the origin of the Alignment coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_alignment.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [FractionalOffset] used in the following example defines two points:\n\n * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0)\n in the coordinate system of the blue container.\n * (0.2 * width of [Align], 0.6 * height of [Align]) = (24.0, 72.0) in the\n coordinate system of the [Align] widget.\n\nThe [Align] widget positions the [FlutterLogo] such that the two points are on\ntop of each other. In this example, the top left of the [FlutterLogo] will\nbe placed at (24.0, 72.0) - (12.0, 36.0) = (12.0, 36.0) from the top left of\nthe [Align] widget.\n\nThe [FractionalOffset] class uses a coordinate system with an origin in the top-left\ncorner of the [Container] in difference to the center-oriented system used in\nthe example above with [Alignment].\n\n![A blue square container with the Flutter logo positioned according to the\nFractionalOffset specified above. A point is marked at the top left corner\nof the container for the origin of the FractionalOffset coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_fractional_offset.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: FractionalOffset(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Center], which is the same as [Align] but with the [alignment] always\n set to [Alignment.center].\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Align" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables or disables tickers (and thus animation controllers) in the widget\nsubtree.\n\nThis only works if [AnimationController] objects are created using\nwidget-aware ticker providers. For example, using a\n[TickerProviderStateMixin] or a [SingleTickerProviderStateMixin].", "detail": "", "kind": 7, "label": "TickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is unique across the entire app.\n\nGlobal keys uniquely identify elements. Global keys provide access to other\nobjects that are associated with elements, such as the a [BuildContext] and,\nfor [StatefulWidget]s, a [State].\n\nWidgets that have global keys reparent their subtrees when they are moved\nfrom one location in the tree to another location in the tree. In order to\nreparent its subtree, a widget must arrive at its new location in the tree\nin the same animation frame in which it was removed from its old location in\nthe tree.\n\nGlobal keys are relatively expensive. If you don't need any of the features\nlisted above, consider using a [Key], [ValueKey], [ObjectKey], or\n[UniqueKey] instead.\n\nYou cannot simultaneously include two widgets in the tree with the same\nglobal key. Attempting to do so will assert at runtime.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "GlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget for a given index, e.g., in a\nlist.\n\nUsed by [ListView.builder] and other APIs that use lazily-generated widgets.\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [TransitionBuilder], which is similar but also takes a child.", "detail": "(BuildContext context, int index) → Widget", "kind": 7, "label": "IndexedWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Column", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a vertical array.\n\nTo cause a child to expand to fill the available vertical space, wrap the\nchild in an [Expanded] widget.\n\nThe [Column] widget does not scroll (and in general it is considered an error\nto have more children in a [Column] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a horizontal variant, see [Row].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example uses a [Column] to arrange three widgets vertically, the last\nbeing made to fill all the remaining space.\n\n```dart\nColumn(\n children: <Widget>[\n Text('Deliver features faster'),\n Text('Craft beautiful UIs'),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\nIn the sample above, the text and the logo are centered on each line. In the\nfollowing example, the [crossAxisAlignment] is set to\n[CrossAxisAlignment.start], so that the children are left-aligned. The\n[mainAxisSize] is set to [MainAxisSize.min], so that the column shrinks to\nfit the children.\n\n```dart\nColumn(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n Text('We move under cover and we move as one'),\n Text('Through the night, we have one shot to live another day'),\n Text('We cannot let a stray gunshot give us away'),\n Text('We will fight up close, seize the moment and stay in it'),\n Text('It’s either that or meet the business end of a bayonet'),\n Text('The code word is ‘Rochambeau,’ dig me?'),\n Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),\n ],\n)\n```\n\n## Troubleshooting\n\n### When the incoming vertical constraints are unbounded\n\nWhen a [Column] has one or more [Expanded] or [Flexible] children, and is\nplaced in another [Column], or in a [ListView], or in some other context\nthat does not provide a maximum height constraint for the [Column], you will\nget an exception at runtime saying that there are children with non-zero\nflex but the vertical constraints are unbounded.\n\nThe problem, as described in the details that accompany that exception, is\nthat using [Flexible] or [Expanded] means that the remaining space after\nlaying out all the other children must be shared equally, but if the\nincoming vertical constraints are unbounded, there is infinite remaining\nspace.\n\nThe key to solving this problem is usually to determine why the [Column] is\nreceiving unbounded vertical constraints.\n\nOne common reason for this to happen is that the [Column] has been placed in\nanother [Column] (without using [Expanded] or [Flexible] around the inner\nnested [Column]). When a [Column] lays out its non-flex children (those that\nhave neither [Expanded] or [Flexible] around them), it gives them unbounded\nconstraints so that they can determine their own dimensions (passing\nunbounded constraints usually signals to the child that it should\nshrink-wrap its contents). The solution in this case is typically to just\nwrap the inner column in an [Expanded] to indicate that it should take the\nremaining space of the outer column, rather than being allowed to take any\namount of room it desires.\n\nAnother reason for this message to be displayed is nesting a [Column] inside\na [ListView] or other vertical scrollable. In that scenario, there really is\ninfinite vertical space (the whole point of a vertical scrolling list is to\nallow infinite space vertically). In such scenarios, it is usually worth\nexamining why the inner [Column] should have an [Expanded] or [Flexible]\nchild: what size should the inner children really be? The solution in this\ncase is typically to remove the [Expanded] or [Flexible] widgets from around\nthe inner children.\n\nFor more discussion about constraints, see [BoxConstraints].\n\n### The yellow and black striped banner\n\nWhen the contents of a [Column] exceed the amount of space available, the\n[Column] overflows, and the contents are clipped. In debug mode, a yellow\nand black striped bar is rendered at the overflowing edge to indicate the\nproblem, and a message is printed below the [Column] saying how much\noverflow was detected.\n\nThe usual solution is to use a [ListView] rather than a [Column], to enable\nthe contents to scroll when vertical space is limited.\n\n## Layout algorithm\n\n_This section describes how a [Column] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Column] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded vertical constraints and the incoming\n horizontal constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight horizontal constraints\n that match the incoming max width.\n2. Divide the remaining vertical space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of vertical space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same horizontal\n constraints as in step 1, but instead of using unbounded vertical\n constraints, use vertical constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The width of the [Column] is the maximum width of the children (which\n will always satisfy the incoming horizontal constraints).\n5. The height of the [Column] is determined by the [mainAxisSize] property.\n If the [mainAxisSize] property is [MainAxisSize.max], then the height of\n the [Column] is the max height of the incoming constraints. If the\n [mainAxisSize] property is [MainAxisSize.min], then the height of the\n [Column] is the sum of heights of the children (subject to the incoming\n constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any vertical\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a horizontal equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may size smaller (leaving some remaining room unused).\n * [SingleChildScrollView], whose documentation discusses some ways to\n use a [Column] inside a scrolling container.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Column" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotationTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the rotation of a widget.\n\nHere's an illustration of the [RotationTransition] widget, with it's [turns]\nanimated by a [CurvedAnimation] set to [Curves.elasticOut]:\nSee also:\n\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "RotationTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldValidator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for validating a form field.\n\nReturns an error string to display if the input is invalid, or null\notherwise.\n\nUsed by [FormField.validator].", "detail": "(T value) → String", "kind": 7, "label": "FormFieldValidator" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAlive", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mark a child as needing to stay alive even when it's in a lazy list that\nwould otherwise remove it.\n\nThis widget is for use in [SliverWithKeepAliveWidget]s, such as\n[SliverGrid] or [SliverList].\n\nThis widget is rarely used directly. The [SliverChildBuilderDelegate] and\n[SliverChildListDelegate] delegates, used with [SliverList] and\n[SliverGrid], as well as the scroll view counterparts [ListView] and\n[GridView], have an `addAutomaticKeepAlives` feature, which is enabled by\ndefault, and which causes [AutomaticKeepAlive] widgets to be inserted around\neach child, causing [KeepAlive] widgets to be automatically added and\nconfigured in response to [KeepAliveNotification]s.\n\nTherefore, to keep a widget alive, it is more common to use those\nnotifications than to directly deal with [KeepAlive] widgets.\n\nIn practice, the simplest way to deal with these notifications is to mix\n[AutomaticKeepAliveClientMixin] into one's [State]. See the documentation\nfor that mixin class for details.", "detail": "", "kind": 7, "label": "KeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that allow the scroll offset to go beyond\nthe bounds of the content, but then bounce the content back to the edge of\nthose bounds.\n\nThis is the behavior typically seen on iOS.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on iOS.\n * [ClampingScrollPhysics], which is the analogous physics for Android's\n clamping behavior.", "detail": "", "kind": 7, "label": "BouncingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageBucket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A storage bucket associated with a page in an app.\n\nUseful for storing per-page state that persists across navigations from one\npage to another.", "detail": "", "kind": 7, "label": "PageStorageBucket" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Stream].\n\n\nWidget rebuilding is scheduled by each interaction, using [State.setState],\nbut is otherwise decoupled from the timing of the stream. The [builder]\nis called at the discretion of the Flutter pipeline, and will thus receive a\ntiming-dependent sub-sequence of the snapshots that represent the\ninteraction with the stream.\n\nAs an example, when interacting with a stream producing the integers\n0 through 9, the [builder] may be called with any ordered sub-sequence\nof the following snapshots that includes the last one (the one with\nConnectionState.done):\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 0)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 1)`\n* ...\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 9)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.done, 9)`\n\nThe actual sequence of invocations of the [builder] depends on the relative\ntiming of events produced by the stream and the build rate of the Flutter\npipeline.\n\nChanging the [StreamBuilder] configuration to another stream during event\ngeneration introduces snapshot pairs of the form:\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.none, 5)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, 5)`\n\nThe latter will be produced only when the new stream is non-null, and the\nformer only when the old stream is non-null.\n\nThe stream may produce errors, resulting in snapshots of the form:\n\n* `new AsyncSnapshot<int>.withError(ConnectionState.active, 'some error')`\n\nThe data and error fields of snapshots produced are only changed when the\nstate is `ConnectionState.active`.\n\nThe initial snapshot data can be controlled by specifying [initialData].\nThis should be used to ensure that the first frame has the expected value,\nas the builder will always be called before the stream listener has a chance\nto be processed.\n\n\nThis sample shows a [StreamBuilder] configuring a text label to show the\nlatest bid received for a lot in an auction. Assume the `_lot` field is\nset by a selector elsewhere in the UI.\n\n```dart\nStreamBuilder<int>(\n stream: _lot?.bids, // a Stream<int> or null\n builder: (BuildContext context, AsyncSnapshot<int> snapshot) {\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n switch (snapshot.connectionState) {\n case ConnectionState.none: return Text('Select lot');\n case ConnectionState.waiting: return Text('Awaiting bids...');\n case ConnectionState.active: return Text('\\$${snapshot.data}');\n case ConnectionState.done: return Text('\\$${snapshot.data} (closed)');\n }\n return null; // unreachable\n },\n)\n```\n\nSee also:\n\n * [ValueListenableBuilder], which wraps a [ValueListenable] instead of a\n [Stream].\n * [StreamBuilderBase], which supports widget building based on a computation\n that spans all interactions made with the stream.", "detail": "", "kind": 7, "label": "StreamBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMask", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a mask generated by a [Shader] to its child.\n\nFor example, [ShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.\n\n\nThis example makes the text look like it is on fire:\n\n```dart\nShaderMask(\n shaderCallback: (Rect bounds) {\n return RadialGradient(\n center: Alignment.topLeft,\n radius: 1.0,\n colors: <Color>[Colors.yellow, Colors.deepOrange.shade900],\n tileMode: TileMode.mirror,\n ).createShader(bounds);\n },\n child: const Text('I’m burning the memories'),\n)\n```\n\nSee also:\n\n * [Opacity], which can apply a uniform alpha effect to its child.\n * [CustomPaint], which lets you draw directly on the canvas.\n * [DecoratedBox], for another approach at decorating child widgets.\n * [BackdropFilter], which applies an image filter to the background.", "detail": "", "kind": 7, "label": "ShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Semantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the widget tree with a description of the meaning of\nthe widgets.\n\nUsed by accessibility tools, search engines, and other semantic analysis\nsoftware to determine the meaning of the application.\n\nSee also:\n\n * [MergeSemantics], which marks a subtree as being a single node for\n accessibility purposes.\n * [ExcludeSemantics], which excludes a subtree from the semantics tree\n (which might be useful if it is, e.g., totally decorative and not\n important to the user).\n * [RenderObject.semanticsAnnotator], the rendering library API through which\n the [Semantics] widget is actually implemented.\n * [SemanticsNode], the object used by the rendering library to represent\n semantics in the semantics tree.\n * [SemanticsDebugger], an overlay to help visualize the semantics tree. Can\n be enabled using [WidgetsApp.showSemanticsDebugger] or\n [MaterialApp.showSemanticsDebugger].", "detail": "", "kind": 7, "label": "Semantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Draggable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dragged from to a [DragTarget].\n\nWhen a draggable widget recognizes the start of a drag gesture, it displays\na [feedback] widget that tracks the user's finger across the screen. If the\nuser lifts their finger while on top of a [DragTarget], that target is given\nthe opportunity to accept the [data] carried by the draggable.\n\nOn multitouch devices, multiple drags can occur simultaneously because there\ncan be multiple pointers in contact with the device at once. To limit the\nnumber of simultaneous drags, use the [maxSimultaneousDrags] property. The\ndefault is to allow an unlimited number of simultaneous drags.\n\nThis widget displays [child] when zero drags are under way. If\n[childWhenDragging] is non-null, this widget instead displays\n[childWhenDragging] when one or more drags are underway. Otherwise, this\nwidget always displays [child].\n\nSee also:\n\n * [DragTarget]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "Draggable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).", "detail": "(TextSelection selection, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a [Dismissible] can be dismissed.", "detail": "", "kind": 13, "label": "DismissDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Positioned", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned.\n\nA [Positioned] widget must be a descendant of a [Stack], and the path from\nthe [Positioned] widget to its enclosing [Stack] must contain only\n[StatelessWidget]s or [StatefulWidget]s (not other kinds of widgets, like\n[RenderObjectWidget]s).\n\n\nIf a widget is wrapped in a [Positioned], then it is a _positioned_ widget\nin its [Stack]. If the [top] property is non-null, the top edge of this child\nwill be positioned [top] layout units from the top of the stack widget. The\n[right], [bottom], and [left] properties work analogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [right] and [left] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nIf all three values on a particular axis are null, then the\n[Stack.alignment] property is used to position the child.\n\nIf all six values are null, the child is a non-positioned child. The [Stack]\nuses only the non-positioned children to size itself.\n\nSee also:\n\n * [PositionedDirectional], which adapts to the ambient [Directionality].", "detail": "", "kind": 7, "label": "Positioned" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is only equal to itself.", "detail": "", "kind": 7, "label": "UniqueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionallySizedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to a fraction of the total available space.\nFor more details about the layout algorithm, see\n[RenderFractionallySizedOverflowBox].\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionallySizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which a single widget can be scrolled.\n\nThis widget is useful when you have a single box that will normally be\nentirely visible, for example a clock face in a time picker, but you need to\nmake sure it can be scrolled if the container gets too small in one axis\n(the scroll direction).\n\nIt is also useful if you need to shrink-wrap in both axes (the main\nscrolling direction as well as the cross axis), as one might see in a dialog\nor pop-up menu. In that case, you might pair the [SingleChildScrollView]\nwith a [ListBody] child.\n\nWhen you have a list of children and do not require cross-axis\nshrink-wrapping behavior, for example a scrolling list that is always the\nwidth of the screen, consider [ListView], which is vastly more efficient\nthat a [SingleChildScrollView] containing a [ListBody] or [Column] with\nmany children.\n\n## Sample code: Using [SingleChildScrollView] with a [Column]\n\nSometimes a layout is designed around the flexible properties of a\n[Column], but there is the concern that in some cases, there might not\nbe enough room to see the entire contents. This could be because some\ndevices have unusually small screens, or because the application can\nbe used in landscape mode where the aspect ratio isn't what was\noriginally envisioned, or because the application is being shown in a\nsmall window in split-screen mode. In any case, as a result, it might\nmake sense to wrap the layout in a [SingleChildScrollView].\n\nSimply doing so, however, usually results in a conflict between the [Column],\nwhich typically tries to grow as big as it can, and the [SingleChildScrollView],\nwhich provides its children with an infinite amount of space.\n\nTo resolve this apparent conflict, there are a couple of techniques, as\ndiscussed below. These techniques should only be used when the content is\nnormally expected to fit on the screen, so that the lazy instantiation of\na sliver-based [ListView] or [CustomScrollView] is not expected to provide\nany performance benefit. If the viewport is expected to usually contain\ncontent beyond the dimensions of the screen, then [SingleChildScrollView]\nwould be very expensive.\n\n### Centering, spacing, or aligning fixed-height content\n\nIf the content has fixed (or intrinsic) dimensions but needs to be spaced out,\ncentered, or otherwise positioned using the [Flex] layout model of a [Column],\nthe following technique can be used to provide the [Column] with a minimum\ndimension while allowing it to shrink-wrap the contents when there isn't enough\nroom to apply these spacing or alignment needs.\n\nA [LayoutBuilder] is used to obtain the size of the viewport (implicitly via\nthe constraints that the [SingleChildScrollView] sees, since viewports\ntypically grow to fit their maximum height constraint). Then, inside the\nscroll view, a [ConstrainedBox] is used to set the minimum height of the\n[Column].\n\nThe [Column] has no [Expanded] children, so rather than take on the infinite\nheight from its [BoxConstraints.maxHeight], (the viewport provides no maximum height\nconstraint), it automatically tries to shrink to fit its children. It cannot\nbe smaller than its [BoxConstraints.minHeight], though, and It therefore\nbecomes the bigger of the minimum height provided by the\n[ConstrainedBox] and the sum of the heights of the children.\n\nIf the children aren't enough to fit that minimum size, the [Column] ends up\nwith some remaining space to allocate as specified by its\n[Column.mainAxisAlignment] argument.\n\nIn this example, the children are spaced out equally, unless there's no more\nroom, in which case they stack vertically and scroll.\n\nWhen using this technique, [Expanded] and [Flexible] are not useful, because\nin both cases the \"available space\" is infinite (since this is in a viewport).\nThe next section describes a technique for providing a maximum height constraint.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: Column(\n mainAxisSize: MainAxisSize.min,\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Container(\n // Another fixed-height child.\n color: const Color(0xff008000), // Green\n height: 120.0,\n ),\n ],\n ),\n ),\n );\n },\n );\n}\n```\n\n### Expanding content to fit the viewport\n\nThe following example builds on the previous one. In addition to providing a\nminimum dimension for the child [Column], an [IntrinsicHeight] widget is used\nto force the column to be exactly as big as its contents. This constraint\ncombines with the [ConstrainedBox] constraints discussed previously to ensure\nthat the column becomes either as big as viewport, or as big as the contents,\nwhichever is biggest.\n\nBoth constraints must be used to get the desired effect. If only the\n[IntrinsicHeight] was specified, then the column would not grow to fit the\nentire viewport when its children were smaller than the whole screen. If only\nthe size of the viewport was used, then the [Column] would overflow if the\nchildren were bigger than the viewport.\n\nThe widget that is to grow to fit the remaining space so provided is wrapped\nin an [Expanded] widget.\n\nThis technique is quite expensive, as it more or less requires that the contents\nof the viewport be laid out twice (once to find their intrinsic dimensions, and\nonce to actually lay them out). The number of widgets within the column should\ntherefore be kept small. Alternatively, subsets of the children that have known\ndimensions can be wrapped in a [SizedBox] that has tight vertical constraints,\nso that the intrinsic sizing algorithm can short-circuit the computation when it\nreaches those parts of the subtree.\n\nIn this example, the column becomes either as big as viewport, or as big as\nthe contents, whichever is biggest.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: IntrinsicHeight(\n child: Column(\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Expanded(\n // A flexible child that will grow to fit the viewport but\n // still be at least as big as necessary to fit its contents.\n child: Container(\n color: const Color(0xff800000), // Red\n height: 120.0,\n ),\n ),\n ],\n ),\n ),\n ),\n );\n },\n );\n}\n```\n\nSee also:\n\n * [ListView], which handles multiple children in a scrolling list.\n * [GridView], which handles multiple children in a scrolling grid.\n * [PageView], for a scrollable that works page by page.\n * [Scrollable], which handles arbitrary scrolling effects.", "detail": "", "kind": 7, "label": "SingleChildScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScopeNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interior node in the focus tree.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nThe interior nodes in the focus tree cannot themselves be focused but\ninstead remember previous focus states. A scope is currently active in its\nparent whenever [isFirstFocus] is true. If that scope is detached from its\nparent, its previous sibling becomes the parent's first focus.\n\nA [FocusNode] has the overall focus when the node is focused in its\nparent [FocusScopeNode] and [FocusScopeNode.isFirstFocus] is true for\nthat scope and all its ancestor scopes.\n\nIf a [FocusScopeNode] is removed, then the next sibling node will be set as\nthe focused node by the [FocusManager].\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].\n * [FocusScope], which is a widget that associates a [FocusScopeNode] with\n its location in the tree.", "detail": "", "kind": 7, "label": "FocusScopeNode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAlive", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows subtrees to request to be kept alive in lazy lists.\n\nThis widget is like [KeepAlive] but instead of being explicitly configured,\nit listens to [KeepAliveNotification] messages from the [child] and other\ndescendants.\n\nThe subtree is kept alive whenever there is one or more descendant that has\nsent a [KeepAliveNotification] and not yet triggered its\n[KeepAliveNotification.handle].\n\nTo send these notifications, consider using [AutomaticKeepAliveClientMixin].", "detail": "", "kind": 7, "label": "AutomaticKeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryConstructor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.constructor].", "detail": "() → T", "kind": 7, "label": "GestureRecognizerFactoryConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilderBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that build themselves based on interaction with\na specified [Stream].\n\nA [StreamBuilderBase] is stateful and maintains a summary of the interaction\nso far. The type of the summary and how it is updated with each interaction\nis defined by sub-classes.\n\nExamples of summaries include:\n\n* the running average of a stream of integers;\n* the current direction and speed based on a stream of geolocation data;\n* a graph displaying data points from a stream.\n\nIn general, the summary is the result of a fold computation over the data\nitems and errors received from the stream along with pseudo-events\nrepresenting termination or change of stream. The initial summary is\nspecified by sub-classes by overriding [initial]. The summary updates on\nreceipt of stream data and errors are specified by overriding [afterData] and\n[afterError], respectively. If needed, the summary may be updated on stream\ntermination by overriding [afterDone]. Finally, the summary may be updated\non change of stream by overriding [afterDisconnected] and [afterConnected].\n\n`T` is the type of stream events.\n\n`S` is the type of interaction summary.\n\nSee also:\n\n * [StreamBuilder], which is specialized for the case where only the most\n recent interaction is needed for widget building.", "detail": "", "kind": 7, "label": "StreamBuilderBase" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapAbsorber", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[RenderSliverOverlapInjector].", "detail": "", "kind": 7, "label": "RenderSliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometryTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsetsGeometry]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsetsGeometry>] to\nuse [EdgeInsetsGeometry.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsTween], which interpolates between two [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryInitializer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.initializer].", "detail": "(T instance) → void", "kind": 7, "label": "GestureRecognizerFactoryInitializer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver whose size varies when the sliver is scrolled to the leading edge\nof the viewport.\n\nThis is the layout primitive that [SliverAppBar] uses for its\nshrinking/growing effect.", "detail": "", "kind": 7, "label": "SliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a [Navigator] widget.", "detail": "", "kind": 7, "label": "NavigatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Visibility", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to show or hide a child.\n\nBy default, the [visible] property controls whether the [child] is included\nin the subtree or not; when it is not [visible], the [replacement] child\n(typically a zero-sized box) is included instead.\n\nA variety of flags can be used to tweak exactly how the child is hidden.\n(Changing the flags dynamically is discouraged, as it can cause the [child]\nsubtree to be rebuilt, with any state in the subtree being discarded.\nTypically, only the [visible] flag is changed dynamically.)\n\nThese widgets provide some of the facets of this one:\n\n * [Opacity], which can stop its child from being painted.\n * [Offstage], which can stop its child from being laid out or painted.\n * [TickerMode], which can stop its child from being animated.\n * [ExcludeSemantics], which can hide the child from accessibility tools.\n * [IgnorePointer], which can disable touch interactions with the child.\n\nUsing this widget is not necessary to hide children. The simplest way to\nhide a child is just to not include it, or, if a child _must_ be given (e.g.\nbecause the parent is a [StatelessWidget]) then to use [SizedBox.shrink]\ninstead of the child that would otherwise be included.\n\nSee also:\n\n * [AnimatedSwitcher], which can fade from one child to the next as the\n subtree changes.\n * [AnimatedCrossFade], which can fade between two specific children.", "detail": "", "kind": 7, "label": "Visibility" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RootRenderObjectElement] that is hosted by a [RenderObject].\n\nThis element class is the instantiation of a [RenderObjectToWidgetAdapter]\nwidget. It can be used only as the root of an [Element] tree (it cannot be\nmounted into another [Element]; it's parent must be null).\n\nIn typical usage, it will be instantiated for a [RenderObjectToWidgetAdapter]\nwhose container is the [RenderView] that connects to the Flutter engine. In\nthis usage, it is normally instantiated by the bootstrapping logic in the\n[WidgetsFlutterBinding] singleton created by [runApp].", "detail": "", "kind": 7, "label": "RenderObjectToWidgetElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Wrap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in multiple horizontal or vertical runs.\n\nA [Wrap] lays out each child and attempts to place the child adjacent to the\nprevious child in the main axis, given by [direction], leaving [spacing]\nspace in between. If there is not enough space to fit the child, [Wrap]\ncreates a new _run_ adjacent to the existing children in the cross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].\n\n\n\nThis example renders some [Chip]s representing four contacts in a [Wrap] so\nthat they flow across lines as necessary.\n\n```dart\nWrap(\n spacing: 8.0, // gap between adjacent chips\n runSpacing: 4.0, // gap between lines\n children: <Widget>[\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('AH')),\n label: Text('Hamilton'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('ML')),\n label: Text('Lafayette'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('HM')),\n label: Text('Mulligan'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('JL')),\n label: Text('Laurens'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [Row], which places children in one line, and gives control over their\n alignment and spacing.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Wrap" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An inherited widget for a [Listenable] [notifier], which updates its\ndependencies when the [notifier] is triggered.\n\nThis is a variant of [InheritedWidget], specialized for subclasses of\n[Listenable], such as [ChangeNotifier] or [ValueNotifier].\n\nDependents are notified whenever the [notifier] sends notifications, or\nwhenever the identity of the [notifier] changes.\n\nMultiple notifications are coalesced, so that dependents only rebuild once\neven if the [notifier] fires multiple times between two frames.\n\nTypically this class is subclassed with a class that provides an `of` static\nmethod that calls [BuildContext.inheritFromWidgetOfExactType] with that\nclass.\n\nThe [updateShouldNotify] method may also be overridden, to change the logic\nin the cases where [notifier] itself is changed. The [updateShouldNotify]\nmethod is called with the old [notifier] in the case of the [notifier] being\nchanged. When it returns true, the dependents are marked as needing to be\nrebuilt this frame.\n\nSee also:\n\n * [Animation], an implementation of [Listenable] that ticks each frame to\n update a value.\n * [ViewportOffset] or its subclass [ScrollPosition], implementations of\n [Listenable] that trigger when a view is scrolled.\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a path.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\n[PhysicalModel] does the same but only supports shapes that can be expressed\nas rectangles with rounded corners.\n\nSee also:\n\n * [ShapeBorderClipper], which converts a [ShapeBorder] to a [CustomerClipper], as\n needed by this widget.", "detail": "", "kind": 7, "label": "PhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildOwner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manager class for the widgets framework.\n\nThis class tracks which widgets need rebuilding, and handles other tasks\nthat apply to widget trees as a whole, such as managing the inactive element\nlist for the tree and triggering the \"reassemble\" command when necessary\nduring hot reload when debugging.\n\nThe main build owner is typically owned by the [WidgetsBinding], and is\ndriven from the operating system along with the rest of the\nbuild/layout/paint pipeline.\n\nAdditional build owners can be built to manage off-screen widget trees.\n\nTo assign a build owner to a tree, use the\n[RootRenderObjectElement.assignOwner] method on the root element of the\nwidget tree.", "detail": "", "kind": 7, "label": "BuildOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] of entries that can be managed independently.\n\nOverlays let independent child widgets \"float\" visual elements on top of\nother widgets by inserting them into the overlay's [Stack]. The overlay lets\neach of these widgets manage their participation in the overlay using\n[OverlayEntry] objects.\n\nAlthough you can create an [Overlay] directly, it's most common to use the\noverlay created by the [Navigator] in a [WidgetsApp] or a [MaterialApp]. The\nnavigator uses its overlay to manage the visual appearance of its routes.\n\nSee also:\n\n * [OverlayEntry].\n * [OverlayState].\n * [WidgetsApp].\n * [MaterialApp].", "detail": "", "kind": 7, "label": "Overlay" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have multiple box children.\n\nHelps subclasses build their children lazily using a [SliverChildDelegate].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the color, opacity, and size of icons.\n\nUsed by [IconTheme] to control the color, opacity, and size of icons in a\nwidget subtree.\n\nTo obtain the current icon theme, use [IconTheme.of]. To convert an icon\ntheme to a version with all the fields filled in, use [new\nIconThemeData.fallback].", "detail": "", "kind": 7, "label": "IconThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedScrollMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable snapshot of values associated with a [Scrollable] viewport.\n\nFor details, see [ScrollMetrics], which defines this object's interfaces.", "detail": "", "kind": 7, "label": "FixedScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedAlign", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Align] which automatically transitions the child's\nposition over a given duration whenever the given [alignment] changes.\n\nHere's an illustration of what this can look like, using a [curve] of\n[Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedPadding], which can animate the padding instead of the\n alignment.\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.", "detail": "", "kind": 7, "label": "AnimatedAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Padding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.\n\n\nThis snippet indents the child (a [Card] with some [Text]) by eight pixels\nin each direction:\n\n```dart\nPadding(\n padding: EdgeInsets.all(8.0),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\n## Design discussion\n\n### Why use a [Padding] widget rather than a [Container] with a [Container.padding] property?\n\nThere isn't really any difference between the two. If you supply a\n[Container.padding] argument, [Container] simply builds a [Padding] widget\nfor you.\n\n[Container] doesn't implement its properties directly. Instead, [Container]\ncombines a number of simpler widgets together into a convenient package. For\nexample, the [Container.padding] property causes the container to build a\n[Padding] widget and the [Container.decoration] property causes the\ncontainer to build a [DecoratedBox] widget. If you find [Container]\nconvenient, feel free to use it. If not, feel free to build these simpler\nwidgets in whatever combination meets your needs.\n\nIn fact, the majority of widgets in Flutter are simply combinations of other\nsimpler widgets. Composition, rather than inheritance, is the primary\nmechanism for building up widgets.\n\nSee also:\n\n * [EdgeInsets], the class that is used to describe the padding dimensions.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Padding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [StatefulBuilder].\n\nCall [setState] to schedule the [StatefulBuilder] to rebuild.", "detail": "(BuildContext context, StateSetter setState) → Widget", "kind": 7, "label": "StatefulWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildBuilderDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using a builder callback.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot even have to be built until they are displayed.\n\nThe widgets returned from the builder callback are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\n\nThis sample code shows how to use `semanticIndexOffset` to handle multiple\ndelegates in a single scroll view.\n\n```dart\nCustomScrollView(\n semanticChildCount: 4,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n ),\n ),\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n semanticIndexOffset: 2,\n ),\n ),\n ],\n)\n```\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\n\nThis sample code shows how to use `semanticIndexCallback` to handle\nannotating a subset of child nodes with a semantic index. There is\na [Spacer] widget at odd indexes which should not have a semantic\nindex.\n\n```dart\nCustomScrollView(\n semanticChildCount: 5,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n if (index.isEven) {\n return Text('...');\n }\n return Spacer();\n },\n semanticIndexCallback: (Widget widget, int localIndex) {\n if (localIndex.isEven) {\n return localIndex ~/ 2;\n }\n return null;\n },\n childCount: 10,\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.\n * [IndexedSemantics], for an example of manually annotating child nodes\n with semantic indexes.", "detail": "", "kind": 7, "label": "SliverChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which children on a wheel can be scrolled.\n\nThis widget is similar to a [ListView] but with the restriction that all\nchildren must be the same size along the scrolling axis.\n\nWhen the list is at the zero scroll offset, the first child is aligned with\nthe middle of the viewport. When the list is at the final scroll offset,\nthe last child is aligned with the middle of the viewport\n\nThe children are rendered as if rotating on a wheel instead of scrolling on\na plane.", "detail": "", "kind": 7, "label": "ListWheelScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragAnchor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where the [Draggable] should be anchored during a drag.", "detail": "", "kind": 13, "label": "DragAnchor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A general-purpose widget for building animations.\n\nAnimatedBuilder is useful for more complex widgets that wish to include\nan animation as part of a larger build function. To use AnimatedBuilder,\nsimply construct the widget and pass it a builder function.\n\nFor simple cases without additional state, consider using\n[AnimatedWidget].\n\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nanimation, it's more efficient to build that subtree once instead of\nrebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\nAnimatedBuilder will pass it back to your builder function so that you\ncan incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedBuilder] and makes use of the\n[child] feature to avoid having to rebuild the [Container] each time.\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return AnimatedBuilder(\n animation: _controller,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n builder: (BuildContext context, Widget child) {\n return Transform.rotate(\n angle: _controller.value * 2.0 * math.pi,\n child: child,\n );\n },\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "AnimatedBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnconstrainedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes no constraints on its child, allowing it to render\nat its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This container will then attempt\nto adopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the container, a warning will be\nprinted on the console, and black and yellow striped areas will appear where\nthe overflow occurs.\n\nSee also:\n\n * [ConstrainedBox], for a box which imposes constraints on its child.\n * [Align], which loosens the constraints given to the child rather than\n removing them entirely.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow\n the parent.", "detail": "", "kind": 7, "label": "UnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedContainer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container that gradually changes its values over a period of time.\n\nThe [AnimatedContainer] will automatically animate between the old and\nnew values of properties when they change using the provided curve and\nduration. Properties that are null are not animated. Its child and\ndescendants are not animated.\n\nThis class is useful for generating simple implicit transitions between\ndifferent parameters to [Container] with its internal [AnimationController].\nFor more complex animations, you'll likely want to use a subclass of\n[AnimatedWidget] such as the [DecoratedBoxTransition] or use your own\n[AnimationController].\n\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPadding], which is a subset of this widget that only\n supports animating the [padding].\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.\n * [AnimatedSwitcher], which switches out a child for a new one with a customizable transition.\n * [AnimatedCrossFade], which fades between two children and interpolates their sizes.", "detail": "", "kind": 7, "label": "AnimatedContainer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single list of children. (This superclass only provides the\nstorage for that child list, it doesn't actually provide the updating\nlogic.)", "detail": "", "kind": 7, "label": "MultiChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has not changed its scroll position\nbecause the change would have caused its scroll position to go outside of\nits scroll bounds.\n\nSee also:\n\n * [ScrollUpdateNotification], which indicates that a [Scrollable] widget\n has changed its scroll position.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "OverscrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A utility class for defining one-off page routes in terms of callbacks.\n\nCallers must define the [pageBuilder] function which creates the route's\nprimary contents. To add transitions define the [transitionsBuilder] function.", "detail": "", "kind": 7, "label": "PageRouteBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a callback that verifies that it's OK to call [Navigator.pop].\n\nUsed by [Form.onWillPop], [ModalRoute.addScopedWillPopCallback],\n[ModalRoute.removeScopedWillPopCallback], and [WillPopScope].", "detail": "() → Future<bool>", "kind": 7, "label": "WillPopCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedOverflowBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is a specific size but passes its original constraints\nthrough to its child, which may then overflow.\n\nSee also:\n\n * [OverflowBox], A widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteSettings", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data that might be useful in constructing a [Route].", "detail": "", "kind": 7, "label": "RouteSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box with a specified size.\n\nIf given a child, this widget forces its child to have a specific width\nand/or height (assuming values are permitted by this widget's parent). If\neither the width or height is null, this widget will size itself to match\nthe child's size in that dimension.\n\nIf not given a child, this widget will size itself to the given width and\nheight, treating nulls as zero.\n\nThe [new SizedBox.expand] constructor can be used to make a [SizedBox] that\nsizes itself to fit the parent. It is equivalent to setting [width] and\n[height] to [double.infinity].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) have the\nexact size 200x300, parental constraints permitting:\n\n```dart\nSizedBox(\n width: 200.0,\n height: 300.0,\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nSee also:\n\n * [ConstrainedBox], a more generic version of this class that takes\n arbitrary [BoxConstraints] instead of an explicit width and height.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [FractionallySizedBox], a widget that sizes its child to a fraction of\n the total available space.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherTransitionBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom transitions for\n[AnimatedSwitcher].\n\nThe `child` should be transitioning in when the `animation` is running in\nthe forward direction.\n\nThe function should return a widget which wraps the given `child`. It may\nalso use the `animation` to inform its transition. It must not return null.", "detail": "(Widget child, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedSwitcherTransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of a [FormField]. Passed to the [FormFieldBuilder] method\nfor use in constructing the form field's widget.", "detail": "", "kind": 7, "label": "FormFieldState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a filter to the existing painted content and then\npaints [child].\n\nThe filter will be applied to all the area within its parent or ancestor\nwidget's clip. If there's no clip, the filter will be applied to the full\nscreen.\n\n\nIf the [BackdropFilter] needs to be applied to an area that exactly matches\nits child, wraps the [BackdropFilter] with a clip widget that clips exactly\nto that child.\n\n```dart\nStack(\n fit: StackFit.expand,\n children: <Widget>[\n Text('0' * 10000),\n Center(\n child: ClipRect( // <-- clips to the 200x200 [Container] below\n child: BackdropFilter(\n filter: ui.ImageFilter.blur(\n sigmaX: 5.0,\n sigmaY: 5.0,\n ),\n child: Container(\n alignment: Alignment.center,\n width: 200.0,\n height: 200.0,\n child: Text('Hello World'),\n ),\n ),\n ),\n ),\n ],\n)\n```\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.\n\nSee also:\n\n * [DecoratedBox], which draws a background under (or over) a widget.\n * [Opacity], which changes the opacity of the widget itself.", "detail": "", "kind": 7, "label": "BackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].\n\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Notification] related to scrolling.\n\n[Scrollable] widgets notify their ancestors about scrolling-related changes.\nThe notifications have the following lifecycle:\n\n * A [ScrollStartNotification], which indicates that the widget has started\n scrolling.\n * Zero or more [ScrollUpdateNotification]s, which indicate that the widget\n has changed its scroll position, mixed with zero or more\n [OverscrollNotification]s, which indicate that the widget has not changed\n its scroll position because the change would have caused its scroll\n position to go outside its scroll bounds.\n * Interspersed with the [ScrollUpdateNotification]s and\n [OverscrollNotification]s are zero or more [UserScrollNotification]s,\n which indicate that the user has changed the direction in which they are\n scrolling.\n * A [ScrollEndNotification], which indicates that the widget has stopped\n scrolling.\n * A [UserScrollNotification], with a [UserScrollNotification.direction] of\n [ScrollDirection.idle].\n\nNotifications bubble up through the tree, which means a given\n[NotificationListener] will receive notifications for all descendant\n[Scrollable] widgets. To focus on notifications from the nearest\n[Scrollable] descendant, check that the [depth] property of the notification\nis zero.\n\nWhen a scroll notification is received by a [NotificationListener], the\nlistener will have already completed build and layout, and it is therefore\ntoo late for that widget to call [State.setState]. Any attempt to adjust the\nbuild or layout based on a scroll notification would result in a layout that\nlagged one frame behind, which is a poor user experience. Scroll\nnotifications are therefore primarily useful for paint effects (since paint\nhappens after layout). The [GlowingOverscrollIndicator] and [Scrollbar]\nwidgets are examples of paint effects that use scroll notifications.\n\nTo drive layout based on the scroll position, consider listening to the\n[ScrollPosition] directly (or indirectly via a [ScrollController]).", "detail": "", "kind": 7, "label": "ScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an Android view in the Widget hierarchy.\n\nRequires Android API level 20 or greater.\n\nEmbedding Android views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\nThe embedded Android view is painted just like any other Flutter widget and transformations\napply to it as well.\n\nThe widget fills all available space, the parent of this object must provide bounded layout\nconstraints.\n\nThe widget participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified in the `gestureRecognizers` constructor parameter. If\nthe set of gesture recognizers is empty, a gesture will be dispatched to the platform\nview iff it was not claimed by any other gesture recognizer.\n\nThe Android view object is created using a [PlatformViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewFactory.html).\nPlugins can register platform view factories with [PlatformViewRegistry#registerViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewRegistry.html#registerViewFactory-java.lang.String-io.flutter.plugin.platform.PlatformViewFactory-).\n\nRegistration is typically done in the plugin's registerWith method, e.g:\n\n```java\n public static void registerWith(Registrar registrar) {\n registrar.platformViewRegistry().registerViewFactory(\"webview\", WebViewFactory(registrar.messenger()));\n }\n```\n\nThe platform view's lifetime is the same as the lifetime of the [State] object for this widget.\nWhen the [State] is disposed the platform view (and auxiliary resources) are lazily\nreleased (some resources are immediately released and some by platform garbage collector).\nA stateful widget's state is disposed when the widget is removed from the tree or when it is\nmoved within the tree. If the stateful widget has a key and it's only moved relative to its siblings,\nor it has a [GlobalKey] and it's moved within the tree, it will not be disposed.", "detail": "", "kind": 7, "label": "AndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositioned", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which automatically transitions the child's\nposition over a given duration whenever the given position changes.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositioned] will trigger a relayout\nas well.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositionedDirectional], which adapts to the ambient\n [Directionality] (the same as this widget, but for animating\n [PositionedDirectional]).", "detail": "", "kind": 7, "label": "AnimatedPositioned" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Container", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience widget that combines common painting, positioning, and sizing\nwidgets.\n\nA container first surrounds the child with [padding] (inflated by any\nborders present in the [decoration]) and then applies additional\n[constraints] to the padded extent (incorporating the `width` and `height`\nas constraints, if either is non-null). The container is then surrounded by\nadditional empty space described from the [margin].\n\nDuring painting, the container first applies the given [transform], then\npaints the [decoration] to fill the padded extent, then it paints the child,\nand finally paints the [foregroundDecoration], also filling the padded\nextent.\n\nContainers with no children try to be as big as possible unless the incoming\nconstraints are unbounded, in which case they try to be as small as\npossible. Containers with children size themselves to their children. The\n`width`, `height`, and [constraints] arguments to the constructor override\nthis.\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nSince [Container] combines a number of other widgets each with their own\nlayout behavior, [Container]'s layout behavior is somewhat complicated.\n\nSummary: [Container] tries, in order: to honor [alignment], to size itself\nto the [child], to honor the `width`, `height`, and [constraints], to expand\nto fit the parent, to be as small as possible.\n\nMore specifically:\n\nIf the widget has no child, no `height`, no `width`, no [constraints],\nand the parent provides unbounded constraints, then [Container] tries to\nsize as small as possible.\n\nIf the widget has no child and no [alignment], but a `height`, `width`, or\n[constraints] are provided, then the [Container] tries to be as small as\npossible given the combination of those constraints and the parent's\nconstraints.\n\nIf the widget has no child, no `height`, no `width`, no [constraints], and\nno [alignment], but the parent provides bounded constraints, then\n[Container] expands to fit the constraints provided by the parent.\n\nIf the widget has an [alignment], and the parent provides unbounded\nconstraints, then the [Container] tries to size itself around the child.\n\nIf the widget has an [alignment], and the parent provides bounded\nconstraints, then the [Container] tries to expand to fit the parent, and\nthen positions the child within itself as per the [alignment].\n\nOtherwise, the widget has a [child] but no `height`, no `width`, no\n[constraints], and no [alignment], and the [Container] passes the\nconstraints from the parent to the child and sizes itself to match the\nchild.\n\nThe [margin] and [padding] properties also affect the layout, as described\nin the documentation for those properties. (Their effects merely augment the\nrules described above.) The [decoration] can implicitly increase the\n[padding] (e.g. borders in a [BoxDecoration] contribute to the [padding]);\nsee [Decoration.padding].\n\nThis example shows a 48x48 amber square (placed inside a [Center] widget in\ncase the parent widget has its own opinions regarding the size that the\n[Container] should take), with a margin so that it stays away from\nneighboring widgets:\n\n![An amber colored container with the dimensions of 48 square pixels.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_a.png)\n\n```dart\nCenter(\n child: Container(\n margin: const EdgeInsets.all(10.0),\n color: Colors.amber[600],\n width: 48.0,\n height: 48.0,\n ),\n)\n```\n\n\nThis example shows how to use many of the features of [Container] at once.\nThe [constraints] are set to fit the font size plus ample headroom\nvertically, while expanding horizontally to fit the parent. The [padding] is\nused to make sure there is space between the contents and the text. The\n[color] makes the box blue. The [alignment] causes the [child] to be\ncentered in the box. Finally, the [transform] applies a slight rotation to the\nentire contraption to complete the effect.\n\n![A blue rectangular container with 'Hello World' in the center, rotated\nslightly in the z axis.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_b.png)\n\n```dart\nContainer(\n constraints: BoxConstraints.expand(\n height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,\n ),\n padding: const EdgeInsets.all(8.0),\n color: Colors.blue[600],\n alignment: Alignment.center,\n child: Text('Hello World',\n style: Theme.of(context)\n .textTheme\n .display1\n .copyWith(color: Colors.white)),\n transform: Matrix4.rotationZ(0.1),\n)\n```\n\nSee also:\n\n * [AnimatedContainer], a variant that smoothly animates the properties when\n they change.\n * [Border], which has a sample which uses [Container] heavily.\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Container" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGrid", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[SliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nThe main axis direction of a grid is the direction in which it scrolls; the\ncross axis direction is the orthogonal direction.\n\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows twenty boxes in a pretty teal grid:\n\n```dart\nSliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n)\n```\n\n\nSee also:\n\n * [SliverList], which places its children in a linear array.\n * [SliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.", "detail": "", "kind": 7, "label": "SliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\n[Scrollable] implements the interaction model for a scrollable widget,\nincluding gesture recognition, but does not have an opinion about how the\nviewport, which actually displays the children, is constructed.\n\nIt's rare to construct a [Scrollable] directly. Instead, consider [ListView]\nor [GridView], which combine scrolling, viewporting, and a layout model. To\ncombine layout models (or to use a custom layout mode), consider using\n[CustomScrollView].\n\nThe static [Scrollable.of] and [Scrollable.ensureVisible] functions are\noften used to interact with the [Scrollable] widget inside a [ListView] or\na [GridView].\n\nTo further customize scrolling behavior with a [Scrollable]:\n\n1. You can provide a [viewportBuilder] to customize the child model. For\n example, [SingleChildScrollView] uses a viewport that displays a single\n box child whereas [CustomScrollView] uses a [Viewport] or a\n [ShrinkWrappingViewport], both of which display a list of slivers.\n\n2. You can provide a custom [ScrollController] that creates a custom\n [ScrollPosition] subclass. For example, [PageView] uses a\n [PageController], which creates a page-oriented scroll position subclass\n that keeps the same page visible when the [Scrollable] resizes.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "Scrollable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Border]s.\n\nThis class specializes the interpolation of [Tween<Border>] to use\n[Border.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsets]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsets>] to use\n[EdgeInsets.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsGeometryTween], which interpolates between two\n [EdgeInsetsGeometry] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryWithHandlers", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers that delegates to callbacks.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactoryWithHandlers" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstrainedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes additional constraints on its child.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[constraints].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) fill the\nparent, by applying [BoxConstraints.expand] constraints:\n\n```dart\nConstrainedBox(\n constraints: const BoxConstraints.expand(),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nThe same behavior can be obtained using the [new SizedBox.expand] widget.\n\nSee also:\n\n * [BoxConstraints], the class that describes constraints.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "ConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image that shows a [placeholder] image while the target [image] is\nloading, then fades in the new image when it loads.\n\nUse this class to display long-loading images, such as [new NetworkImage],\nso that the image appears on screen with a graceful animation rather than\nabruptly pops onto the screen.\n\n\nIf the [image] emits an [ImageInfo] synchronously, such as when the image\nhas been loaded and cached, the [image] is displayed immediately and the\n[placeholder] is never displayed.\n\n[fadeOutDuration] and [fadeOutCurve] control the fade-out animation of the\nplaceholder.\n\n[fadeInDuration] and [fadeInCurve] control the fade-in animation of the\ntarget [image].\n\nPrefer a [placeholder] that's already cached so that it is displayed in one\nframe. This prevents it from popping onto the screen.\n\nWhen [image] changes it is resolved to a new [ImageStream]. If the new\n[ImageStream.key] is different this widget subscribes to the new stream and\nreplaces the displayed image with images emitted by the new stream.\n\nWhen [placeholder] changes and the [image] has not yet emitted an\n[ImageInfo], then [placeholder] is resolved to a new [ImageStream]. If the\nnew [ImageStream.key] is different this widget subscribes to the new stream\nand replaces the displayed image to images emitted by the new stream.\n\nWhen either [placeholder] or [image] changes, this widget continues showing\nthe previously loaded image (if any) until the new image provider provides a\ndifferent image. This is known as \"gapless playback\" (see also\n[Image.gaplessPlayback]).\n\n\n```dart\nFadeInImage(\n // here `bytes` is a Uint8List containing the bytes for the in-memory image\n placeholder: MemoryImage(bytes),\n image: NetworkImage('https://backend.example.com/image.png'),\n)\n```", "detail": "", "kind": 7, "label": "FadeInImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that manages [Hero] transitions.\n\nAn instance of [HeroController] should be used in [Navigator.observers].\nThis is done automatically by [MaterialApp].", "detail": "", "kind": 7, "label": "HeroController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListRemovedItemBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedListState.removeItem].", "detail": "(BuildContext context, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListRemovedItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [PageView].\n\nThe metrics are available on [ScrollNotification]s generated from\n[PageView]s.", "detail": "", "kind": 7, "label": "PageMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModelElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [InheritedModel] as its configuration.", "detail": "", "kind": 7, "label": "InheritedModelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBody", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that arranges its children sequentially along a given axis, forcing\nthem to the dimension of the parent in the other axis.\n\nThis widget is rarely used directly. Instead, consider using [ListView],\nwhich combines a similar layout algorithm with scrolling behavior, or\n[Column], which gives you more flexible control over the layout of a\nvertical set of boxes.\n\nSee also:\n\n * [RenderListBody], which implements this layout algorithm and the\n documentation for which describes some of its subtleties.\n * [SingleChildScrollView], which is sometimes used with [ListBody] to\n make the contents scrollable.\n * [Column] and [Row], which implement a more elaborate version of\n this layout algorithm (at the cost of being slightly less efficient).\n * [ListView], which implements an efficient scrolling version of this\n layout algorithm.", "detail": "", "kind": 7, "label": "ListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomMultiChildLayout", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses a delegate to size and position multiple children.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.\n\n[CustomMultiChildLayout] is appropriate when there are complex relationships\nbetween the size and positioning of a multiple widgets. To control the\nlayout of a single child, [CustomSingleChildLayout] is more appropriate. For\nsimple cases, such as aligning a widget to one or another edge, the [Stack]\nwidget is more appropriate.\n\nEach child must be wrapped in a [LayoutId] widget to identify the widget for\nthe delegate.\n\nSee also:\n\n * [MultiChildLayoutDelegate], for details about how to control the layout of\n the children.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Stack], which arranges children relative to the edges of the container.\n * [Flow], which provides paint-time control of its children using transform\n matrices.", "detail": "", "kind": 7, "label": "CustomMultiChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSizeWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for widgets that can return the size this widget would prefer\nif it were otherwise unconstrained.\n\nThere are a few cases, notably [AppBar] and [TabBar], where it would be\nundesirable for the widget to constrain its own size but where the widget\nneeds to expose a preferred or \"default\" size. For example a primary\n[Scaffold] sets its app bar height to the app bar's preferred height\nplus the height of the system status bar.\n\nUse [PreferredSize] to give a preferred size to an arbitrary widget.", "detail": "", "kind": 7, "label": "PreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An entry in the history of a [LocalHistoryRoute].", "detail": "", "kind": 7, "label": "LocalHistoryEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFixedExtentList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[SliverFixedExtentList] places its children in a linear array along the main\naxis starting at offset zero and without gaps. Each child is forced to have\nthe [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[SliverFixedExtentList] is more efficient than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis.\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows an infinite number of items in varying shades of blue:\n\n```dart\nSliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n)\n```\n\n\nSee also:\n\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Direction of the hero's flight based on the navigation operation.", "detail": "", "kind": 13, "label": "HeroFlightDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that replaces the entire screen.", "detail": "", "kind": 7, "label": "PageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of an [Overlay].\n\nUsed to insert [OverlayEntry]s into the overlay using the [insert] and\n[insertAll] functions.", "detail": "", "kind": 7, "label": "OverlayState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultWidgetsLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "US English localizations for the widgets library.\n\nSee also:\n\n * [GlobalWidgetsLocalizations], which provides widgets localizations for\n many languages.\n * [WidgetsApp.delegates], which automatically includes\n [DefaultWidgetsLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultWidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RepaintBoundary", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that creates a separate display list for its child.\n\nThis widget creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree.\n\nThis is useful since [RenderObject.paint] may be triggered even if its\nassociated [Widget] instances did not change or rebuild. A [RenderObject]\nwill repaint whenever any [RenderObject] that shares the same [Layer] is\nmarked as being dirty and needing paint (see [RenderObject.markNeedsPaint]),\nsuch as when an ancestor scrolls or when an ancestor or descendant animates.\n\nContaining [RenderObject.paint] to parts of the render subtree that are\nactually visually changing using [RepaintBoundary] explicitly or implicitly\nis therefore critical to minimizing redundant work and improving the app's\nperformance.\n\nWhen a [RenderObject] is flagged as needing to paint via\n[RenderObject.markNeedsPaint], the nearest ancestor [RenderObject] with\n[RenderObject.isRepaintBoundary], up to possibly the root of the application,\nis requested to repaint. That nearest ancestor's [RenderObject.paint] method\nwill cause _all_ of its descendant [RenderObject]s to repaint in the same\nlayer.\n\n[RepaintBoundary] is therefore used, both while propagating the\n`markNeedsPaint` flag up the render tree and while traversing down the\nrender tree via [RenderObject.paintChild], to strategically contain repaints\nto the render subtree that visually changed for performance. This is done\nbecause the [RepaintBoundary] widget creates a [RenderObject] that always\nhas a [Layer], decoupling ancestor render objects from the descendant\nrender objects.\n\n[RepaintBoundary] has the further side-effect of possibly hinting to the\nengine that it should further optimize animation performance if the render\nsubtree behind the [RepaintBoundary] is sufficiently complex and is static\nwhile the surrounding tree changes frequently. In those cases, the engine\nmay choose to pay a one time cost of rasterizing and caching the pixel\nvalues of the subtree for faster future GPU re-rendering speed.\n\nSeveral framework widgets insert [RepaintBoundary] widgets to mark natural\nseparation points in applications. For instance, contents in Material Design\ndrawers typically don't change while the drawer opens and closes, so\nrepaints are automatically contained to regions inside or outside the drawer\nwhen using the [Drawer] widget during transitions.\n\nSee also:\n\n * [debugRepaintRainbowEnabled], a debugging flag to help visually monitor\n render tree repaints in a running app.\n * [debugProfilePaintsEnabled], a debugging flag to show render tree\n repaints in the observatory's timeline view.", "detail": "", "kind": 7, "label": "RepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RootRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The element at the root of the tree.\n\nOnly root elements may have their owner set explicitly. All other\nelements inherit their owner from their parent.", "detail": "", "kind": 7, "label": "RootRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportNotificationMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mixin for [Notification]s that track how many [RenderAbstractViewport] they\nhave bubbled through.\n\nThis is used by [ScrollNotification] and [OverscrollIndicatorNotification].", "detail": "", "kind": 7, "label": "ViewportNotificationMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single child slot. (This superclass only provides the storage\nfor that child, it doesn't actually provide the updating logic.)", "detail": "", "kind": 7, "label": "SingleChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VelocityTracker", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Computes a pointer's velocity based on data from [PointerMoveEvent]s.\n\nThe input data is provided by calling [addPosition]. Adding data is cheap.\n\nTo obtain a velocity, call [getVelocity] or [getVelocityEstimate]. This will\ncompute the velocity based on the data added so far. Only call these when\nyou need to use the velocity, as they are comparatively expensive.\n\nThe quality of the velocity estimation will be better if more data points\nhave been received.", "detail": "", "kind": 7, "label": "VelocityTracker" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HorizontalDragGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the horizontal direction.\n\nUsed for horizontal scrolling.\n\nSee also:\n\n * [VerticalDragGestureRecognizer], for a similar recognizer but for\n vertical movement.\n * [MultiDragGestureRecognizer], for a family of gesture recognizers that\n track each touch point independently.", "detail": "", "kind": 7, "label": "HorizontalDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetailsForPointerEventDispatcher", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [FlutterErrorDetails] with extra fields for the gesture\nlibrary's binding's pointer event dispatcher ([GestureBinding.dispatchEvent]).\n\nSee also [FlutterErrorDetailsForPointerRouter], which is also used by the\ngesture library.", "detail": "", "kind": 7, "label": "FlutterErrorDetailsForPointerEventDispatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiDragPointerState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Per-pointer state for a [MultiDragGestureRecognizer].\n\nA [MultiDragGestureRecognizer] tracks each pointer separately. The state for\neach pointer is a subclass of [MultiDragPointerState].", "detail": "", "kind": 7, "label": "MultiDragPointerState" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerRouter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A routing table for [PointerEvent] events.", "detail": "", "kind": 7, "label": "PointerRouter" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerHoverEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is not\nin contact with the device.\n\nSee also:\n\n * [PointerEnterEvent], which reports when the pointer has entered an\n object.\n * [PointerExitEvent], which reports when the pointer has left an object.\n * [PointerMoveEvent], which reports movement while the pointer is in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerHoverEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MouseTrackerAnnotation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The annotation object used to annotate layers that are interested in mouse\nmovements.\n\nThis is added to a layer and managed by the [Listener] widget.", "detail": "", "kind": 7, "label": "MouseTrackerAnnotation" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback that receives a [PointerEvent]", "detail": "(PointerEvent event) → void", "kind": 7, "label": "PointerRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A binding for the gesture subsystem.\n\n## Lifecycle of pointer events and the gesture arena\n\n### [PointerDownEvent]\n\nWhen a [PointerDownEvent] is received by the [GestureBinding] (from\n[Window.onPointerDataPacket], as interpreted by the\n[PointerEventConverter]), a [hitTest] is performed to determine which\n[HitTestTarget] nodes are affected. (Other bindings are expected to\nimplement [hitTest] to defer to [HitTestable] objects. For example, the\nrendering layer defers to the [RenderView] and the rest of the render object\nhierarchy.)\n\nThe affected nodes then are given the event to handle ([dispatchEvent] calls\n[HitTestTarget.handleEvent] for each affected node). If any have relevant\n[GestureRecognizer]s, they provide the event to them using\n[GestureRecognizer.addPointer]. This typically causes the recognizer to\nregister with the [PointerRouter] to receive notifications regarding the\npointer in question.\n\nOnce the hit test and dispatching logic is complete, the event is then\npassed to the aforementioned [PointerRouter], which passes it to any objects\nthat have registered interest in that event.\n\nFinally, the [gestureArena] is closed for the given pointer\n([GestureArenaManager.close]), which begins the process of selecting a\ngesture to win that pointer.\n\n### Other events\n\nA pointer that is [PointerEvent.down] may send further events, such as\n[PointerMoveEvent], [PointerUpEvent], or [PointerCancelEvent]. These are\nsent to the same [HitTestTarget] nodes as were found when the down event was\nreceived (even if they have since been disposed; it is the responsibility of\nthose objects to be aware of that possibility).\n\nThen, the events are routed to any still-registered entrants in the\n[PointerRouter]'s table for that pointer.\n\nWhen a [PointerUpEvent] is received, the [GestureArenaManager.sweep] method\nis invoked to force the gesture arena logic to terminate if necessary.", "detail": "", "kind": 7, "label": "GestureBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes a force press on devices that have force sensors.\n\nOnly the force from a single pointer is used to invoke events. A tap\nrecognizer will win against this recognizer on pointer up as long as the\npointer has not pressed with a force greater than\n[ForcePressGestureRecognizer.startPressure]. A long press recognizer will\nwin when the press down time exceeds the threshold time as long as the\npointer's pressure was never greater than\n[ForcePressGestureRecognizer.startPressure] in that duration.\n\nAs of November, 2018 iPhone devices of generation 6S and higher have\nforce touch functionality, with the exception of the iPhone XR. In addition,\na small handful of Android devices have this functionality as well.\n\nDevices with faux screen pressure sensors like the Pixel 2 and 3 will not\nsend any force press related callbacks.\n\nReported pressure will always be in the range 0.0 to 1.0, where 1.0 is\nmaximum pressure and 0.0 is minimum pressure. If using a custom\n[interpolation] callback, the pressure reported will correspond to that\ncustom curve.", "detail": "", "kind": 7, "label": "ForcePressGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeastSquaresSolver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Uses the least-squares algorithm to fit a polynomial to a set of data.", "detail": "", "kind": 7, "label": "LeastSquaresSolver" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PolynomialFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An nth degree polynomial fit to a dataset.", "detail": "", "kind": 7, "label": "PolynomialFit" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImmediateMultiDragGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement both horizontally and vertically on a per-pointer basis.\n\nIn contrast to [PanGestureRecognizer], [ImmediateMultiDragGestureRecognizer]\nwatches each pointer separately, which means multiple drags can be\nrecognized concurrently if multiple pointers are in contact with the screen.\n\nSee also:\n\n * [PanGestureRecognizer], which recognizes only one drag gesture at a time,\n regardless of how many fingers are involved.\n * [HorizontalMultiDragGestureRecognizer], which only recognizes drags that\n start horizontally.\n * [VerticalMultiDragGestureRecognizer], which only recognizes drags that\n start vertically.\n * [DelayedMultiDragGestureRecognizer], which only recognizes drags that\n start after a long-press gesture.", "detail": "", "kind": 7, "label": "ImmediateMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement.\n\nIn contrast to [MultiDragGestureRecognizer], [DragGestureRecognizer]\nrecognizes a single gesture sequence for all the pointers it watches, which\nmeans that the recognizer has at most one drag sequence active at any given\ntime regardless of how many pointers are in contact with the screen.\n\n[DragGestureRecognizer] is not intended to be used directly. Instead,\nconsider using one of its subclasses to recognize specific types for drag\ngestures.\n\nSee also:\n\n * [HorizontalDragGestureRecognizer], for left and right drags.\n * [VerticalDragGestureRecognizer], for up and down drags.\n * [PanGestureRecognizer], for drags that are not locked to a single axis.", "detail": "", "kind": 7, "label": "DragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerExitEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is not\nin contact with the device, and entered a target object.\n\nSee also:\n\n * [PointerHoverEvent], which reports when the pointer has moved while\n within an object.\n * [PointerEnterEvent], which reports when the pointer has entered an object.\n * [PointerMoveEvent], which reports movement while the pointer is in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerExitEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MouseTracker", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Keeps state about which objects are interested in tracking mouse positions\nand notifies them when a mouse pointer enters, moves, or leaves an annotated\nregion that they are interested in.\n\nOwned by the [RendererBinding] class.", "detail": "", "kind": 7, "label": "MouseTracker" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes when the user has pressed down at the same location for a long\nperiod of time.\n\nThe gesture must not deviate in position from its touch down point for 500ms\nuntil it's recognized. Once the gesture is accepted, the finger can be\nmoved, triggering [onLongPressMoveUpdate] callbacks, unless the\n[postAcceptSlopTolerance] constructor argument is specified.", "detail": "", "kind": 7, "label": "LongPressGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerRemovedEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The device is no longer tracking the pointer.\n\nFor example, the pointer might have drifted out of the device's hover\ndetection range or might have been disconnected from the system entirely.", "detail": "", "kind": 7, "label": "PointerRemovedEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HorizontalMultiDragGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the horizontal direction on a per-pointer basis.\n\nIn contrast to [HorizontalDragGestureRecognizer],\n[HorizontalMultiDragGestureRecognizer] watches each pointer separately,\nwhich means multiple drags can be recognized concurrently if multiple\npointers are in contact with the screen.\n\nSee also:\n\n * [HorizontalDragGestureRecognizer], a gesture recognizer that just\n looks at horizontal movement.\n * [ImmediateMultiDragGestureRecognizer], a similar recognizer, but without\n the limitation that the drag must start horizontally.\n * [VerticalMultiDragGestureRecognizer], which only recognizes drags that\n start vertically.", "detail": "", "kind": 7, "label": "HorizontalMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalResolver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An resolver for pointer signal events.\n\nObjects interested in a [PointerSignalEvent] should register a callback to\nbe called if they should handle the event. The resolver's purpose is to\nensure that the same pointer signal is not handled by multiple objects in\na hierarchy.\n\nPointer signals are immediate, so unlike a gesture arena it always resolves\nat the end of event dispatch. The first callback registered will be the one\nthat is called.", "detail": "", "kind": 7, "label": "PointerSignalResolver" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface to information to an arena.\n\nA given [GestureArenaMember] can have multiple entries in multiple arenas\nwith different pointer ids.", "detail": "", "kind": 7, "label": "GestureArenaEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapDownCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [MultiTapGestureRecognizer] for when a pointer that might\ncause a tap has contacted the screen at a particular location.", "detail": "(int pointer, TapDownDetails details) → void", "kind": 7, "label": "GestureMultiTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestResult", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The result of performing a hit test.", "detail": "", "kind": 7, "label": "HitTestResult" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDoubleTapCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callback when the user has tapped the screen at the same\nlocation twice in quick succession.", "detail": "() → void", "kind": 7, "label": "GestureDoubleTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Drag", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for objects that receive updates about drags.\n\nThis interface is used in various ways. For example,\n[MultiDragGestureRecognizer] uses it to update its clients when it\nrecognizes a gesture. Similarly, the scrolling infrastructure in the widgets\nlibrary uses it to notify the [DragScrollActivity] when the user drags the\nscrollable.", "detail": "", "kind": 7, "label": "Drag" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration of offset passed to [DragStartDetails].\n\nThe settings determines when a drag formally starts when the user\ninitiates a drag.\n\nSee also:\n\n * [DragGestureRecognizer.dragStartBehavior], which gives an example for the different behaviors.", "detail": "", "kind": 13, "label": "DragStartBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDeviceKind", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The kind of pointer device.", "detail": "", "kind": 13, "label": "PointerDeviceKind" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes taps.\n\nGesture recognizers take part in gesture arenas to enable potential gestures\nto be disambiguated from each other. This process is managed by a\n[GestureArenaManager] (q.v.).\n\n[TapGestureRecognizer] considers all the pointers involved in the pointer\nevent sequence as contributing to one gesture. For this reason, extra\npointer interactions during a tap sequence are not recognized as additional\ntaps. For example, down-1, down-2, up-1, up-2 produces only one tap on up-1.\n\nThe lifecycle of events for a tap gesture is as follows:\n\n* [onTapDown], which triggers after a short timeout ([deadline]) even if the\n gesture has not won its arena yet.\n* [onTapUp] and [onTap], which trigger when the pointer is released if the\n gesture wins the arena.\n* [onTapCancel], which triggers instead of [onTapUp] and [onTap] in the case\n of the gesture not winning the arena.\n\nSee also:\n\n * [GestureDetector.onTap], which uses this recognizer.\n * [MultiTapGestureRecognizer]", "detail": "", "kind": 7, "label": "TapGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestDispatcher", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can dispatch events.", "detail": "", "kind": 7, "label": "HitTestDispatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MouseDetectorAnnotationFinder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes a function that finds an annotation given an offset in logical\ncoordinates.\n\nIt is used by the [MouseTracker] to fetch annotations for the mouse\nposition.", "detail": "(Offset offset) → MouseTrackerAnnotation", "kind": 7, "label": "MouseDetectorAnnotationFinder" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEventConverter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Converts from engine pointer data to framework pointer events.\n\nThis takes [PointerDataPacket] objects, as received from the engine via\n[dart:ui.Window.onPointerDataPacket], and converts them to [PointerEvent]\nobjects.", "detail": "", "kind": 7, "label": "PointerEventConverter" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerHoverEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerHoverEvent] events.\n\nUsed by [MouseTrackerAnnotation], [Listener] and [RenderPointerListener].", "detail": "(PointerHoverEvent event) → void", "kind": 7, "label": "PointerHoverEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForceInterpolation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for interpolating the raw\ndevice pressure to a value in the range [0, 1] given the device's pressure\nmin and pressure max.", "detail": "(double pressureMin, double pressureMax, double pressure) → double", "kind": 7, "label": "GestureForceInterpolation" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [MultiTapGestureRecognizer] for when a tap has occurred.", "detail": "(int pointer) → void", "kind": 7, "label": "GestureMultiTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RecognizerCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Generic signature for callbacks passed to\n[GestureRecognizer.invokeCallback]. This allows the\n[GestureRecognizer.invokeCallback] mechanism to be generically used with\nanonymous functions that return objects of particular types.", "detail": "() → T", "kind": 7, "label": "RecognizerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleTapGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes when the user has tapped the screen at the same location twice in\nquick succession.", "detail": "", "kind": 7, "label": "DoubleTapGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapUpCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [MultiTapGestureRecognizer] for when a pointer that will\ntrigger a tap has stopped contacting the screen at a particular location.", "detail": "(int pointer, TapUpDetails details) → void", "kind": 7, "label": "GestureMultiTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDisposition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether the gesture was accepted or rejected.", "detail": "", "kind": 13, "label": "GestureDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryPointerGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for gesture recognizers that track a single primary pointer.\n\nGestures based on this class will stop tracking the gesture if the primary\npointer travels beyond [preAcceptSlopTolerance] or [postAcceptSlopTolerance]\npixels from the original contact point of the gesture.\n\nIf the [preAcceptSlopTolerance] was breached before the gesture was accepted\nin the gesture arena, the gesture will be rejected.", "detail": "", "kind": 7, "label": "PrimaryPointerGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerAddedEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The device has started tracking the pointer.\n\nFor example, the pointer might be hovering above the device, having not yet\nmade contact with the surface of the device.", "detail": "", "kind": 7, "label": "PointerAddedEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VelocityEstimate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A two dimensional velocity estimate.\n\nVelocityEstimates are computed by [VelocityTracker.getVelocityEstimate]. An\nestimate's [confidence] measures how well the velocity tracker's position\ndata fit a straight line, [duration] is the time that elapsed between the\nfirst and last position sample used to compute the velocity, and [offset]\nis similarly the difference between the first and last positions.\n\nSee also:\n\n * [VelocityTracker], which computes [VelocityEstimate]s.\n * [Velocity], which encapsulates (just) a velocity vector and provides some\n useful velocity operations.", "detail": "", "kind": 7, "label": "VelocityEstimate" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data collected during a hit test about a specific [HitTestTarget].\n\nSubclass this object to pass additional information from the hit test phase\nto the event propagation phase.", "detail": "", "kind": 7, "label": "HitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalResolvedCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The callback to register with a [PointerSignalResolver] to express\ninterest in a pointer signal event.", "detail": "(PointerSignalEvent event) → void", "kind": 7, "label": "PointerSignalResolvedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerScrollEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer issued a scroll event.\n\nScrolling the scroll wheel on a mouse is an example of an event that\nwould create a [PointerScrollEvent].", "detail": "", "kind": 7, "label": "PointerScrollEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaMember", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents an object participating in an arena.\n\nReceives callbacks from the GestureArena to notify the object when it wins\nor loses a gesture negotiation. Exactly one of [acceptGesture] or\n[rejectGesture] will be called for each arena this member was added to,\nregardless of what caused the arena to be resolved. For example, if a\nmember resolves the arena itself, that member still receives an\n[acceptGesture] callback.", "detail": "", "kind": 7, "label": "GestureArenaMember" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaTeam", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A group of [GestureArenaMember] objects that are competing as a unit in the\n[GestureArenaManager].\n\nNormally, a recognizer competes directly in the [GestureArenaManager] to\nrecognize a sequence of pointer events as a gesture. With a\n[GestureArenaTeam], recognizers can compete in the arena in a group with\nother recognizers. Arena teams may have a captain which wins the arena on\nbehalf of its team.\n\nWhen gesture recognizers are in a team together without a captain, then once\nthere are no other competing gestures in the arena, the first gesture to\nhave been added to the team automatically wins, instead of the gestures\ncontinuing to compete against each other.\n\nWhen gesture recognizers are in a team with a captain, then once one of the\nteam members claims victory or there are no other competing gestures in the\narena, the captain wins the arena, and all other team members lose.\n\nFor example, [Slider] uses a team without a captain to support both a\n[HorizontalDragGestureRecognizer] and a [TapGestureRecognizer], but without\nthe drag recognizer having to wait until the user has dragged outside the\nslop region of the tap gesture before triggering. Since they compete as a\nteam, as soon as any other recognizers are out of the arena, the drag\nrecognizer wins, even if the user has not actually dragged yet. On the other\nhand, if the tap can win outright, before the other recognizers are taken\nout of the arena (e.g. if the slider is in a vertical scrolling list and the\nuser places their finger on the touch surface then lifts it, so that neither\nthe horizontal nor vertical drag recognizers can claim victory) the tap\nrecognizer still actually wins, despite being in the team.\n\n[AndroidView] uses a team with a captain to decide which gestures are\nforwarded to the native view. For example if we want to forward taps and\nvertical scrolls to a native Android view, [TapGestureRecognizers] and\n[VerticalDragGestureRecognizer] are added to a team with a captain(the captain is set to be a\ngesture recognizer that never explicitly claims the gesture).\nThe captain allows [AndroidView] to know when any gestures in the team has been\nrecognized (or all other arena members are out), once the captain wins the\ngesture is forwarded to the Android view.\n\nTo assign a gesture recognizer to a team, set\n[OneSequenceGestureRecognizer.team] to an instance of [GestureArenaTeam].", "detail": "", "kind": 7, "label": "GestureArenaTeam" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiDragStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when [MultiDragGestureRecognizer] recognizes the start of a drag gesture.", "detail": "(Offset position) → Drag", "kind": 7, "label": "GestureMultiDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaManager", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The first member to accept or the last member to not reject wins.\n\nSee <https://flutter.dev/gestures/#gesture-disambiguation> for more\ninformation about the role this class plays in the gesture system.\n\nTo debug problems with gestures, consider using\n[debugPrintGestureArenaDiagnostics].", "detail": "", "kind": 7, "label": "GestureArenaManager" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneSequenceGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for gesture recognizers that can only recognize one\ngesture at a time. For example, a single [TapGestureRecognizer]\ncan never recognize two taps happening simultaneously, even if\nmultiple pointers are placed on the same widget.\n\nThis is in contrast to, for instance, [MultiTapGestureRecognizer],\nwhich manages each pointer independently and can consider multiple\nsimultaneous touches to each result in a separate tap.", "detail": "", "kind": 7, "label": "OneSequenceGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiDragGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement on a per-pointer basis.\n\nIn contrast to [DragGestureRecognizer], [MultiDragGestureRecognizer] watches\neach pointer separately, which means multiple drags can be recognized\nconcurrently if multiple pointers are in contact with the screen.\n\n[MultiDragGestureRecognizer] is not intended to be used directly. Instead,\nconsider using one of its subclasses to recognize specific types for drag\ngestures.\n\nSee also:\n\n * [ImmediateMultiDragGestureRecognizer], the most straight-forward variant\n of multi-pointer drag gesture recognizer.\n * [HorizontalMultiDragGestureRecognizer], which only recognizes drags that\n start horizontally.\n * [VerticalMultiDragGestureRecognizer], which only recognizes drags that\n start vertically.\n * [DelayedMultiDragGestureRecognizer], which only recognizes drags that\n start after a long-press gesture.", "detail": "", "kind": 7, "label": "MultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerExitEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerExitEvent] events.\n\nUsed by [MouseTrackerAnnotation], [Listener] and [RenderPointerListener].", "detail": "(PointerExitEvent event) → void", "kind": 7, "label": "PointerExitEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes a scale gesture.\n\n[ScaleGestureRecognizer] tracks the pointers in contact with the screen and\ncalculates their focal point, indicated scale, and rotation. When a focal\npointer is established, the recognizer calls [onStart]. As the focal point,\nscale, rotation change, the recognizer calls [onUpdate]. When the pointers\nare no longer in contact with the screen, the recognizer calls [onEnd].", "detail": "", "kind": 7, "label": "ScaleGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetailsForPointerRouter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [FlutterErrorDetails] with extra fields for the gestures\nlibrary's pointer router ([PointerRouter]).\n\nSee also [FlutterErrorDetailsForPointerEventDispatcher], which is also used\nby the gestures library.", "detail": "", "kind": 7, "label": "FlutterErrorDetailsForPointerRouter" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The possible states of a [PrimaryPointerGestureRecognizer].\n\nThe recognizer advances from [ready] to [possible] when it starts tracking a\nprimary pointer. When the primary pointer is resolved in the gesture\narena (either accepted or rejected), the recognizers advances to [defunct].\nOnce the recognizer has stopped tracking any remaining pointers, the\nrecognizer returns to [ready].", "detail": "", "kind": 13, "label": "GestureRecognizerState" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DelayedMultiDragGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement both horizontally and vertically on a per-pointer basis\nafter a delay.\n\nIn contrast to [ImmediateMultiDragGestureRecognizer],\n[DelayedMultiDragGestureRecognizer] waits for a [delay] before recognizing\nthe drag. If the pointer moves more than [kTouchSlop] before the delay\nexpires, the gesture is not recognized.\n\nIn contrast to [PanGestureRecognizer], [DelayedMultiDragGestureRecognizer]\nwatches each pointer separately, which means multiple drags can be\nrecognized concurrently if multiple pointers are in contact with the screen.\n\nSee also:\n\n * [ImmediateMultiDragGestureRecognizer], a similar recognizer but without\n the delay.\n * [PanGestureRecognizer], which recognizes only one drag gesture at a time,\n regardless of how many fingers are involved.", "detail": "", "kind": 7, "label": "DelayedMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEnterEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is not\nin contact with the device, and it has entered a target object.\n\nSee also:\n\n * [PointerHoverEvent], which reports when the pointer has moved while\n within an object.\n * [PointerExitEvent], which reports when the pointer has left an object.\n * [PointerMoveEvent], which reports movement while the pointer is in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerEnterEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestTarget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can handle events.", "detail": "", "kind": 7, "label": "HitTestTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalMultiDragGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the vertical direction on a per-pointer basis.\n\nIn contrast to [VerticalDragGestureRecognizer],\n[VerticalMultiDragGestureRecognizer] watches each pointer separately,\nwhich means multiple drags can be recognized concurrently if multiple\npointers are in contact with the screen.\n\nSee also:\n\n * [VerticalDragGestureRecognizer], a gesture recognizer that just\n looks at vertical movement.\n * [ImmediateMultiDragGestureRecognizer], a similar recognizer, but without\n the limitation that the drag must start vertically.\n * [HorizontalMultiDragGestureRecognizer], which only recognizes drags that\n start horizontally.", "detail": "", "kind": 7, "label": "VerticalMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event that corresponds to a discrete pointer signal.\n\nPointer signals are events that originate from the pointer but don't change\nthe state of the pointer itself, and are discrete rather than needing to be\ninterpreted in the context of a series of events.", "detail": "", "kind": 7, "label": "PointerSignalEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class that all gesture recognizers inherit from.\n\nProvides a basic API that can be used by classes that work with\ngesture recognizers but don't care about the specific details of\nthe gestures recognizers themselves.\n\nSee also:\n\n * [GestureDetector], the widget that is used to detect gestures.\n * [debugPrintRecognizerCallbacksTrace], a flag that can be set to help\n debug issues with gesture recognizers.", "detail": "", "kind": 7, "label": "GestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEnterEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerEnterEvent] events.\n\nUsed by [MouseTrackerAnnotation], [Listener] and [RenderPointerListener].", "detail": "(PointerEnterEvent event) → void", "kind": 7, "label": "PointerEnterEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDragGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the vertical direction.\n\nUsed for vertical scrolling.\n\nSee also:\n\n * [HorizontalDragGestureRecognizer], for a similar recognizer but for\n horizontal movement.\n * [MultiDragGestureRecognizer], for a family of gesture recognizers that\n track each touch point independently.", "detail": "", "kind": 7, "label": "VerticalDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapCancelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureMultiTapDownCallback] will not end up causing a tap.", "detail": "(int pointer) → void", "kind": 7, "label": "GestureMultiTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PanGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement both horizontally and vertically.\n\nSee also:\n\n * [ImmediateMultiDragGestureRecognizer], for a similar recognizer that\n tracks each touch point independently.\n * [DelayedMultiDragGestureRecognizer], for a similar recognizer that\n tracks each touch point independently, but that doesn't start until\n some time has passed.", "detail": "", "kind": 7, "label": "PanGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EagerGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A gesture recognizer that eagerly claims victory in all gesture arenas.\n\nThis is typically passed in [AndroidView.gestureRecognizers] in order to immediately dispatch\nall touch events inside the view bounds to the embedded Android view.\nSee [AndroidView.gestureRecognizers] for more details.", "detail": "", "kind": 7, "label": "EagerGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiTapGestureRecognizer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes taps on a per-pointer basis.\n\n[MultiTapGestureRecognizer] considers each sequence of pointer events that\ncould constitute a tap independently of other pointers: For example, down-1,\ndown-2, up-1, up-2 produces two taps, on up-1 and up-2.\n\nSee also:\n\n * [TapGestureRecognizer]", "detail": "", "kind": 7, "label": "MultiTapGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can hit-test pointers.", "detail": "", "kind": 7, "label": "HitTestable" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SpringDescription", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that describes a spring's constants.\n\nUsed to configure a [SpringSimulation].", "detail": "", "kind": 7, "label": "SpringDescription" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrictionSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simulation that applies a drag to slow a particle down.\n\nModels a particle affected by fluid drag, e.g. air resistance.\n\nThe simulation ends when the velocity of the particle drops to zero (within\nthe current velocity [tolerance]).", "detail": "", "kind": 7, "label": "FrictionSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampedSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simulation that applies limits to another simulation.\n\nThe limits are only applied to the other simulation's outputs. For example,\nif a maximum position was applied to a gravity simulation with the\nparticle's initial velocity being up, and the acceleration being down, and\nthe maximum position being between the initial position and the curve's\napogee, then the particle would return to its initial position in the same\namount of time as it would have if the maximum had not been applied; the\ndifference would just be that the position would be reported as pinned to\nthe maximum value for the times that it would otherwise have been reported\nas higher.", "detail": "", "kind": 7, "label": "ClampedSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GravitySimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simulation that applies a constant accelerating force.\n\nModels a particle that follows Newton's second law of motion. The simulation\nends when the position reaches a defined point.\n\n\nThis method triggers an [AnimationController] (a previously constructed\n`_controller` field) to simulate a fall of 300 pixels.\n\n```dart\nvoid _startFall() {\n _controller.animateWith(GravitySimulation(\n 10.0, // acceleration, pixels per second per second\n 0.0, // starting position, pixels\n 300.0, // ending position, pixels\n 0.0, // starting velocity, pixels per second\n ));\n}\n```\n\nThis [AnimationController] could be used with an [AnimatedBuilder] to\nanimate the position of a child as if it was falling.\n\nSee also:\n\n * [Curves.bounceOut], a [Curve] that has a similar aesthetics but includes\n a bouncing effect.", "detail": "", "kind": 7, "label": "GravitySimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SpringType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The kind of spring solution that the [SpringSimulation] is using to simulate the spring.\n\nSee [SpringSimulation.type].", "detail": "", "kind": 13, "label": "SpringType" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SpringSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A spring simulation.\n\nModels a particle attached to a spring that follows Hooke's law.", "detail": "", "kind": 7, "label": "SpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoundedFrictionSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [FrictionSimulation] that clamps the modeled particle to a specific range\nof values.", "detail": "", "kind": 7, "label": "BoundedFrictionSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface that [Scrollable] widgets implement in order to use\n[ScrollPosition].\n\nSee also:\n\n * [ScrollableState], which is the most common implementation of this\n interface.\n * [ScrollPosition], which uses this interface to communicate with the\n scrollable widget.", "detail": "", "kind": 7, "label": "ScrollContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalTranslation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[FractionalTranslation], even if the contents are offset such that\nthey overflow.\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [new Transform.translate], which applies an absolute offset translation\n transformation instead of an offset scaled to the child.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbsorbPointer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this widget prevents its subtree from receiving\npointer events by terminating hit testing at itself. It still consumes space\nduring layout and paints its child as usual. It just prevents its children\nfrom being the target of located events, because it returns true from\n[RenderBox.hitTest].\n\n\nSee also:\n\n * [IgnorePointer], which also prevents its children from receiving pointer\n events but is itself invisible to hit testing.", "detail": "", "kind": 7, "label": "AbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State object for a [Scrollable] widget.\n\nTo manipulate a [Scrollable] widget's scroll position, use the object\nobtained from the [position] property.\n\nTo be informed of when a [Scrollable] widget is scrolling, use a\n[NotificationListener] to listen for [ScrollNotification] notifications.\n\nThis class is not intended to be subclassed. To specialize the behavior of a\n[Scrollable], provide it with a [ScrollPhysics].", "detail": "", "kind": 7, "label": "ScrollableState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativePositionedTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which transitions the child's position\nbased on the value of [rect] relative to a bounding box with the\nspecified [size].\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [RelativePositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "RelativePositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a [Widget] when given a concrete value of a [ValueListenable<T>].\n\nIf the `child` parameter provided to the [ValueListenableBuilder] is not\nnull, the same `child` widget is passed back to this [ValueWidgetBuilder]\nand should typically be incorporated in the returned widget tree.\n\nSee also:\n\n * [ValueListenableBuilder], a widget which invokes this builder each time\n a [ValueListenable] changes value.", "detail": "(BuildContext context, T value, Widget child) → Widget", "kind": 7, "label": "ValueWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Texture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture widget refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture widgets are repainted autonomously as dictated by the backend (e.g.\non arrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by its parent widget, and the\ntexture is automatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "Texture" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePredicate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [Navigator.popUntil] predicate argument.", "detail": "(Route<dynamic> route) → bool", "kind": 7, "label": "RoutePredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Associates a [ScrollController] with a subtree.\n\nWhen a [ScrollView] has [ScrollView.primary] set to true and is not given\nan explicit [ScrollController], the [ScrollView] uses [of] to find the\n[ScrollController] associated with its subtree.\n\nThis mechanism can be used to provide default behavior for scroll views in a\nsubtree. For example, the [Scaffold] uses this mechanism to implement the\nscroll-to-top gesture on iOS.", "detail": "", "kind": 7, "label": "PrimaryScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MetaData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "MetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Element", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An instantiation of a [Widget] at a particular location in the tree.\n\nWidgets describe how to configure a subtree but the same widget can be used\nto configure multiple subtrees simultaneously because widgets are immutable.\nAn [Element] represents the use of a widget to configure a specific location\nin the tree. Over time, the widget associated with a given element can\nchange, for example, if the parent widget rebuilds and creates a new widget\nfor this location.\n\nElements form a tree. Most elements have a unique child, but some widgets\n(e.g., subclasses of [RenderObjectElement]) can have multiple children.\n\nElements have the following lifecycle:\n\n * The framework creates an element by calling [Widget.createElement] on the\n widget that will be used as the element's initial configuration.\n * The framework calls [mount] to add the newly created element to the tree\n at a given slot in a given parent. The [mount] method is responsible for\n inflating any child widgets and calling [attachRenderObject] as\n necessary to attach any associated render objects to the render tree.\n * At this point, the element is considered \"active\" and might appear on\n screen.\n * At some point, the parent might decide to change the widget used to\n configure this element, for example because the parent rebuilt with new\n state. When this happens, the framework will call [update] with the new\n widget. The new widget will always have the same [runtimeType] and key as\n old widget. If the parent wishes to change the [runtimeType] or key of\n the widget at this location in the tree, can do so by unmounting this\n element and inflating the new widget at this location.\n * At some point, an ancestor might decide to remove this element (or an\n intermediate ancestor) from the tree, which the ancestor does by calling\n [deactivateChild] on itself. Deactivating the intermediate ancestor will\n remove that element's render object from the render tree and add this\n element to the [owner]'s list of inactive elements, causing the framework\n to call [deactivate] on this element.\n * At this point, the element is considered \"inactive\" and will not appear\n on screen. An element can remain in the inactive state only until\n the end of the current animation frame. At the end of the animation\n frame, any elements that are still inactive will be unmounted.\n * If the element gets reincorporated into the tree (e.g., because it or one\n of its ancestors has a global key that is reused), the framework will\n remove the element from the [owner]'s list of inactive elements, call\n [activate] on the element, and reattach the element's render object to\n the render tree. (At this point, the element is again considered \"active\"\n and might appear on screen.)\n * If the element does not get reincorporated into the tree by the end of\n the current animation frame, the framework will call [unmount] on the\n element.\n * At this point, the element is considered \"defunct\" and will not be\n incorporated into the tree in the future.", "detail": "", "kind": 7, "label": "Element" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mutable selection state of the inspector.", "detail": "", "kind": 7, "label": "InspectorSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State associated with a [Form] widget.\n\nA [FormState] object can be used to [save], [reset], and [validate] every\n[FormField] that is a descendant of the associated [Form].\n\nTypically obtained via [Form.of].", "detail": "", "kind": 7, "label": "FormState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoActionSheetAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A button typically used in a [CupertinoActionSheet].\n\nSee also:\n\n * [CupertinoActionSheet], an alert that presents the user with a set of two or\n more choices related to the current context.", "detail": "", "kind": 7, "label": "CupertinoActionSheetAction" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeaderDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Delegate for configuring a [SliverPersistentHeader].", "detail": "", "kind": 7, "label": "SliverPersistentHeaderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A leaf node in the focus tree that can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nTo request focus, find the [FocusScopeNode] for the current [BuildContext]\nand call the [FocusScopeNode.requestFocus] method:\n\n```dart\nFocusScope.of(context).requestFocus(focusNode);\n```\n\nIf your widget requests focus, be sure to call\n`FocusScope.of(context).reparentIfNeeded(focusNode);` in your `build`\nmethod to reparent your [FocusNode] if your widget moves from one\nlocation in the tree to another.\n\n## Lifetime\n\nFocus nodes are long-lived objects. For example, if a stateful widget has a\nfocusable child widget, it should create a [FocusNode] in the\n[State.initState] method, and [dispose] it in the [State.dispose] method,\nproviding the same [FocusNode] to the focusable child each time the\n[State.build] method is run. In particular, creating a [FocusNode] each time\n[State.build] is invoked will cause the focus to be lost each time the\nwidget is built.\n\nSee also:\n\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusNode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the scale of a transformed widget.\n\nHere's an illustration of the [ScaleTransition] widget, with it's [alignment]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "ScaleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegion", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Annotates a region of the layer tree with a value.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer pushed into the layer tree.", "detail": "", "kind": 7, "label": "AnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the physics of a [Scrollable] widget.\n\nFor example, determines how the [Scrollable] will behave when the user\nreaches the maximum scroll extent or when the user stops scrolling.\n\nWhen starting a physics [Simulation], the current scroll position and\nvelocity are used as the initial conditions for the particle in the\nsimulation. The movement of the particle in the simulation is then used to\ndetermine the scroll position for the widget.", "detail": "", "kind": 7, "label": "ScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the size of one of the descendants of the object receiving\nthis notification has changed, and that therefore any assumptions about that\nlayout are no longer valid.\n\nFor example, sent by the [SizeChangedLayoutNotifier] widget whenever that\nwidget changes size.\n\nThis notification can be used for triggering repaints, but if you use this\nnotification to trigger rebuilds or relayouts, you'll create a backwards\ndependency in the frame pipeline because [SizeChangedLayoutNotification]s\nare generated during layout, which is after the build phase and in the\nmiddle of the layout phase. This backwards dependency can lead to visual\ncorruption or lags.\n\nSee [LayoutChangedNotification] for additional discussion of layout\nnotifications such as this one.\n\nSee also:\n\n * [SizeChangedLayoutNotifier], which sends this notification.\n * [LayoutChangedNotification], of which this is a subclass.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "State", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The logic and internal state for a [StatefulWidget].\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\n[State] objects are created by the framework by calling the\n[StatefulWidget.createState] method when inflating a [StatefulWidget] to\ninsert it into the tree. Because a given [StatefulWidget] instance can be\ninflated multiple times (e.g., the widget is incorporated into the tree in\nmultiple places at once), there might be more than one [State] object\nassociated with a given [StatefulWidget] instance. Similarly, if a\n[StatefulWidget] is removed from the tree and later inserted in to the tree\nagain, the framework will call [StatefulWidget.createState] again to create\na fresh [State] object, simplifying the lifecycle of [State] objects.\n\n[State] objects have the following lifecycle:\n\n * The framework creates a [State] object by calling\n [StatefulWidget.createState].\n * The newly created [State] object is associated with a [BuildContext].\n This association is permanent: the [State] object will never change its\n [BuildContext]. However, the [BuildContext] itself can be moved around\n the tree along with its subtree. At this point, the [State] object is\n considered [mounted].\n * The framework calls [initState]. Subclasses of [State] should override\n [initState] to perform one-time initialization that depends on the\n [BuildContext] or the widget, which are available as the [context] and\n [widget] properties, respectively, when the [initState] method is\n called.\n * The framework calls [didChangeDependencies]. Subclasses of [State] should\n override [didChangeDependencies] to perform initialization involving\n [InheritedWidget]s. If [BuildContext.inheritFromWidgetOfExactType] is\n called, the [didChangeDependencies] method will be called again if the\n inherited widgets subsequently change or if the widget moves in the tree.\n * At this point, the [State] object is fully initialized and the framework\n might call its [build] method any number of times to obtain a\n description of the user interface for this subtree. [State] objects can\n spontaneously request to rebuild their subtree by callings their\n [setState] method, which indicates that some of their internal state\n has changed in a way that might impact the user interface in this\n subtree.\n * During this time, a parent widget might rebuild and request that this\n location in the tree update to display a new widget with the same\n [runtimeType] and [Widget.key]. When this happens, the framework will\n update the [widget] property to refer to the new widget and then call the\n [didUpdateWidget] method with the previous widget as an argument. [State]\n objects should override [didUpdateWidget] to respond to changes in their\n associated widget (e.g., to start implicit animations). The framework\n always calls [build] after calling [didUpdateWidget], which means any\n calls to [setState] in [didUpdateWidget] are redundant.\n * During development, if a hot reload occurs (whether initiated from the\n command line `flutter` tool by pressing `r`, or from an IDE), the\n [reassemble] method is called. This provides an opportunity to\n reinitialize any data that was prepared in the [initState] method.\n * If the subtree containing the [State] object is removed from the tree\n (e.g., because the parent built a widget with a different [runtimeType]\n or [Widget.key]), the framework calls the [deactivate] method. Subclasses\n should override this method to clean up any links between this object\n and other elements in the tree (e.g. if you have provided an ancestor\n with a pointer to a descendant's [RenderObject]).\n * At this point, the framework might reinsert this subtree into another\n part of the tree. If that happens, the framework will ensure that it\n calls [build] to give the [State] object a chance to adapt to its new\n location in the tree. If the framework does reinsert this subtree, it\n will do so before the end of the animation frame in which the subtree was\n removed from the tree. For this reason, [State] objects can defer\n releasing most resources until the framework calls their [dispose]\n method.\n * If the framework does not reinsert this subtree by the end of the current\n animation frame, the framework will call [dispose], which indicates that\n this [State] object will never build again. Subclasses should override\n this method to release any resources retained by this object (e.g.,\n stop any active animations).\n * After the framework calls [dispose], the [State] object is considered\n unmounted and the [mounted] property is false. It is an error to call\n [setState] at this point. This stage of the lifecycle is terminal: there\n is no way to remount a [State] object that has been disposed.\n\nSee also:\n\n * [StatefulWidget], where the current configuration of a [State] is hosted,\n and whose documentation has sample code for [State].\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "State" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls a scrollable widget.\n\nScroll controllers are typically stored as member variables in [State]\nobjects and are reused in each [State.build]. A single scroll controller can\nbe used to control multiple scrollable widgets, but some operations, such\nas reading the scroll [offset], require the controller to be used with a\nsingle scrollable widget.\n\nA scroll controller creates a [ScrollPosition] to manage the state specific\nto an individual [Scrollable] widget. To use a custom [ScrollPosition],\nsubclass [ScrollController] and override [createScrollPosition].\n\nA [ScrollController] is a [Listenable]. It notifies its listeners whenever\nany of the attached [ScrollPosition]s notify _their_ listeners (i.e.\nwhenever any of them scroll). It does not notify its listeners when the list\nof attached [ScrollPosition]s changes.\n\nTypically used with [ListView], [GridView], [CustomScrollView].\n\nSee also:\n\n * [ListView], [GridView], [CustomScrollView], which can be controlled by a\n [ScrollController].\n * [Scrollable], which is the lower-level widget that creates and associates\n [ScrollPosition] objects with [ScrollController] objects.\n * [PageController], which is an analogous object for controlling a\n [PageView].\n * [ScrollPosition], which manages the scroll offset for an individual\n scrolling widget.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSwitch", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style switch.\n\nUsed to toggle the on/off state of a single setting.\n\nThe switch itself does not maintain any state. Instead, when the state of\nthe switch changes, the widget calls the [onChanged] callback. Most widgets\nthat use a switch will listen for the [onChanged] callback and rebuild the\nswitch with a new [value] to update the visual appearance of the switch.\n\n\nThis sample shows how to use a [CupertinoSwitch] in a [ListTile]. The\n[MergeSemantics] is used to turn the entire [ListTile] into a single item\nfor accessibility tools.\n\n```dart\nMergeSemantics(\n child: ListTile(\n title: Text('Lights'),\n trailing: CupertinoSwitch(\n value: _lights,\n onChanged: (bool value) { setState(() { _lights = value; }); },\n ),\n onTap: () { setState(() { _lights = !_lights; }); },\n ),\n)\n```\n\nSee also:\n\n * [Switch], the material design equivalent.\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/switches/>", "detail": "", "kind": 7, "label": "CupertinoSwitch" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that uses a single child layout model.\n\nSee also:\n\n * [ListView], which is a [BoxScrollView] that uses a linear layout model.\n * [GridView], which is a [BoxScrollView] that uses a 2D layout model.\n * [CustomScrollView], which can combine multiple child layout models into a\n single scroll view.", "detail": "", "kind": 7, "label": "BoxScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The text style to apply to descendant [Text] widgets without explicit style.", "detail": "", "kind": 7, "label": "DefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints a [Banner].", "detail": "", "kind": 7, "label": "BannerPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget with a preferred size.\n\nThis widget does not impose any constraints on its child, and it doesn't\naffect the child's layout in any way. It just advertises a preferred size\nwhich can be used by the parent.\n\nSee also:\n\n * [AppBar.bottom] and [Scaffold.appBar], which require preferred size widgets.\n * [PreferredSizeWidget], the interface which this widget implements to expose\n its preferred size.\n * [AppBar] and [TabBar], which implement PreferredSizeWidget.", "detail": "", "kind": 7, "label": "PreferredSize" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [InheritedWidget] that's intended to be used as the base class for\nmodels whose dependents may only depend on one part or \"aspect\" of the\noverall model.\n\nAn inherited widget's dependents are unconditionally rebuilt when the\ninherited widget changes per [InheritedWidget.updateShouldNotify].\nThis widget is similar except that dependents aren't rebuilt\nunconditionally.\n\nWidgets that depend on an [InheritedModel] qualify their dependence\nwith a value that indicates what \"aspect\" of the model they depend\non. When the model is rebuilt, dependents will also be rebuilt, but\nonly if there was a change in the model that corresponds to the aspect\nthey provided.\n\nThe type parameter `T` is the type of the model aspect objects.\n\n\nWidgets create a dependency on an [InheritedModel] with a static method:\n[InheritedModel.inheritFrom]. This method's `context` parameter\ndefines the subtree that will be rebuilt when the model changes.\nTypically the `inheritFrom` method is called from a model-specific\nstatic `of` method. For example:\n\n```dart\nclass MyModel extends InheritedModel<String> {\n // ...\n static MyModel of(BuildContext context, String aspect) {\n return InheritedModel.inheritFrom<MyModel>(context, aspect: aspect);\n }\n}\n```\n\nCalling `MyModel.of(context, 'foo')` means that `context` should only\nbe rebuilt when the `foo` aspect of `MyModel` changes. If the aspect\nis null, then the model supports all aspects.\n\nWhen the inherited model is rebuilt the [updateShouldNotify] and\n[updateShouldNotifyDependent] methods are used to decide what\nshould be rebuilt. If [updateShouldNotify] returns true, then the\ninherited model's [updateShouldNotifyDependent] method is tested for\neach dependent and the set of aspect objects it depends on.\nThe [updateShouldNotifyDependent] method must compare the set of aspect\ndependencies with the changes in the model itself.\n\nFor example:\n\n```dart\nclass ABModel extends InheritedModel<String> {\n ABModel({ this.a, this.b, Widget child }) : super(child: child);\n\n final int a;\n final int b;\n\n @override\n bool updateShouldNotify(ABModel old) {\n return a != old.a || b != old.b;\n }\n\n @override\n bool updateShouldNotifyDependent(ABModel old, Set<String> aspects) {\n return (a != old.a && aspects.contains('a'))\n || (b != old.b && aspects.contains('b'))\n }\n\n // ...\n}\n```\n\nIn the previous example the dependencies checked by\n[updateShouldNotifyDependent] are just the aspect strings passed to\n`inheritFromWidgetOfExactType`. They're represented as a [Set] because\none Widget can depend on more than one aspect of the model.\nIf a widget depends on the model but doesn't specify an aspect,\nthen changes in the model will cause the widget to be rebuilt\nunconditionally.\n\nSee also:\n\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.", "detail": "", "kind": 7, "label": "InheritedModel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTimerPicker", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A countdown timer picker in iOS style.\n\nThis picker shows a countdown duration with hour, minute and second spinners.\nThe duration is bound between 0 and 23 hours 59 minutes 59 seconds.\n\nThere are several modes of the timer picker listed in [CupertinoTimerPickerMode].\n\nSee also:\n\n * [CupertinoDatePicker], the class that implements different display modes\n of the iOS-style date picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 7, "label": "CupertinoTimerPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that displays widgets in the [Navigator]'s [Overlay].", "detail": "", "kind": 7, "label": "OverlayRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that establishes a page storage bucket for this widget subtree.", "detail": "", "kind": 7, "label": "PageStorage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPopupSurface", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Rounded rectangle surface that looks like an iOS popup surface, e.g., alert dialog\nand action sheet.\n\nA [CupertinoPopupSurface] can be configured to paint or not paint a white\ncolor on top of its blurred area. Typical usage should paint white on top\nof the blur. However, the white paint can be disabled for the purpose of\nrendering divider gaps for a more complicated layout, e.g., [CupertinoAlertDialog].\nAdditionally, the white paint can be disabled to render a blurred rounded\nrectangle without any color (similar to iOS's volume control popup).\n\nSee also:\n\n * [CupertinoAlertDialog], which is a dialog with a title, content, and\n actions.\n * <https://developer.apple.com/ios/human-interface-guidelines/views/alerts/>", "detail": "", "kind": 7, "label": "CupertinoPopupSurface" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPadding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Padding] which automatically transitions the\nindentation over a given duration whenever the given inset changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.", "detail": "", "kind": 7, "label": "AnimatedPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for localized resource values for the lowest levels of the Flutter\nframework.\n\nIn particular, this maps locales to a specific [Directionality] using the\n[textDirection] property.\n\nSee also:\n\n * [DefaultWidgetsLocalizations], which implements this interface and\n supports a variety of locales.", "detail": "", "kind": 7, "label": "WidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Orientation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether in portrait or landscape.", "detail": "", "kind": 13, "label": "Orientation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers.\n\n`T` is the type of gesture recognizer this class manages.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal group of cells in a [Table].\n\nEvery row in a table must have the same number of children.\n\nThe alignment of individual cells in a row can be controlled using a\n[TableCell].", "detail": "", "kind": 7, "label": "TableRow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollUpdateNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has changed its scroll position.\n\nSee also:\n\n * [OverscrollNotification], which indicates that a [Scrollable] widget\n has not changed its scroll position because the change would have caused\n its scroll position to go outside its scroll bounds.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollUpdateNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that renders an exception's message.\n\nThis widget is used when a build method fails, to help with determining\nwhere the problem lies. Exceptions are also logged to the console, which you\ncan read using `flutter logs`. The console will also include additional\ninformation such as the stack trace for the exception.", "detail": "", "kind": 7, "label": "ErrorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSegmentedControl", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style segmented control.\n\nDisplays the widgets provided in the [Map] of [children] in a\nhorizontal list. Used to select between a number of mutually exclusive\noptions. When one option in the segmented control is selected, the other\noptions in the segmented control cease to be selected.\n\nA segmented control can feature any [Widget] as one of the values in its\n[Map] of [children]. The type T is the type of the keys used\nto identify each widget and determine which widget is selected. As\nrequired by the [Map] class, keys must be of consistent types\nand must be comparable. The ordering of the keys will determine the order\nof the widgets in the segmented control.\n\nWhen the state of the segmented control changes, the widget calls the\n[onValueChanged] callback. The map key associated with the newly selected\nwidget is returned in the [onValueChanged] callback. Typically, widgets\nthat use a segmented control will listen for the [onValueChanged] callback\nand rebuild the segmented control with a new [groupValue] to update which\noption is currently selected.\n\nThe [children] will be displayed in the order of the keys in the [Map].\nThe height of the segmented control is determined by the height of the\ntallest widget provided as a value in the [Map] of [children].\nThe width of each child in the segmented control will be equal to the width\nof widest child, unless the combined width of the children is wider than\nthe available horizontal space. In this case, the available horizontal space\nis divided by the number of provided [children] to determine the width of\neach widget. The selection area for each of the widgets in the [Map] of\n[children] will then be expanded to fill the calculated space, so each\nwidget will appear to have the same dimensions.\n\nA segmented control may optionally be created with custom colors. The\n[unselectedColor], [selectedColor], [borderColor], and [pressedColor]\narguments can be used to override the segmented control's colors from\n[CupertinoTheme] defaults.\n\nSee also:\n\n * <https://developer.apple.com/design/human-interface-guidelines/ios/controls/segmented-controls/>", "detail": "", "kind": 7, "label": "CupertinoSegmentedControl" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flexible", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Row], [Column], or [Flex] flexes.\n\nUsing a [Flexible] widget gives a child of a [Row], [Column], or [Flex]\nthe flexibility to expand to fill the available space in the main axis\n(e.g., horizontally for a [Row] or vertically for a [Column]), but, unlike\n[Expanded], [Flexible] does not require the child to fill the available\nspace.\n\nA [Flexible] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Flexible] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\nSee also:\n\n * [Expanded], which forces the child to expand to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flexible" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [Viewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "NestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Row", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a horizontal array.\n\nTo cause a child to expand to fill the available horizontal space, wrap the\nchild in an [Expanded] widget.\n\nThe [Row] widget does not scroll (and in general it is considered an error\nto have more children in a [Row] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a vertical variant, see [Column].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example divides the available space into three (horizontally), and\nplaces text centered in the first two cells and the Flutter logo centered in\nthe third:\n\n```dart\nRow(\n children: <Widget>[\n Expanded(\n child: Text('Deliver features faster', textAlign: TextAlign.center),\n ),\n Expanded(\n child: Text('Craft beautiful UIs', textAlign: TextAlign.center),\n ),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\n## Troubleshooting\n\n### Why does my row have a yellow and black warning stripe?\n\nIf the non-flexible contents of the row (those that are not wrapped in\n[Expanded] or [Flexible] widgets) are together wider than the row itself,\nthen the row is said to have overflowed. When a row overflows, the row does\nnot have any remaining space to share between its [Expanded] and [Flexible]\nchildren. The row reports this by drawing a yellow and black striped\nwarning box on the edge that is overflowing. If there is room on the outside\nof the row, the amount of overflow is printed in red lettering.\n\n\n#### Story time\n\nSuppose, for instance, that you had this code:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nThe row first asks its first child, the [FlutterLogo], to lay out, at\nwhatever size the logo would like. The logo is friendly and happily decides\nto be 24 pixels to a side. This leaves lots of room for the next child. The\nrow then asks that next child, the text, to lay out, at whatever size it\nthinks is best.\n\nAt this point, the text, not knowing how wide is too wide, says \"Ok, I will\nbe thiiiiiiiiiiiiiiiiiiiis wide.\", and goes well beyond the space that the\nrow has available, not wrapping. The row responds, \"That's not fair, now I\nhave no more room available for my other children!\", and gets angry and\nsprouts a yellow and black strip.\n\nThe fix is to wrap the second child in an [Expanded] widget, which tells the\nrow that the child should be given the remaining room:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Expanded(\n child: Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n ),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nNow, the row first asks the logo to lay out, and then asks the _icon_ to lay\nout. The [Icon], like the logo, is happy to take on a reasonable size (also\n24 pixels, not coincidentally, since both [FlutterLogo] and [Icon] honor the\nambient [IconTheme]). This leaves some room left over, and now the row tells\nthe text exactly how wide to be: the exact width of the remaining space. The\ntext, now happy to comply to a reasonable request, wraps the text within\nthat width, and you end up with a paragraph split over several lines.\n\n## Layout algorithm\n\n_This section describes how a [Row] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Row] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded horizontal constraints and the incoming\n vertical constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight vertical constraints that\n match the incoming max height.\n2. Divide the remaining horizontal space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of horizontal space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same vertical constraints\n as in step 1, but instead of using unbounded horizontal constraints, use\n horizontal constraints based on the amount of space allocated in step 2.\n Children with [Flexible.fit] properties that are [FlexFit.tight] are\n given tight constraints (i.e., forced to fill the allocated space), and\n children with [Flexible.fit] properties that are [FlexFit.loose] are\n given loose constraints (i.e., not forced to fill the allocated space).\n4. The height of the [Row] is the maximum height of the children (which will\n always satisfy the incoming vertical constraints).\n5. The width of the [Row] is determined by the [mainAxisSize] property. If\n the [mainAxisSize] property is [MainAxisSize.max], then the width of the\n [Row] is the max width of the incoming constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the width of the [Row] is the sum\n of widths of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any horizontal\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Column], for a vertical equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may by sized smaller (leaving some remaining room unused).\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Row" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A snapping physics that always lands directly on items instead of anywhere\nwithin the scroll extent.\n\nBehaves similarly to a slot machine wheel except the ballistics simulation\nnever overshoots and rolls back within a single item if it's to settle on\nthat item.\n\nMust be used with a scrollable that uses a [FixedExtentScrollController].\n\nDefers back to the parent beyond the scroll extents.", "detail": "", "kind": 7, "label": "FixedExtentScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedOpacity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Opacity] which automatically transitions the child's\nopacity over a given duration whenever the given opacity changes.\n\nAnimating an opacity is relatively expensive because it requires painting\nthe child into an intermediate buffer.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\n\n```dart\nclass LogoFade extends StatefulWidget {\n @override\n createState() => LogoFadeState();\n}\n\nclass LogoFadeState extends State<LogoFade> {\n double opacityLevel = 1.0;\n\n void _changeOpacity() {\n setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedOpacity(\n opacity: opacityLevel,\n duration: Duration(seconds: 3),\n child: FlutterLogo(),\n ),\n RaisedButton(\n child: Text('Fade Logo'),\n onPressed: _changeOpacity,\n ),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [FadeTransition], an explicitly animated version of this widget, where\n an [Animation] is provided by the caller instead of being built in.", "detail": "", "kind": 7, "label": "AnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboardListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls a callback whenever the user presses or releases a key\non a keyboard.\n\nA [RawKeyboardListener] is useful for listening to raw key events and\nhardware buttons that are represented as keys. Typically used by games and\nother apps that use keyboards for purposes other than text entry.\n\nFor text entry, consider using a [EditableText], which integrates with\non-screen keyboards and input method editors (IMEs).\n\nSee also:\n\n * [EditableText], which should be used instead of this widget for text\n entry.", "detail": "", "kind": 7, "label": "RawKeyboardListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place in an [Overlay] that can contain a widget.\n\nOverlay entries are inserted into an [Overlay] using the\n[OverlayState.insert] or [OverlayState.insertAll] functions. To find the\nclosest enclosing overlay for a given [BuildContext], use the [Overlay.of]\nfunction.\n\nAn overlay entry can be in at most one overlay at a time. To remove an entry\nfrom its overlay, call the [remove] function on the overlay entry.\n\nBecause an [Overlay] uses a [Stack] layout, overlay entries can use\n[Positioned] and [AnimatedPositioned] to position themselves within the\noverlay.\n\nFor example, [Draggable] uses an [OverlayEntry] to show the drag avatar that\nfollows the user's finger across the screen after the drag begins. Using the\noverlay to display the drag avatar lets the avatar float over the other\nwidgets in the app. As the user's finger moves, draggable calls\n[markNeedsBuild] on the overlay entry to cause it to rebuild. It its build,\nthe entry includes a [Positioned] with its top and left property set to\nposition the drag avatar near the user's finger. When the drag is over,\n[Draggable] removes the entry from the overlay to remove the drag avatar\nfrom view.\n\nBy default, if there is an entirely [opaque] entry over this one, then this\none will not be included in the widget tree (in particular, stateful widgets\nwithin the overlay entry will not be instantiated). To ensure that your\noverlay entry is still built even if it is not visible, set [maintainState]\nto true. This is more expensive, so should be done with care. In particular,\nif widgets in an overlay entry with [maintainState] set to true repeatedly\ncall [State.setState], the user's battery will be drained unnecessarily.\n\nSee also:\n\n * [Overlay]\n * [OverlayState]\n * [WidgetsApp]\n * [MaterialApp]", "detail": "", "kind": 7, "label": "OverlayEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HoldScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing but can be released to resume\nnormal idle behavior.\n\nThis is used while the user is touching the [Scrollable] but before the\ntouch has become a [Drag].\n\nFor the purposes of [ScrollNotification]s, this activity does not constitute\nscrolling, and does not prevent the user from interacting with the contents\nof the [Scrollable] (unlike when a drag has begun or there is a scroll\nanimation underway).", "detail": "", "kind": 7, "label": "HoldScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenableBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget whose content stays synced with a [ValueListenable].\n\nGiven a [ValueListenable<T>] and a [builder] which builds widgets from\nconcrete values of `T`, this class will automatically register itself as a\nlistener of the [ValueListenable] and call the [builder] with updated values\nwhen the value changes.\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nvalue of the [ValueListenable], it's more efficient to build that subtree\nonce instead of rebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\n[ValueListenableBuilder] will pass it back to your [builder] function so\nthat you can incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis sample shows how you could use a [ValueListenableBuilder] instead of\nsetting state on the whole [Scaffold] in the default `flutter create` app.\n\n```dart\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State<MyHomePage> {\n final ValueNotifier<int> _counter = ValueNotifier<int>(0);\n final Widget goodJob = const Text('Good job!');\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title)\n ),\n body: Center(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pushed the button this many times:'),\n ValueListenableBuilder(\n builder: (BuildContext context, int value, Widget child) {\n // This builder will only get called when the _counter\n // is updated.\n return Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: <Widget>[\n Text('$value'),\n child,\n ],\n );\n },\n valueListenable: _counter,\n // The child parameter is most helpful if the child is\n // expensive to build and does not depend on the value from\n // the notifier.\n child: goodJob,\n )\n ],\n ),\n ),\n floatingActionButton: FloatingActionButton(\n child: Icon(Icons.plus_one),\n onPressed: () => _counter.value += 1,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedBuilder], which also triggers rebuilds from a [Listenable]\n without passing back a specific value from a [ValueListenable].\n * [NotificationListener], which lets you rebuild based on [Notification]\n coming from its descendant widgets rather than a [ValueListenable] that\n you have a direct reference to.\n * [StreamBuilder], where a builder can depend on a [Stream] rather than\n a [ValueListenable] for more advanced use cases.", "detail": "", "kind": 7, "label": "ValueListenableBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route with entrance and exit transitions.", "detail": "", "kind": 7, "label": "TransitionRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePageBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's primary contents.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildPage] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) → Widget", "kind": 7, "label": "RoutePageBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of a method that provides a [BuildContext] and\n[ScrollController] for building a widget that may overflow the draggable\n[Axis] of the containing [DraggableScrollSheet].\n\nUsers should apply the [scrollController] to a [ScrollView] subclass, such\nas a [SingleChildScrollView], [ListView] or [GridView], to have the whole\nsheet be draggable.", "detail": "(BuildContext context, ScrollController scrollController) → Widget", "kind": 7, "label": "ScrollableWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that builds a widget given an [Orientation].\n\nUsed by [OrientationBuilder.builder].", "detail": "(BuildContext context, Orientation orientation) → Widget", "kind": 7, "label": "OrientationWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the constructor that is called when an error occurs while\nbuilding a widget.\n\nThe argument provides information regarding the cause of the error.\n\nSee also:\n\n * [ErrorWidget.builder], which can be set to override the default\n [ErrorWidget] builder.\n * [FlutterError.reportError], which is typically called with the same\n [FlutterErrorDetails] object immediately prior to [ErrorWidget.builder]\n being called.", "detail": "(FlutterErrorDetails details) → Widget", "kind": 7, "label": "ErrorWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the localized resource values used by the Cupertino widgets.\n\nSee also:\n\n * [DefaultCupertinoLocalizations], the default, English-only, implementation\n of this interface.", "detail": "", "kind": 7, "label": "CupertinoLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes how [Scrollable] widgets should behave.\n\nUsed by [ScrollConfiguration] to configure the [Scrollable] widgets in a\nsubtree.", "detail": "", "kind": 7, "label": "ScrollBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetAccept", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for causing a [DragTarget] to accept the given data.\n\nUsed by [DragTarget.onAccept].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has a child widget provided to it, instead of building a new\nwidget.\n\nUseful as a base class for other widgets, such as [InheritedWidget] and\n[ParentDataWidget].\n\nSee also:\n\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [ParentDataWidget], for widgets that populate the\n [RenderObject.parentData] slot of their child's [RenderObject] to\n configure the parent widget's layout.\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "ProxyWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleTickerProviderStateMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides a single [Ticker] that is configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create the [AnimationController] in a [State] that only uses a single\n[AnimationController], mix in this class, then pass `vsync: this`\nto the animation controller constructor.\n\nThis mixin only supports vending a single ticker. If you might have multiple\n[AnimationController] objects over the lifetime of the [State], use a full\n[TickerProviderStateMixin] instead.", "detail": "", "kind": 7, "label": "SingleTickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NeverScrollableScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that does not allow the user to scroll.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "NeverScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectionChangedCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the selection change callback used by\n[WidgetInspectorService.selectionChangedCallback].", "detail": "() → void", "kind": 7, "label": "InspectorSelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcher", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that by default does a [FadeTransition] between a new widget and\nthe widget previously set on the [AnimatedSwitcher] as a child.\n\nIf they are swapped fast enough (i.e. before [duration] elapses), more than\none previous child can exist and be transitioning out while the newest one\nis transitioning in.\n\nIf the \"new\" child is the same widget type and key as the \"old\" child, but\nwith different parameters, then [AnimatedSwitcher] will *not* do a\ntransition between them, since as far as the framework is concerned, they\nare the same widget and the existing widget can be updated with the new\nparameters. To force the transition to occur, set a [Key] on each child\nwidget that you wish to be considered unique (typically a [ValueKey] on the\nwidget data that distinguishes this child from the others).\n\nThe same key can be used for a new child as was used for an already-outgoing\nchild; the two will not be considered related. (For example, if a progress\nindicator with key A is first shown, then an image with key B, then another\nprogress indicator with key A again, all in rapid succession, then the old\nprogress indicator and the image will be fading out while a new progress\nindicator is fading in.)\n\n\n```dart\nclass ClickCounter extends StatefulWidget {\n const ClickCounter({Key key}) : super(key: key);\n\n @override\n _ClickCounterState createState() => _ClickCounterState();\n}\n\nclass _ClickCounterState extends State<ClickCounter> {\n int _count = 0;\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Material(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n AnimatedSwitcher(\n duration: const Duration(milliseconds: 500),\n transitionBuilder: (Widget child, Animation<double> animation) {\n return ScaleTransition(child: child, scale: animation);\n },\n child: Text(\n '$_count',\n // This key causes the AnimatedSwitcher to interpret this as a \"new\"\n // child each time the count changes, so that it will begin its animation\n // when the count changes.\n key: ValueKey<int>(_count),\n style: Theme.of(context).textTheme.display1,\n ),\n ),\n RaisedButton(\n child: const Text('Increment'),\n onPressed: () {\n setState(() {\n _count += 1;\n });\n },\n ),\n ],\n ),\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedCrossFade], which only fades between two children, but also\n interpolates their sizes, and is reversible.\n * [FadeTransition] which [AnimatedSwitcher] uses to perform the transition.", "detail": "", "kind": 7, "label": "AnimatedSwitcher" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPrototypeExtentList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places its box children in a linear array and constrains them\nto have the same extent as a prototype item along the main axis.\n\n[SliverPrototypeExtentList] arranges its children in a line along\nthe main axis starting at offset zero and without gaps. Each child is\nconstrained to the same extent as the [prototypeItem] along the main axis\nand the [SliverConstraints.crossAxisExtent] along the cross axis.\n\n[SliverPrototypeExtentList] is more efficient than [SliverList] because\n[SliverPrototypeExtentList] does not need to lay out its children to obtain\ntheir extent along the main axis. It's a little more flexible than\n[SliverFixedExtentList] because there's no need to determine the appropriate\nitem extent in pixels.\n\nSee also:\n\n * [SliverFixedExtentList], whose itemExtent is a pixel value.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverPrototypeExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivityDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A backend for a [ScrollActivity].\n\nUsed by subclasses of [ScrollActivity] to manipulate the scroll view that\nthey are acting upon.\n\nSee also:\n\n * [ScrollActivity], which uses this class as its delegate.\n * [ScrollPositionWithSingleContext], the main implementation of this interface.", "detail": "", "kind": 7, "label": "ScrollActivityDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rectangle.\n\nBy default, [ClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].\n\n[ClipRect] is commonly used with these widgets, which commonly paint outside\ntheir bounds:\n\n * [CustomPaint]\n * [CustomSingleChildLayout]\n * [CustomMultiChildLayout]\n * [Align] and [Center] (e.g., if [Align.widthFactor] or\n [Align.heightFactor] is less than 1.0).\n * [OverflowBox]\n * [SizedOverflowBox]\n\n\nFor example, by combining a [ClipRect] with an [Align], one can show just\nthe top half of an [Image]:\n\n```dart\nClipRect(\n child: Align(\n alignment: Alignment.topCenter,\n heightFactor: 0.5,\n child: Image.network(userAvatarUrl),\n ),\n)\n```\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutId", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metadata for identifying children in a [CustomMultiChildLayout].\n\nThe [MultiChildLayoutDelegate.hasChild],\n[MultiChildLayoutDelegate.layoutChild], and\n[MultiChildLayoutDelegate.positionChild] methods use these identifiers.", "detail": "", "kind": 7, "label": "LayoutId" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Placeholder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a box that represents where other widgets will one day\nbe added.\n\nThis widget is useful during development to indicate that the interface is\nnot yet complete.\n\nBy default, the placeholder is sized to fit its container. If the\nplaceholder is in an unbounded space, it will size itself according to the\ngiven [fallbackWidth] and [fallbackHeight].", "detail": "", "kind": 7, "label": "Placeholder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RebuildDirtyWidgetCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugOnRebuildDirtyWidget] implementations.", "detail": "(Element e, bool builtOnce) → void", "kind": 7, "label": "RebuildDirtyWidgetCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConfirmDismissCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to give the application an opportunity to\nconfirm or veto a dismiss gesture.\n\nUsed by [Dismissible.confirmDismiss].", "detail": "(DismissDirection direction) → Future<bool>", "kind": 7, "label": "ConfirmDismissCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a multiple box children that each fill the viewport.\n\n[SliverFillViewport] places its children in a linear array along the main\naxis. Each child is sized to fill the viewport, both in the main and cross\naxis.\n\nSee also:\n\n * [SliverFixedExtentList], which has a configurable\n [SliverFixedExtentList.itemExtent].\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay show two time series. The first shows how much time was required\non this thread to produce each frame. The second shows how much time was\nrequired on the GPU thread to produce each frame. Ideally, both these values\nwould be less than the total frame budget for the hardware on which the app\nis running. For example, if the hardware has a screen that updates at 60 Hz,\neach thread should ideally spend less than 16ms producing each frame. This\nideal condition is indicated by a green vertical line for each thread.\nOtherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "PerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildListDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using an explicit list.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[SliverChildBuilderDelegate] or by subclassing [SliverChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.\n\nThe widgets in the given [children] list are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\nSee [SliverChildBuilderDelegate] for sample code using\n`semanticIndexOffset` and `semanticIndexCallback`.\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.", "detail": "", "kind": 7, "label": "SliverChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling view inside of which can be nested other scrolling views, with\ntheir scroll positions being intrinsically linked.\n\nThe most common use case for this widget is a scrollable view with a\nflexible [SliverAppBar] containing a [TabBar] in the header (build by\n[headerSliverBuilder], and with a [TabBarView] in the [body], such that the\nscrollable view's contents vary based on which tab is visible.\n\n## Motivation\n\nIn a normal [ScrollView], there is one set of slivers (the components of the\nscrolling view). If one of those slivers hosted a [TabBarView] which scrolls\nin the opposite direction (e.g. allowing the user to swipe horizontally\nbetween the pages represented by the tabs, while the list scrolls\nvertically), then any list inside that [TabBarView] would not interact with\nthe outer [ScrollView]. For example, flinging the inner list to scroll to\nthe top would not cause a collapsed [SliverAppBar] in the outer [ScrollView]\nto expand.\n\n[NestedScrollView] solves this problem by providing custom\n[ScrollController]s for the outer [ScrollView] and the inner [ScrollView]s\n(those inside the [TabBarView], hooking them together so that they appear,\nto the user, as one coherent scroll view.\n\n\nThis example shows a [NestedScrollView] whose header is the combination of a\n[TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a\n[SliverOverlapAbsorber]/[SliverOverlapInjector] pair to make the inner lists\nalign correctly, and it uses [SafeArea] to avoid any horizontal disturbances\n(e.g. the \"notch\" on iOS when the phone is horizontal). In addition,\n[PageStorageKey]s are used to remember the scroll position of each tab's\nlist.\n\nIn the example below, `_tabs` is a list of strings, one for each tab, giving\nthe tab labels. In a real application, it would be replaced by the actual\ndata model being represented.\n\n```dart\nDefaultTabController(\n length: _tabs.length, // This is the number of tabs.\n child: NestedScrollView(\n headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {\n // These are the slivers that show up in the \"outer\" scroll view.\n return <Widget>[\n SliverOverlapAbsorber(\n // This widget takes the overlapping behavior of the SliverAppBar,\n // and redirects it to the SliverOverlapInjector below. If it is\n // missing, then it is possible for the nested \"inner\" scroll view\n // below to end up under the SliverAppBar even when the inner\n // scroll view thinks it has not been scrolled.\n // This is not necessary if the \"headerSliverBuilder\" only builds\n // widgets that do not overlap the next sliver.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n child: SliverAppBar(\n title: const Text('Books'), // This is the title in the app bar.\n pinned: true,\n expandedHeight: 150.0,\n // The \"forceElevated\" property causes the SliverAppBar to show\n // a shadow. The \"innerBoxIsScrolled\" parameter is true when the\n // inner scroll view is scrolled beyond its \"zero\" point, i.e.\n // when it appears to be scrolled below the SliverAppBar.\n // Without this, there are cases where the shadow would appear\n // or not appear inappropriately, because the SliverAppBar is\n // not actually aware of the precise position of the inner\n // scroll views.\n forceElevated: innerBoxIsScrolled,\n bottom: TabBar(\n // These are the widgets to put in each tab in the tab bar.\n tabs: _tabs.map((String name) => Tab(text: name)).toList(),\n ),\n ),\n ),\n ];\n },\n body: TabBarView(\n // These are the contents of the tab views, below the tabs.\n children: _tabs.map((String name) {\n return SafeArea(\n top: false,\n bottom: false,\n child: Builder(\n // This Builder is needed to provide a BuildContext that is \"inside\"\n // the NestedScrollView, so that sliverOverlapAbsorberHandleFor() can\n // find the NestedScrollView.\n builder: (BuildContext context) {\n return CustomScrollView(\n // The \"controller\" and \"primary\" members should be left\n // unset, so that the NestedScrollView can control this\n // inner scroll view.\n // If the \"controller\" property is set, then this scroll\n // view will not be associated with the NestedScrollView.\n // The PageStorageKey should be unique to this ScrollView;\n // it allows the list to remember its scroll position when\n // the tab view is not on the screen.\n key: PageStorageKey<String>(name),\n slivers: <Widget>[\n SliverOverlapInjector(\n // This is the flip side of the SliverOverlapAbsorber above.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n ),\n SliverPadding(\n padding: const EdgeInsets.all(8.0),\n // In this example, the inner scroll view has\n // fixed-height list items, hence the use of\n // SliverFixedExtentList. However, one could use any\n // sliver widget here, e.g. SliverList or SliverGrid.\n sliver: SliverFixedExtentList(\n // The items in this example are fixed to 48 pixels\n // high. This matches the Material Design spec for\n // ListTile widgets.\n itemExtent: 48.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n // This builder is called for each child.\n // In this example, we just number each list item.\n return ListTile(\n title: Text('Item $index'),\n );\n },\n // The childCount of the SliverChildBuilderDelegate\n // specifies how many children this inner list\n // has. In this example, each tab has a list of\n // exactly 30 items, but this is arbitrary.\n childCount: 30,\n ),\n ),\n ),\n ],\n );\n },\n ),\n );\n }).toList(),\n ),\n ),\n)\n```", "detail": "", "kind": 7, "label": "NestedScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshControlIndicatorBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a builder that can create a different widget to show in the\nrefresh indicator space depending on the current state of the refresh\ncontrol and the space available.\n\nThe `refreshTriggerPullDistance` and `refreshIndicatorExtent` parameters are\nthe same values passed into the [CupertinoSliverRefreshControl].\n\nThe `pulledExtent` parameter is the currently available space either from\noverscrolling or as held by the sliver during refresh.", "detail": "(BuildContext context, RefreshIndicatorMode refreshState, double pulledExtent, double refreshTriggerPullDistance, double refreshIndicatorExtent) → Widget", "kind": 7, "label": "RefreshControlIndicatorBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list that works page by page.\n\nEach child of a page view is forced to be the same size as the viewport.\n\nYou can use a [PageController] to control which page is visible in the view.\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nThe [PageController] can also be used to control the\n[PageController.initialPage], which determines which page is shown when the\n[PageView] is first constructed, and the [PageController.viewportFraction],\nwhich determines the size of the pages as a fraction of the viewport size.\n\n\nSee also:\n\n * [PageController], which controls which page is visible in the view.\n * [SingleChildScrollView], when you need to make a single child scrollable.\n * [ListView], for a scrollable list of boxes.\n * [GridView], for a scrollable grid of boxes.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "PageView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBoxTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DecoratedBox] that animates the different properties\nof its [Decoration].\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [DecoratedBox], which also draws a [Decoration] but is not animated.\n * [AnimatedContainer], a more full-featured container that also animates on\n decoration using an internal animation.", "detail": "", "kind": 7, "label": "DecoratedBoxTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Decoration]s.\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[Decoration.lerp].\n\nFor [ShapeDecoration]s which know how to [ShapeDecoration.lerpTo] or\n[ShapeDecoration.lerpFrom] each other, this will produce a smooth\ninterpolation between decorations.\n\nSee also:\n\n * [Tween] for a discussion on how to use interpolation objects.\n * [ShapeDecoration], [RoundedRectangleBorder], [CircleBorder], and\n [StadiumBorder] for examples of shape borders that can be smoothly\n interpolated.\n * [BoxBorder] for a border that can only be smoothly interpolated between other\n [BoxBorder]s.", "detail": "", "kind": 7, "label": "DecorationTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [RenderObjectWidget] as its configuration.\n\n[RenderObjectElement] objects have an associated [RenderObject] widget in\nthe render tree, which handles concrete operations like laying out,\npainting, and hit testing.\n\nContrast with [ComponentElement].\n\nFor details on the lifecycle of an element, see the discussion at [Element].\n\n## Writing a RenderObjectElement subclass\n\nThere are three common child models used by most [RenderObject]s:\n\n* Leaf render objects, with no children: The [LeafRenderObjectElement] class\n handles this case.\n\n* A single child: The [SingleChildRenderObjectElement] class handles this\n case.\n\n* A linked list of children: The [MultiChildRenderObjectElement] class\n handles this case.\n\nSometimes, however, a render object's child model is more complicated. Maybe\nit has a two-dimensional array of children. Maybe it constructs children on\ndemand. Maybe it features multiple lists. In such situations, the\ncorresponding [Element] for the [Widget] that configures that [RenderObject]\nwill be a new subclass of [RenderObjectElement].\n\nSuch a subclass is responsible for managing children, specifically the\n[Element] children of this object, and the [RenderObject] children of its\ncorresponding [RenderObject].\n\n### Specializing the getters\n\n[RenderObjectElement] objects spend much of their time acting as\nintermediaries between their [widget] and their [renderObject]. To make this\nmore tractable, most [RenderObjectElement] subclasses override these getters\nso that they return the specific type that the element expects, e.g.:\n\n```dart\nclass FooElement extends RenderObjectElement {\n\n @override\n Foo get widget => super.widget;\n\n @override\n RenderFoo get renderObject => super.renderObject;\n\n // ...\n}\n```\n\n### Slots\n\nEach child [Element] corresponds to a [RenderObject] which should be\nattached to this element's render object as a child.\n\nHowever, the immediate children of the element may not be the ones that\neventually produce the actual [RenderObject] that they correspond to. For\nexample a [StatelessElement] (the element of a [StatelessWidget]) simply\ncorresponds to whatever [RenderObject] its child (the element returned by\nits [StatelessWidget.build] method) corresponds to.\n\nEach child is therefore assigned a _slot_ token. This is an identifier whose\nmeaning is private to this [RenderObjectElement] node. When the descendant\nthat finally produces the [RenderObject] is ready to attach it to this\nnode's render object, it passes that slot token back to this node, and that\nallows this node to cheaply identify where to put the child render object\nrelative to the others in the parent render object.\n\n### Updating children\n\nEarly in the lifecycle of an element, the framework calls the [mount]\nmethod. This method should call [updateChild] for each child, passing in\nthe widget for that child, and the slot for that child, thus obtaining a\nlist of child [Element]s.\n\nSubsequently, the framework will call the [update] method. In this method,\nthe [RenderObjectElement] should call [updateChild] for each child, passing\nin the [Element] that was obtained during [mount] or the last time [update]\nwas run (whichever happened most recently), the new [Widget], and the slot.\nThis provides the object with a new list of [Element] objects.\n\nWhere possible, the [update] method should attempt to map the elements from\nthe last pass to the widgets in the new pass. For example, if one of the\nelements from the last pass was configured with a particular [Key], and one\nof the widgets in this new pass has that same key, they should be paired up,\nand the old element should be updated with the widget (and the slot\ncorresponding to the new widget's new position, also). The [updateChildren]\nmethod may be useful in this regard.\n\n[updateChild] should be called for children in their logical order. The\norder can matter; for example, if two of the children use [PageStorage]'s\n`writeState` feature in their build method (and neither has a [Widget.key]),\nthen the state written by the first will be overwritten by the second.\n\n#### Dynamically determining the children during the build phase\n\nThe child widgets need not necessarily come from this element's widget\nverbatim. They could be generated dynamically from a callback, or generated\nin other more creative ways.\n\n#### Dynamically determining the children during layout\n\nIf the widgets are to be generated at layout time, then generating them when\nthe [update] method won't work: layout of this element's render object\nhasn't started yet at that point. Instead, the [update] method can mark the\nrender object as needing layout (see [RenderObject.markNeedsLayout]), and\nthen the render object's [RenderObject.performLayout] method can call back\nto the element to have it generate the widgets and call [updateChild]\naccordingly.\n\nFor a render object to call an element during layout, it must use\n[RenderObject.invokeLayoutCallback]. For an element to call [updateChild]\noutside of its [update] method, it must use [BuildOwner.buildScope].\n\nThe framework provides many more checks in normal operation than it does\nwhen doing a build during layout. For this reason, creating widgets with\nlayout-time build semantics should be done with great care.\n\n#### Handling errors when building\n\nIf an element calls a builder function to obtain widgets for its children,\nit may find that the build throws an exception. Such exceptions should be\ncaught and reported using [FlutterError.reportError]. If a child is needed\nbut a builder has failed in this way, an instance of [ErrorWidget] can be\nused instead.\n\n### Detaching children\n\nIt is possible, when using [GlobalKey]s, for a child to be proactively\nremoved by another element before this element has been updated.\n(Specifically, this happens when the subtree rooted at a widget with a\nparticular [GlobalKey] is being moved from this element to an element\nprocessed earlier in the build phase.) When this happens, this element's\n[forgetChild] method will be called with a reference to the affected child\nelement.\n\nThe [forgetChild] method of a [RenderObjectElement] subclass must remove the\nchild element from its child list, so that when it next [update]s its\nchildren, the removed child is not considered.\n\nFor performance reasons, if there are many elements, it may be quicker to\ntrack which elements were forgotten by storing them in a [Set], rather than\nproactively mutating the local record of the child list and the identities\nof all the slots. For example, see the implementation of\n[MultiChildRenderObjectElement].\n\n### Maintaining the render object tree\n\nOnce a descendant produces a render object, it will call\n[insertChildRenderObject]. If the descendant's slot changes identity, it\nwill call [moveChildRenderObject]. If a descendant goes away, it will call\n[removeChildRenderObject].\n\nThese three methods should update the render tree accordingly, attaching,\nmoving, and detaching the given child render object from this element's own\nrender object respectively.\n\n### Walking the children\n\nIf a [RenderObjectElement] object has any children [Element]s, it must\nexpose them in its implementation of the [visitChildren] method. This method\nis used by many of the framework's internal mechanisms, and so should be\nfast. It is also used by the test framework and [debugDumpApp].", "detail": "", "kind": 7, "label": "RenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which takes a specific\n[Animation<RelativeRect>] to transition the child's position from a start\nposition to an end position over the lifetime of the animation.\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [PositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "PositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlockSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops the semantics of all widget that were painted before it\nin the same semantic container.\n\nThis is useful to hide widgets from accessibility tools that are painted\nbehind a certain widget, e.g. an alert should usually disallow interaction\nwith any widget located \"behind\" the alert (even when they are still\npartially visible). Similarly, an open [Drawer] blocks interactions with\nany widget outside the drawer.\n\nSee also:\n\n * [ExcludeSemantics] which drops all semantics of its descendants.", "detail": "", "kind": 7, "label": "BlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDetector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures.\n\nAttempts to recognize gestures that correspond to its non-null callbacks.\n\nIf this widget has a child, it defers to that child for its sizing behavior.\nIf it does not have a child, it grows to fit the parent instead.\n\nBy default a GestureDetector with an invisible child ignores touches;\nthis behavior can be controlled with [behavior].\n\nGestureDetector also listens for accessibility events and maps\nthem to the callbacks. To ignore accessibility events, set\n[excludeFromSemantics] to true.\n\nSee <http://flutter.dev/gestures/> for additional information.\n\nMaterial design applications typically react to touches with ink splash\neffects. The [InkWell] class implements this effect and can be used in place\nof a [GestureDetector] for handling taps.\n\n\nThis example makes a rectangle react to being tapped by setting the\n`_lights` field:\n\n```dart\nGestureDetector(\n onTap: () {\n setState(() { _lights = true; });\n },\n child: Container(\n color: Colors.yellow,\n child: Text('TURN LIGHTS ON'),\n ),\n)\n```\n\n## Debugging\n\nTo see how large the hit test box of a [GestureDetector] is for debugging\npurposes, set [debugPaintPointersEnabled] to true.", "detail": "", "kind": 7, "label": "GestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[SliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [SliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children.\n\n\nIf the children have a fixed extent in the main axis, consider using\n[SliverFixedExtentList] rather than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis and is therefore more efficient.\n\n\nSee also:\n\n * [SliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalizationsDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A factory for a set of localized resources of type `T`, to be loaded by a\n[Localizations] widget.\n\nTypical applications have one [Localizations] widget which is created by the\n[WidgetsApp] and configured with the app's `localizationsDelegates`\nparameter (a list of delegates). The delegate's [type] is used to identify\nthe object created by an individual delegate's [load] method.", "detail": "", "kind": 7, "label": "LocalizationsDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback function that's invoked when the [CupertinoSliverRefreshControl] is\npulled a `refreshTriggerPullDistance`. Must return a [Future]. Upon\ncompletion of the [Future], the [CupertinoSliverRefreshControl] enters the\n[RefreshIndicatorMode.done] state and will start to go away.", "detail": "() → Future<void>", "kind": 7, "label": "RefreshCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that hook [ParentData] information to children of\n[RenderObjectWidget]s.\n\nThis can be used to provide per-child configuration for\n[RenderObjectWidget]s with more than one child. For example, [Stack] uses\nthe [Positioned] parent data widget to position each child.\n\nA [ParentDataWidget] is specific to a particular kind of [RenderObject], and\nthus also to a particular [RenderObjectWidget] class. That class is `T`, the\n[ParentDataWidget] type argument.\n\n\nThis example shows how you would build a [ParentDataWidget] to configure a\n`FrogJar` widget's children by specifying a [Size] for each one.\n\n```dart\nclass FrogSize extends ParentDataWidget<FrogJar> {\n FrogSize({\n Key key,\n @required this.size,\n @required Widget child,\n }) : assert(child != null),\n assert(size != null),\n super(key: key, child: child);\n\n final Size size;\n\n @override\n void applyParentData(RenderObject renderObject) {\n final FrogJarParentData parentData = renderObject.parentData;\n if (parentData.size != size) {\n parentData.size = size;\n final RenderFrogJar targetParent = renderObject.parent;\n targetParent.markNeedsLayout();\n }\n }\n}\n```\n\nSee also:\n\n * [RenderObject], the superclass for layout algorithms.\n * [RenderObject.parentData], the slot that this class configures.\n * [ParentData], the superclass of the data that will be placed in\n [RenderObject.parentData] slots.\n * [RenderObjectWidget], the class for widgets that wrap [RenderObject]s.\n The `T` type parameter for [ParentDataWidget] is a [RenderObjectWidget].\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.", "detail": "", "kind": 7, "label": "ParentDataWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProviderStateMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides [Ticker] objects that are configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create an [AnimationController] in a class that uses this mixin, pass\n`vsync: this` to the animation controller constructor whenever you\ncreate a new animation controller.\n\nIf you only have a single [Ticker] (for example only a single\n[AnimationController]) for the lifetime of your [State], then using a\n[SingleTickerProviderStateMixin] is more efficient. This is the common case.", "detail": "", "kind": 7, "label": "TickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetToRenderBoxAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An adapter for placing a specific [RenderBox] in the widget tree.\n\nA given render object can be placed at most once in the widget tree. This\nwidget enforces that restriction by keying itself using a [GlobalObjectKey]\nfor the given render object.", "detail": "", "kind": 7, "label": "WidgetToRenderBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ValueKey] that defines where [PageStorage] values will be saved.\n\n[Scrollable]s ([ScrollPosition]s really) use [PageStorage] to save their\nscroll offset. Each time a scroll completes, the scrollable's page\nstorage is updated.\n\n[PageStorage] is used to save and restore values that can outlive the widget.\nThe values are stored in a per-route [Map] whose keys are defined by the\n[PageStorageKey]s for the widget and its ancestors. To make it possible\nfor a saved value to be found when a widget is recreated, the key's values\nmust not be objects whose identity will change each time the widget is created.\n\nFor example, to ensure that the scroll offsets for the scrollable within\neach `MyScrollableTabView` below are restored when the [TabBarView]\nis recreated, we've specified [PageStorageKey]s whose values are the\ntabs' string labels.\n\n```dart\nTabBarView(\n children: myTabs.map((Tab tab) {\n MyScrollableTabView(\n key: PageStorageKey<String>(tab.text), // like 'Tab 1'\n tab: tab,\n ),\n }),\n)\n```", "detail": "", "kind": 7, "label": "PageStorageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatelessWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatelessElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenConstructor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a [Tween] factory.\n\nThis is the type of one of the arguments of [TweenVisitor], the signature\nused by [AnimatedWidgetBaseState.forEachTween].", "detail": "(T targetValue) → Tween<T>", "kind": 7, "label": "TweenConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigationToolbar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[NavigationToolbar] is a layout helper to position 3 widgets or groups of\nwidgets along a horizontal axis that's sensible for an application's\nnavigation bar such as in Material Design and in iOS.\n\nThe [leading] and [trailing] widgets occupy the edges of the widget with\nreasonable size constraints while the [middle] widget occupies the remaining\nspace in either a center aligned or start aligned fashion.\n\nEither directly use the themed app bars such as the Material [AppBar] or\nthe iOS [CupertinoNavigationBar] or wrap this widget with more theming\nspecifications for your own custom app bar.", "detail": "", "kind": 7, "label": "NavigationToolbar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines which portion of the content is visible in a scroll view.\n\nThe [pixels] value determines the scroll offset that the scroll view uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThe [ScrollPosition] applies [physics] to scrolling, and stores the\n[minScrollExtent] and [maxScrollExtent].\n\nScrolling is controlled by the current [activity], which is set by\n[beginActivity]. [ScrollPosition] itself does not start any activities.\nInstead, concrete subclasses, such as [ScrollPositionWithSingleContext],\ntypically start activities in response to user input or instructions from a\n[ScrollController].\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\n## Subclassing ScrollPosition\n\nOver time, a [Scrollable] might have many different [ScrollPosition]\nobjects. For example, if [Scrollable.physics] changes type, [Scrollable]\ncreates a new [ScrollPosition] with the new physics. To transfer state from\nthe old instance to the new instance, subclasses implement [absorb]. See\n[absorb] for more details.\n\nSubclasses also need to call [didUpdateScrollDirection] whenever\n[userScrollDirection] changes values.\n\nSee also:\n\n * [Scrollable], which uses a [ScrollPosition] to determine which portion of\n its content to display.\n * [ScrollController], which can be used with [ListView], [GridView] and\n other scrollable widgets to control a [ScrollPosition].\n * [ScrollPositionWithSingleContext], which is the most commonly used\n concrete subclass of [ScrollPosition].\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeMatcher", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This class is a work-around for the \"is\" operator not accepting a variable value as its right operand", "detail": "", "kind": 7, "label": "TypeMatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given [Listenable] changes value.\n\n[AnimatedWidget] is most commonly used with [Animation] objects, which are\n[Listenable], but it can be used with any [Listenable], including\n[ChangeNotifier] and [ValueNotifier].\n\n[AnimatedWidget] is most useful for widgets that are otherwise stateless. To\nuse [AnimatedWidget], simply subclass it and implement the build function.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedWidget].\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with TickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return SpinningContainer(controller: _controller);\n }\n}\n\nclass SpinningContainer extends AnimatedWidget {\n const SpinningContainer({Key key, AnimationController controller})\n : super(key: key, listenable: controller);\n\n Animation<double> get _progress => listenable;\n\n @override\n Widget build(BuildContext context) {\n return Transform.rotate(\n angle: _progress.value * 2.0 * math.pi,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n );\n }\n}\n```\n\nFor more complex case involving additional state, consider using\n[AnimatedBuilder].\n\nSee also:\n\n * [AnimatedBuilder], which is useful for more complex use cases.\n * [Animation], which is a [Listenable] object that can be used for\n [listenable].\n * [ChangeNotifier], which is another [Listenable] object that can be used\n for [listenable].", "detail": "", "kind": 7, "label": "AnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformTarget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be targeted by a [CompositedTransformFollower].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\nupdates the [link] object so that any [CompositedTransformFollower] widgets\nthat are subsequently composited in the same frame and were given the same\n[LayerLink] can position themselves at the same screen location.\n\nA single [CompositedTransformTarget] can be followed by multiple\n[CompositedTransformFollower] widgets.\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nany linked [CompositedTransformFollower]s.\n\nSee also:\n\n * [CompositedTransformFollower], the widget that can target this one.\n * [LeaderLayer], the layer that implements this widget's logic.", "detail": "", "kind": 7, "label": "CompositedTransformTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for being notified when a form field changes value.\n\nUsed by [FormField.onSaved].", "detail": "(T newValue) → void", "kind": 7, "label": "FormFieldSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoNavigationBarBackButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A nav bar back button typically used in [CupertinoNavigationBar].\n\nThis is automatically inserted into [CupertinoNavigationBar] and\n[CupertinoSliverNavigationBar]'s `leading` slot when\n`automaticallyImplyLeading` is true.\n\nShows a back chevron and the previous route's title when available from\nthe previous [CupertinoPageRoute.title]. If [previousPageTitle] is specified,\nit will be shown instead.", "detail": "", "kind": 7, "label": "CupertinoNavigationBarBackButton" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.pageRouteBuilder].\n\nCreates a [PageRoute] using the given [RouteSettings] and [WidgetBuilder].", "detail": "(RouteSettings settings, WidgetBuilder builder) → PageRoute<T>", "kind": 7, "label": "PageRouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverToBoxAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box widget.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverToBoxAdapter]\nis a basic sliver that creates a bridge back to one of the usual box-based\nwidgets.\n\nRather than using multiple [SliverToBoxAdapter] widgets to display multiple\nbox widgets in a [CustomScrollView], consider using [SliverList],\n[SliverFixedExtentList], [SliverPrototypeExtentList], or [SliverGrid],\nwhich are more efficient because they instantiate only those children that\nare actually visible through the scroll view's viewport.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.\n * [SliverList], which displays multiple box widgets in a linear array.\n * [SliverFixedExtentList], which displays multiple box widgets with the\n same main-axis extent in a linear array.\n * [SliverPrototypeExtentList], which displays multiple box widgets with the\n same main-axis extent as a prototype item, in a linear array.\n * [SliverGrid], which displays multiple box widgets in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GenerateAppTitle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.onGenerateTitle].\n\nUsed to generate a value for the app's [Title.title], which the device uses\nto identify the app for the user. The `context` includes the [WidgetsApp]'s\n[Localizations] widget so that this method can be used to produce a\nlocalized title.\n\nThis function must not return null.", "detail": "(BuildContext context) → String", "kind": 7, "label": "GenerateAppTitle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextCapitalization", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how the platform keyboard will select an uppercase or\nlowercase keyboard.\n\nOnly supports text keyboards, other keyboard types will ignore this\nconfiguration. Capitalization is locale-aware.", "detail": "", "kind": 13, "label": "TextCapitalization" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlayChanged", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting changes to the selection component of a\n[TextEditingValue] for the purposes of a [TextSelectionOverlay]. The\n[caretRect] argument gives the location of the caret in the coordinate space\nof the [RenderBox] given by the [TextSelectionOverlay.renderObject].\n\nUsed by [TextSelectionOverlay.onSelectionOverlayChanged].", "detail": "(TextEditingValue value, Rect caretRect) → void", "kind": 7, "label": "TextSelectionOverlayChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of the [LayoutBuilder] builder function.", "detail": "(BuildContext context, BoxConstraints constraints) → Widget", "kind": 7, "label": "LayoutWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImagePhase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The phases a [FadeInImage] goes through.", "detail": "", "kind": 13, "label": "FadeInImagePhase" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SlideTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the position of a widget relative to its normal position.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nBy default, the offsets are applied in the coordinate system of the canvas\n(so positive x offsets move the child towards the right). If a\n[textDirection] is provided, then the offsets are applied in the reading\ndirection, so in right-to-left text, positive x offsets move towards the\nleft, and in left-to-right text, positive x offsets move towards the right.\n\nHere's an illustration of the [SlideTransition] widget, with it's [position]\nanimated by a [CurvedAnimation] set to [Curves.elasticIn]:\n\nSee also:\n\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SlideTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyleTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [TextStyle]s.\n\nThis class specializes the interpolation of [Tween<TextStyle>] to use\n[TextStyle.lerp].\n\nThis will not work well if the styles don't set the same fields.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "TextStyleTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildLoopingListDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies infinite children for [ListWheelScrollView] by\nlooping an explicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildLoopingListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates its own size and clips and aligns its child.\n\n[SizeTransition] acts as a [ClipRect] that animates either its width or its\nheight, depending upon the value of [axis]. The alignment of the child along\nthe [axis] is specified by the [axisAlignment].\n\nLike most widgets, [SizeTransition] will conform to the constraints it is\ngiven, so be sure to put it in a context where it can change size. For\ninstance, if you place it into a [Container] with a fixed size, then the\n[SizeTransition] will not be able to change size, and will appear to do\nnothing.\n\nHere's an illustration of the [SizeTransition] widget, with it's [sizeFactor]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [AnimatedCrossFade], for a widget that automatically animates between\n the sizes of two children, fading between them.\n * [ScaleTransition], a widget that scales the size of the child instead of\n clipping it.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SizeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IdleScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing.\n\nWhen a scroll view is not scrolling, it is performing the idle activity.\n\nIf the [Scrollable] changes dimensions, this activity triggers a ballistic\nactivity to restore the view.", "detail": "", "kind": 7, "label": "IdleScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building children of a [DragTarget].\n\nThe `candidateData` argument contains the list of drag data that is hovering\nover this [DragTarget] and that has passed [DragTarget.onWillAccept]. The\n`rejectedData` argument contains the list of drag data that is hovering over\nthis [DragTarget] and that will not be accepted by the [DragTarget].\n\nUsed by [DragTarget.builder].", "detail": "(BuildContext context, List<T> candidateData, List<dynamic> rejectedData) → Widget", "kind": 7, "label": "DragTargetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticIndexCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback which produces a semantic index given a widget and the local index.\n\nReturn a null value to prevent a widget from receiving an index.\n\nA semantic index is used to tag child semantic nodes for accessibility\nannouncements in scroll view.\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.\n * [SliverChildBuilderDelegate], for an explanation of how this is used to\n generate indexes.", "detail": "(Widget widget, int localIndex) → int", "kind": 7, "label": "SemanticIndexCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotificationPredicate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A predicate for [ScrollNotification], used to customize widgets that\nlisten to notifications from their children.", "detail": "(ScrollNotification notification) → bool", "kind": 7, "label": "ScrollNotificationPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated widget that automatically transitions its size over a given\nduration whenever the given child's size changes.", "detail": "", "kind": 7, "label": "AnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IgnorePointer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is invisible during hit testing.\n\nWhen [ignoring] is true, this widget (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because it returns\nfalse from [RenderBox.hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [AbsorbPointer], which also prevents its children from receiving pointer\n events but is itself visible to hit testing.", "detail": "", "kind": 7, "label": "IgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteObserver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that notifies [RouteAware]s of changes to the\nstate of their [Route].\n\n[RouteObserver] informs subscribers whenever a route of type `R` is pushed\non top of their own route of type `R` or popped from it. This is for example\nuseful to keep track of page transitions, e.g. a `RouteObserver<PageRoute>`\nwill inform subscribed [RouteAware]s whenever the user navigates away from\nthe current page route to another page route.\n\nTo be informed about route changes of any type, consider instantiating a\n`RouteObserver<Route>`.\n\n## Type arguments\n\nWhen using more aggressive\n[lints](http://dart-lang.github.io/linter/lints/), in particular lints such\nas `always_specify_types`, the Dart analyzer will require that certain types\nbe given with their type arguments. Since the [Route] class and its\nsubclasses have a type argument, this includes the arguments passed to this\nclass. Consider using `dynamic` to specify the entire class of routes rather\nthan only specific subtypes. For example, to watch for all [PageRoute]\nvariants, the `RouteObserver<PageRoute<dynamic>>` type may be used.\n\n\nTo make a [StatefulWidget] aware of its current [Route] state, implement\n[RouteAware] in its [State] and subscribe it to a [RouteObserver]:\n\n```dart\n// Register the RouteObserver as a navigation observer.\nfinal RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();\nvoid main() {\n runApp(MaterialApp(\n home: Container(),\n navigatorObservers: [routeObserver],\n ));\n}\n\nclass RouteAwareWidget extends StatefulWidget {\n State<RouteAwareWidget> createState() => RouteAwareWidgetState();\n}\n\n// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.\nclass RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n routeObserver.subscribe(this, ModalRoute.of(context));\n }\n\n @override\n void dispose() {\n routeObserver.unsubscribe(this);\n super.dispose();\n }\n\n @override\n void didPush() {\n // Route was pushed onto navigator and is now topmost route.\n }\n\n @override\n void didPopNext() {\n // Covering route was popped off the navigator.\n }\n\n @override\n Widget build(BuildContext context) => Container();\n\n}\n```", "detail": "", "kind": 7, "label": "RouteObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Future].\n\nThe [future] must have been obtained earlier, e.g. during [State.initState],\n[State.didUpdateConfig], or [State.didChangeDependencies]. It must not be\ncreated during the [State.build] or [StatelessWidget.build] method call when\nconstructing the [FutureBuilder]. If the [future] is created at the same\ntime as the [FutureBuilder], then every time the [FutureBuilder]'s parent is\nrebuilt, the asynchronous task will be restarted.\n\nA general guideline is to assume that every `build` method could get called\nevery frame, and to treat omitted calls as an optimization.\n\n\n## Timing\n\nWidget rebuilding is scheduled by the completion of the future, using\n[State.setState], but is otherwise decoupled from the timing of the future.\nThe [builder] callback is called at the discretion of the Flutter pipeline, and\nwill thus receive a timing-dependent sub-sequence of the snapshots that\nrepresent the interaction with the future.\n\nA side-effect of this is that providing a new but already-completed future\nto a [FutureBuilder] will result in a single frame in the\n[ConnectionState.waiting] state. This is because there is no way to\nsynchronously determine that a [Future] has already completed.\n\n## Builder contract\n\nFor a future that completes successfully with data, assuming [initialData]\nis null, the [builder] will be called with either both or only the latter of\nthe following snapshots:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withData(ConnectionState.done, 'some data')`\n\nIf that same future instead completed with an error, the [builder] would be\ncalled with either both or only the latter of:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withError(ConnectionState.done, 'some error')`\n\nThe initial snapshot data can be controlled by specifying [initialData]. You\nwould use this facility to ensure that if the [builder] is invoked before\nthe future completes, the snapshot carries data of your choice rather than\nthe default null value.\n\nThe data and error fields of the snapshot change only as the connection\nstate field transitions from `waiting` to `done`, and they will be retained\nwhen changing the [FutureBuilder] configuration to another future. If the\nold future has already completed successfully with data as above, changing\nconfiguration to a new future results in snapshot pairs of the form:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.none, 'data of first future')`\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, 'data of second future')`\n\nIn general, the latter will be produced only when the new future is\nnon-null, and the former only when the old future is non-null.\n\nA [FutureBuilder] behaves identically to a [StreamBuilder] configured with\n`future?.asStream()`, except that snapshots with `ConnectionState.active`\nmay appear for the latter, depending on how the stream is implemented.\n\n\nThis sample shows a [FutureBuilder] configuring a text label to show the\nstate of an asynchronous calculation returning a string. Assume the\n`_calculation` field is set by pressing a button elsewhere in the UI.\n\n```dart\nFutureBuilder<String>(\n future: _calculation, // a previously-obtained Future<String> or null\n builder: (BuildContext context, AsyncSnapshot<String> snapshot) {\n switch (snapshot.connectionState) {\n case ConnectionState.none:\n return Text('Press button to start.');\n case ConnectionState.active:\n case ConnectionState.waiting:\n return Text('Awaiting result...');\n case ConnectionState.done:\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n return Text('Result: ${snapshot.data}');\n }\n return null; // unreachable\n },\n)\n```", "detail": "", "kind": 7, "label": "FutureBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of an [Align] that animates its [Align.alignment] property.\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "AlignTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherLayoutBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom layouts for\n[AnimatedSwitcher].\n\nThe builder should return a widget which contains the given children, laid\nout as desired. It must not return null. The builder should be able to\nhandle an empty list of `previousChildren`, or a null `currentChild`.\n\nThe `previousChildren` list is an unmodifiable list, sorted with the oldest\nat the beginning and the newest at the end. It does not include the\n`currentChild`.", "detail": "(Widget currentChild, List<Widget> previousChildren) → Widget", "kind": 7, "label": "AnimatedSwitcherLayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositionedDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PositionedDirectional] which automatically transitions\nthe child's position over a given duration whenever the given position\nchanges.\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositionedDirectional] will trigger\na relayout as well. ([SlideTransition] is also text-direction-aware.)\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositioned], which specifies the widget's position visually (the\n same as this widget, but for animating [Positioned]).", "detail": "", "kind": 7, "label": "AnimatedPositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCell", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Table] is aligned.\n\nA [TableCell] widget must be a descendant of a [Table], and the path from\nthe [TableCell] widget to its enclosing [Table] must contain only\n[TableRow]s, [StatelessWidget]s, or [StatefulWidget]s (not\nother kinds of widgets, like [RenderObjectWidget]s).", "detail": "", "kind": 7, "label": "TableCell" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteAware", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for objects that are aware of their current [Route].\n\nThis is used with [RouteObserver] to make a widget aware of changes to the\n[Navigator]'s session history.", "detail": "", "kind": 7, "label": "RouteAware" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [LeafRenderObjectWidget] as its configuration.", "detail": "", "kind": 7, "label": "LeafRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorObserver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for observing the behavior of a [Navigator].", "detail": "", "kind": 7, "label": "NavigatorObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPicker", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled picker.\n\nDisplays its children widgets on a wheel for selection and\ncalls back when the currently selected item changes.\n\nCan be used with [showCupertinoModalPopup] to display the picker modally at the\nbottom of the screen.\n\nSee also:\n\n * [ListWheelScrollView], the generic widget backing this picker without\n the iOS design specific chrome.\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/pickers/>", "detail": "", "kind": 7, "label": "CupertinoPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [State.setState] functions.", "detail": "(VoidCallback fn) → void", "kind": 7, "label": "StateSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that merges the semantics of its descendants.\n\nCauses all the semantics of the subtree rooted at this node to be\nmerged into one node in the semantics tree. For example, if you\nhave a widget with a Text node next to a checkbox widget, this\ncould be used to merge the label from the Text node with the\n\"checked\" semantic state of the checkbox into a single node that\nhad both the label and the checked state. Otherwise, the label\nwould be presented as a separate feature than the checkbox, and\nthe user would not be able to be sure that they were related.\n\nBe aware that if two nodes in the subtree have conflicting\nsemantics, the result may be nonsensical. For example, a subtree\nwith a checked checkbox and an unchecked checkbox will be\npresented as checked. All the labels will be merged into a single\nstring (with newlines separating each label from the other). If\nmultiple nodes in the merged subtree can handle semantic gestures,\nthe first one in tree order will be the one to receive the\ncallbacks.", "detail": "", "kind": 7, "label": "MergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that automatically dispatches a [SizeChangedLayoutNotification]\nwhen the layout dimensions of its child change.\n\nThe notification is not sent for the initial layout (since the size doesn't\nchange in that case, it's just established).\n\nTo listen for the notification dispatched by this widget, use a\n[NotificationListener<SizeChangedLayoutNotification>].\n\nThe [Material] class listens for [LayoutChangedNotification]s, including\n[SizeChangedLayoutNotification]s, to repaint [InkResponse] and [InkWell] ink\neffects. When a widget is likely to change size, wrapping it in a\n[SizeChangedLayoutNotifier] will cause the ink effects to correctly repaint\nwhen the child changes size.\n\nSee also:\n\n * [Notification], the base class for notifications that bubble through the\n widget tree.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Notification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that can bubble up the widget tree.\n\nYou can determine the type of a notification using the `is` operator to\ncheck the [runtimeType] of the notification.\n\nTo listen for notifications in a subtree, use a [NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].", "detail": "", "kind": 7, "label": "Notification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBindingObserver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for classes that register with the Widgets layer binding.\n\nWhen used as a mixin, provides no-op method implementations.\n\nSee [WidgetsBinding.addObserver] and [WidgetsBinding.removeObserver].\n\nThis class can be extended directly, to get default behaviors for all of the\nhandlers, or can used with the `implements` keyword, in which case all the\nhandlers must be implemented (and the analyzer will list those that have\nbeen omitted).\n\n\nThis [StatefulWidget] implements the parts of the [State] and\n[WidgetsBindingObserver] protocols necessary to react to application\nlifecycle messages. See [didChangeAppLifecycleState].\n\n```dart\nclass AppLifecycleReactor extends StatefulWidget {\n const AppLifecycleReactor({ Key key }) : super(key: key);\n\n @override\n _AppLifecycleReactorState createState() => _AppLifecycleReactorState();\n}\n\nclass _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {\n @override\n void initState() {\n super.initState();\n WidgetsBinding.instance.addObserver(this);\n }\n\n @override\n void dispose() {\n WidgetsBinding.instance.removeObserver(this);\n super.dispose();\n }\n\n AppLifecycleState _notification;\n\n @override\n void didChangeAppLifecycleState(AppLifecycleState state) {\n setState(() { _notification = state; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Text('Last notification: $_notification');\n }\n}\n```\n\nTo respond to other notifications, replace the [didChangeAppLifecycleState]\nmethod above with other methods from this class.", "detail": "", "kind": 7, "label": "WidgetsBindingObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls how [Scrollable] widgets behave in a subtree.\n\nThe scroll configuration determines the [ScrollPhysics] and viewport\ndecorations used by descendants of [child].", "detail": "", "kind": 7, "label": "ScrollConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interactive button within either material's [BottomNavigationBar]\nor the iOS themed [CupertinoTabBar] with an icon and title.\n\nThis class is rarely used in isolation. It is typically embedded in one of\nthe bottom navigation widgets above.\n\nSee also:\n\n * [BottomNavigationBar]\n * <https://material.io/design/components/bottom-navigation.html>\n * [CupertinoTabBar]\n * <https://developer.apple.com/ios/human-interface-guidelines/bars/tab-bars>", "detail": "", "kind": 7, "label": "BottomNavigationBarItem" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that enables inspecting the child widget's structure.\n\nSelect a location on your device or emulator and view what widgets and\nrender object that best matches the location. An outline of the selected\nwidget and terse summary information is shown on device with detailed\ninformation is shown in the observatory or in IntelliJ when using the\nFlutter Plugin.\n\nThe inspector has a select mode and a view mode.\n\nIn the select mode, tapping the device selects the widget that best matches\nthe location of the touch and switches to view mode. Dragging a finger on\nthe device selects the widget under the drag location but does not switch\nmodes. Touching the very edge of the bounding box of a widget triggers\nselecting the widget even if another widget that also overlaps that\nlocation would otherwise have priority.\n\nIn the view mode, the previously selected widget is outlined, however,\ntouching the device has the same effect it would have if the inspector\nwasn't present. This allows interacting with the application and viewing how\nthe selected widget changes position. Clicking on the select icon in the\nbottom left corner of the application switches back to select mode.", "detail": "", "kind": 7, "label": "WidgetInspector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshIndicatorMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of the refresh control.\n\nPassed into the [RefreshControlIndicatorBuilder] builder function so\nusers can show different UI in different modes.", "detail": "", "kind": 13, "label": "RefreshIndicatorMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rounded rectangle.\n\nBy default, [ClipRRect] uses its own bounds as the base rectangle for the\nclip, but the size and location of the clip can be customized using a custom\n[clipper].\n\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Hero", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that marks its child as being a candidate for\n[hero animations](https://flutter.dev/docs/development/ui/animations/hero-animations).\n\nWhen a [PageRoute] is pushed or popped with the [Navigator], the entire\nscreen's content is replaced. An old route disappears and a new route\nappears. If there's a common visual feature on both routes then it can\nbe helpful for orienting the user for the feature to physically move from\none page to the other during the routes' transition. Such an animation\nis called a *hero animation*. The hero widgets \"fly\" in the Navigator's\noverlay during the transition and while they're in-flight they're, by\ndefault, not shown in their original locations in the old and new routes.\n\nTo label a widget as such a feature, wrap it in a [Hero] widget. When\nnavigation happens, the [Hero] widgets on each route are identified\nby the [HeroController]. For each pair of [Hero] widgets that have the\nsame tag, a hero animation is triggered.\n\nIf a [Hero] is already in flight when navigation occurs, its\nflight animation will be redirected to its new destination. The\nwidget shown in-flight during the transition is, by default, the\ndestination route's [Hero]'s child.\n\nFor a Hero animation to trigger, the Hero has to exist on the very first\nframe of the new page's animation.\n\nRoutes must not contain more than one [Hero] for each [tag].\n\n\n## Discussion\n\nHeroes and the [Navigator]'s [Overlay] [Stack] must be axis-aligned for\nall this to work. The top left and bottom right coordinates of each animated\nHero will be converted to global coordinates and then from there converted\nto that [Stack]'s coordinate space, and the entire Hero subtree will, for\nthe duration of the animation, be lifted out of its original place, and\npositioned on that stack. If the [Hero] isn't axis aligned, this is going to\nfail in a rather ugly fashion. Don't rotate your heroes!\n\nTo make the animations look good, it's critical that the widget tree for the\nhero in both locations be essentially identical. The widget of the *target*\nis, by default, used to do the transition: when going from route A to route\nB, route B's hero's widget is placed over route A's hero's widget. If a\n[flightShuttleBuilder] is supplied, its output widget is shown during the\nflight transition instead.\n\nBy default, both route A and route B's heroes are hidden while the\ntransitioning widget is animating in-flight above the 2 routes.\n[placeholderBuilder] can be used to show a custom widget in their place\ninstead once the transition has taken flight.\n\nDuring the transition, the transition widget is animated to route B's hero's\nposition, and then the widget is inserted into route B. When going back from\nB to A, route A's hero's widget is, by default, placed over where route B's\nhero's widget was, and then the animation goes the other way.\n\n### Nested Navigators\n\nIf either or both routes contain nested [Navigator]s, only [Hero]s\ncontained in the top-most routes (as defined by [Route.isCurrent]) *of those\nnested [Navigator]s* are considered for animation. Just like in the\nnon-nested case the top-most routes containing these [Hero]s in the nested\n[Navigator]s have to be [PageRoute]s.\n\n## Parts of a Hero Transition\n\n![Diagrams with parts of the Hero transition.](https://flutter.github.io/assets-for-api-docs/assets/interaction/heroes.png)", "detail": "", "kind": 7, "label": "Hero" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoIcons", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifiers for the supported Cupertino icons.\n\nUse with the [Icon] class to show specific icons.\n\nIcons are identified by their name as listed below.\n\nTo use this class, make sure you add a dependency on `cupertino_icons` in your\nproject's `pubspec.yaml` file. This ensures that the CupertinoIcons font is\nincluded in your application. This font is used to display the icons. For example:\n\n```yaml\nname: my_awesome_application\n\ndependencies:\n cupertino_icons: ^0.1.0\n```\n\nSee also:\n\n * [Icon], used to show these icons.\n * <https://github.com/flutter/cupertino_icons/blob/master/map.png>, a map of the icons in this icons font.", "detail": "", "kind": 7, "label": "CupertinoIcons" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultCupertinoLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "US English strings for the cupertino widgets.", "detail": "", "kind": 7, "label": "DefaultCupertinoLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Scrollable] to build the viewport through which the\nscrollable content is displayed.", "detail": "(BuildContext context, ViewportOffset position) → Widget", "kind": 7, "label": "ViewportBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses an [InheritedWidget] as its configuration.", "detail": "", "kind": 7, "label": "InheritedElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styling specifications for a [CupertinoTheme].\n\nAll constructor parameters can be null, in which case a\n[CupertinoColors.activeBlue] based default iOS theme styling is used.\n\nParameters can also be partially specified, in which case some parameters\nwill cascade down to other dependent parameters to create a cohesive\nvisual effect. For instance, if a [primaryColor] is specified, it would\ncascade down to affect some fonts in [textTheme] if [textTheme] is not\nspecified.\n\nSee also:\n\n * [CupertinoTheme], in which this [CupertinoThemeData] is inserted.\n * [ThemeData], a Material equivalent that also configures Cupertino\n styling via a [CupertinoThemeData] subclass [MaterialBasedCupertinoThemeData].", "detail": "", "kind": 7, "label": "CupertinoThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformFollower", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that follows a [CompositedTransformTarget].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\napplies a transformation that causes it to provide its child with a\ncoordinate space that matches that of the linked [CompositedTransformTarget]\nwidget, offset by [offset].\n\nThe [LayerLink] object used as the [link] must be the same object as that\nprovided to the matching [CompositedTransformTarget].\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nthis [CompositedTransformFollower].\n\nHit testing on descendants of this widget will only work if the target\nposition is within the box that this widget's parent considers to be\nhittable. If the parent covers the screen, this is trivially achievable, so\nthis widget is usually used as the root of an [OverlayEntry] in an app-wide\n[Overlay] (e.g. as created by the [MaterialApp] widget's [Navigator]).\n\nSee also:\n\n * [CompositedTransformTarget], the widget that this widget can target.\n * [FollowerLayer], the layer that implements this widget's logic.\n * [Transform], which applies an arbitrary transform to a child.", "detail": "", "kind": 7, "label": "CompositedTransformFollower" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableText", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A basic text input field.\n\nThis widget interacts with the [TextInput] service to let the user edit the\ntext it contains. It also provides scrolling, selection, and cursor\nmovement. This widget does not provide any focus management (e.g.,\ntap-to-focus).\n\n## Input Actions\n\nA [TextInputAction] can be provided to customize the appearance of the\naction button on the soft keyboard for Android and iOS. The default action\nis [TextInputAction.done].\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\nEditableText receives focus. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\n## Lifecycle\n\nUpon completion of editing, like pressing the \"done\" button on the keyboard,\ntwo actions take place:\n\n 1st: Editing is finalized. The default behavior of this step includes\n an invocation of [onChanged]. That default behavior can be overridden.\n See [onEditingComplete] for details.\n\n 2nd: [onSubmitted] is invoked with the user's input value.\n\n[onSubmitted] can be used to manually move focus to another input widget\nwhen a user finishes with the currently focused input widget.\n\nRather than using this widget directly, consider using [TextField], which\nis a full-featured, material-design text input field with placeholder text,\nlabels, and [Form] integration.\n\n## Gesture Events Handling\n\nThis widget provides rudimentary, platform-agnostic gesture handling for\nuser actions such as tapping, long-pressing and scrolling when\n[rendererIgnoresPointer] is false (false by default). To tightly conform\nto the platform behavior with respect to input gestures in text fields, use\n[TextField] or [CupertinoTextField]. For custom selection behavior, call\nmethods such as [RenderEditable.selectPosition],\n[RenderEditable.selectWord], etc. programmatically.\n\nSee also:\n\n * [TextField], which is a full-featured, material-design text input field\n with placeholder text, labels, and [Form] integration.", "detail": "", "kind": 7, "label": "EditableText" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an editable text field.\n\nWhenever the user modifies a text field with an associated\n[TextEditingController], the text field updates [value] and the controller\nnotifies its listeners. Listeners can then read the [text] and [selection]\nproperties to learn what the user has typed or how the selection has been\nupdated.\n\nSimilarly, if you modify the [text] or [selection] properties, the text\nfield will be notified and will update itself appropriately.\n\nA [TextEditingController] can also be used to provide an initial value for a\ntext field. If you build a text field with a controller that already has\n[text], the text field will use that text as its initial value.\n\nThe [text] or [selection] properties can be set from within a listener\nadded to this controller. If both properties need to be changed then the\ncontroller's [value] should be set instead.\n\nThis example creates a [TextField] with a [TextEditingController] whose\nchange listener forces the entered text to be lower case and keeps the\ncursor at the end of the input.\n\n```dart\nfinal _controller = TextEditingController();\n\nvoid initState() {\n _controller.addListener(() {\n final text = _controller.text.toLowerCase();\n _controller.value = _controller.value.copyWith(\n text: text,\n selection: TextSelection(baseOffset: text.length, extentOffset: text.length),\n composing: TextRange.empty,\n );\n });\n super.initState();\n}\n\nvoid dispose() {\n _controller.dispose();\n super.dispose();\n}\n\nWidget build(BuildContext context) {\n return Scaffold(\n body: Container(\n alignment: Alignment.center,\n padding: const EdgeInsets.all(6),\n child: TextFormField(\n controller: _controller,\n decoration: InputDecoration(border: OutlineInputBorder()),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [TextField], which is a Material Design text field that can be controlled\n with a [TextEditingController].\n * [EditableText], which is a raw region of editable text that can be\n controlled with a [TextEditingController].", "detail": "", "kind": 7, "label": "TextEditingController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspectorService", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Service used by GUI tools to interact with the [WidgetInspector].\n\nCalls to this object are typically made from GUI tools such as the [Flutter\nIntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nusing the [Dart VM Service protocol](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md).\nThis class uses its own object id and manages object lifecycles itself\ninstead of depending on the [object ids](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#getobject)\nspecified by the VM Service Protocol because the VM Service Protocol ids\nexpire unpredictably. Object references are tracked in groups so that tools\nthat clients can use dereference all objects in a group with a single\noperation making it easier to avoid memory leaks.\n\nAll methods in this class are appropriate to invoke from debugging tools\nusing the Observatory service protocol to evaluate Dart expressions of the\nform `WidgetInspectorService.instance.methodName(arg1, arg2, ...)`. If you\nmake changes to any instance method of this class you need to verify that\nthe [Flutter IntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nwidget inspector support still works with the changes.\n\nAll methods returning String values return JSON.", "detail": "", "kind": 7, "label": "WidgetInspectorService" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned without\ncommitting to a specific [TextDirection].\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nA [PositionedDirectional] widget must be a descendant of a [Stack], and the\npath from the [PositionedDirectional] widget to its enclosing [Stack] must\ncontain only [StatelessWidget]s or [StatefulWidget]s (not other kinds of\nwidgets, like [RenderObjectWidget]s).\n\nIf a widget is wrapped in a [PositionedDirectional], then it is a\n_positioned_ widget in its [Stack]. If the [top] property is non-null, the\ntop edge of this child/ will be positioned [top] layout units from the top\nof the stack widget. The [start], [bottom], and [end] properties work\nanalogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [start] and [end] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nSee also:\n\n * [Positioned], which specifies the widget's position visually.\n * [Positioned.directional], which also specifies the widget's horizontal\n position using [start] and [end] but has an explicit [TextDirection].", "detail": "", "kind": 7, "label": "PositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsDebugger", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that visualizes the semantics for the child.\n\nThis widget is useful for understand how an app presents itself to\naccessibility technology.", "detail": "", "kind": 7, "label": "SemanticsDebugger" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [SingleChildRenderObjectWidget] as its configuration.\n\nThe child is optional.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [RenderObjectWithChildMixin] mixin. Such widgets are\nexpected to inherit from [SingleChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "SingleChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQueryData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Information about a piece of media (e.g., a window).\n\nFor example, the [MediaQueryData.size] property contains the width and\nheight of the current window.\n\nTo obtain the current [MediaQueryData] for a given [BuildContext], use the\n[MediaQuery.of] function. For example, to obtain the size of the current\nwindow, use `MediaQuery.of(context).size`.\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nMediaQueryData includes two [EdgeInsets] values:\n[padding] and [viewInsets]. These\nvalues reflect the configuration of the device and are used by\nmany top level widgets, like [SafeArea] and the Cupertino and\nMaterial scaffold widgets. The padding value defines areas that\nmight not be completely visible, like the display \"notch\" on the\niPhone X. The viewInsets value defines areas that aren't visible at\nall, typically because they're obscured by the device's keyboard.\n\nThe viewInsets and padding values are independent, they're both\nmeasured from the edges of the MediaQuery widget's bounds. The\nbounds of the top level MediaQuery created by [WidgetsApp] are the\nsame as the window that contains the app.\n\nWidgets whose layouts consume space defined by [viewInsets] or\n[padding] should enclose their children in secondary MediaQuery\nwidgets that reduce those properties by the same amount.\nThe [removePadding] and [removeInsets] methods are useful for this.", "detail": "", "kind": 7, "label": "MediaQueryData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalBarrier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nSee also:\n\n * [ModalRoute], which indirectly uses this widget.\n * [AnimatedModalBarrier], which is similar but takes an animated [color]\n instead of a single color value.", "detail": "", "kind": 7, "label": "ModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyleTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DefaultTextStyle] that animates the different properties\nof its [TextStyle].\n\nSee also:\n\n * [DefaultTextStyle], which also defines a [TextStyle] for its descendants\n but is not animated.", "detail": "", "kind": 7, "label": "DefaultTextStyleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderNestedScrollViewViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [RenderViewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "RenderNestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have no children.", "detail": "", "kind": 7, "label": "LeafRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQuery", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a subtree in which media queries resolve to the given data.\n\nFor example, to learn the size of the current media (e.g., the window\ncontaining your app), you can read the [MediaQueryData.size] property from\nthe [MediaQueryData] returned by [MediaQuery.of]:\n`MediaQuery.of(context).size`.\n\nQuerying the current media using [MediaQuery.of] will cause your widget to\nrebuild automatically whenever the [MediaQueryData] changes (e.g., if the\nuser rotates their device).\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nSee also:\n\n * [WidgetsApp] and [MaterialApp], which introduce a [MediaQuery] and keep\n it up to date with the current screen metrics as they change.\n * [MediaQueryData], the data structure that represents the metrics.", "detail": "", "kind": 7, "label": "MediaQuery" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionGestureDetector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A gesture detector to respond to non-exclusive event chains for a text field.\n\nAn ordinary [GestureDetector] configured to handle events like tap and\ndouble tap will only recognize one or the other. This widget detects both:\nfirst the tap and then, if another tap down occurs within a time limit, the\ndouble tap.\n\nSee also:\n\n * [TextField], a Material text field which uses this gesture detector.\n * [CupertinoTextField], a Cupertino text field which uses this gesture\n detector.", "detail": "", "kind": 7, "label": "TextSelectionGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LabeledGlobalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key with a debugging label.\n\nThe debug label is useful for documentation and for debugging. The label\ndoes not affect the key's identity.", "detail": "", "kind": 7, "label": "LabeledGlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPositionWithSingleContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll position that manages scroll activities for a single\n[ScrollContext].\n\nThis class is a concrete subclass of [ScrollPosition] logic that handles a\nsingle [ScrollContext], such as a [Scrollable]. An instance of this class\nmanages [ScrollActivity] instances, which change what content is visible in\nthe [Scrollable]'s [Viewport].\n\nSee also:\n\n * [ScrollPosition], which defines the underlying model for a position\n within a [Scrollable] but is agnostic as to how that position is\n changed.\n * [ScrollView] and its subclasses such as [ListView], which use\n [ScrollPositionWithSingleContext] to manage their scroll position.\n * [ScrollController], which can manipulate one or more [ScrollPosition]s,\n and which uses [ScrollPositionWithSingleContext] as its default class for\n scroll positions.", "detail": "", "kind": 7, "label": "ScrollPositionWithSingleContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlowingOverscrollIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A visual indication that a scroll view has overscrolled.\n\nA [GlowingOverscrollIndicator] listens for [ScrollNotification]s in order\nto control the overscroll indication. These notifications are typically\ngenerated by a [ScrollView], such as a [ListView] or a [GridView].\n\n[GlowingOverscrollIndicator] generates [OverscrollIndicatorNotification]\nbefore showing an overscroll indication. To prevent the indicator from\nshowing the indication, call [OverscrollIndicatorNotification.disallowGlow]\non the notification.\n\nCreated automatically by [ScrollBehavior.buildViewportChrome] on platforms\n(e.g., Android) that commonly use this type of overscroll indication.\n\nIn a [MaterialApp], the edge glow color is the [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "GlowingOverscrollIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverflowBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nSee also:\n\n * [RenderConstrainedOverflowBox] for details about how [OverflowBox] is\n rendered.\n * [SizedOverflowBox], a widget that is a specific size but passes its\n original constraints through to its child, which may then overflow.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], a box with a specified size.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "OverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragSelectionUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that's dragging to select text has moved again.\n\nThe first argument [startDetails] contains the details of the event that\ninitiated the dragging.\n\nThe second argument [updateDetails] contains the details of the current\npointer movement. It's the same as the one passed to [DragGestureRecognizer.onUpdate].\n\nThis signature is different from [GestureDragUpdateCallback] to make it\neasier for various text fields to use [TextSelectionGestureDetector] without\nhaving to store the start position.", "detail": "(DragStartDetails startDetails, DragUpdateDetails updateDetails) → void", "kind": 7, "label": "DragSelectionUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverWithKeepAliveWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have [KeepAlive] children.", "detail": "", "kind": 7, "label": "SliverWithKeepAliveWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatusTransitionWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given animation changes status.", "detail": "", "kind": 7, "label": "StatusTransitionWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutChangedNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the layout of one of the descendants of the object receiving\nthis notification has changed in some way, and that therefore any\nassumptions about that layout are no longer valid.\n\nUseful if, for instance, you're trying to align multiple descendants.\n\nTo listen for notifications in a subtree, use a\n[NotificationListener<LayoutChangedNotification>].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].\n\nIn the widgets library, only the [SizeChangedLayoutNotifier] class and\n[Scrollable] classes dispatch this notification (specifically, they dispatch\n[SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).\nTransitions, in particular, do not. Changing one's layout in one's build\nfunction does not cause this notification to be dispatched automatically. If\nan ancestor expects to be notified for any layout change, make sure you\neither only use widgets that never change layout, or that notify their\nancestors when appropriate, or alternatively, dispatch the notifications\nyourself when appropriate.\n\nAlso, since this notification is sent when the layout is changed, it is only\nuseful for paint effects that depend on the layout. If you were to use this\nnotification to change the build, for instance, you would always be one\nframe behind, which would look really ugly and laggy.", "detail": "", "kind": 7, "label": "LayoutChangedNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that creates custom scroll effects using slivers.\n\nA [CustomScrollView] lets you supply [slivers] directly to create various\nscrolling effects, such as lists, grids, and expanding headers. For example,\nto create a scroll view that contains an expanding app bar followed by a\nlist and a grid, use a list of three slivers: [SliverAppBar], [SliverList],\nand [SliverGrid].\n\n[Widget]s in these [slivers] must produce [RenderSliver] objects.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n\nThis sample code shows a scroll view that contains a flexible pinned app\nbar, a grid, and an infinite list.\n\n```dart\nCustomScrollView(\n slivers: <Widget>[\n const SliverAppBar(\n pinned: true,\n expandedHeight: 250.0,\n flexibleSpace: FlexibleSpaceBar(\n title: Text('Demo'),\n ),\n ),\n SliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n ),\n SliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n ),\n ],\n)\n```\n\n## Accessibility\n\nA [CustomScrollView] can allow Talkback/VoiceOver to make announcements\nto the user when the scroll state changes. For example, on Android an\nannouncement might be read as \"showing items 1 to 10 of 23\". To produce\nthis announcement, the scroll view needs three pieces of information:\n\n * The first visible child index.\n * The total number of children.\n * The total number of visible children.\n\nThe last value can be computed exactly by the framework, however the first\ntwo must be provided. Most of the higher-level scrollable widgets provide\nthis information automatically. For example, [ListView] provides each child\nwidget with a semantic index automatically and sets the semantic child\ncount to the length of the list.\n\nTo determine visible indexes, the scroll view needs a way to associate the\ngenerated semantics of each scrollable item with a semantic index. This can\nbe done by wrapping the child widgets in an [IndexedSemantics].\n\nThis semantic index is not necessarily the same as the index of the widget in\nthe scrollable, because some widgets may not contribute semantic\ninformation. Consider a [new ListView.separated()]: every other widget is a\ndivider with no semantic information. In this case, only odd numbered\nwidgets have a semantic index (equal to the index ~/ 2). Furthermore, the\ntotal number of children in this example would be half the number of\nwidgets. (The [new ListView.separated()] constructor handles this\nautomatically; this is only used here as an example.)\n\nThe total number of visible children can be provided by the constructor\nparameter `semanticChildCount`. This should always be the same as the\nnumber of widgets wrapped in [IndexedSemantics].\n\nSee also:\n\n * [SliverList], which is a sliver that displays linear list of children.\n * [SliverFixedExtentList], which is a more efficient sliver that displays\n linear list of children that have the same extent along the scroll axis.\n * [SliverGrid], which is a sliver that displays a 2D array of children.\n * [SliverPadding], which is a sliver that adds blank space around another\n sliver.\n * [SliverAppBar], which is a sliver that displays a header that can expand\n and float as the scroll view scrolls.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].\n * [IndexedSemantics], which allows annotating child lists with an index\n for scroll announcements.", "detail": "", "kind": 7, "label": "CustomScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's size.\n\nSimilar to the [Builder] widget except that the framework calls the [builder]\nfunction at layout time and provides the parent widget's constraints. This\nis useful when the parent constrains the child's size and doesn't depend on\nthe child's intrinsic size. The [LayoutBuilder]'s final size will match its\nchild's size.\n\n\nIf the child should be smaller than the parent, consider wrapping the child\nin an [Align] widget. If the child might want to be bigger, consider\nwrapping it in a [SingleChildScrollView].\n\nSee also:\n\n * [Builder], which calls a `builder` function at build time.\n * [StatefulBuilder], which passes its `builder` function a `setState` callback.\n * [CustomSingleChildLayout], which positions its child during layout.", "detail": "", "kind": 7, "label": "LayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays a [dart:ui.Image] directly.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nThis widget is rarely used directly. Instead, consider using [Image].", "detail": "", "kind": 7, "label": "RawImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSingleChildLayout", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.\n\nSee also:\n\n * [SingleChildLayoutDelegate], which controls the layout of the child.\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [FractionallySizedBox], which sizes its child based on a fraction of its own\n size and positions the child according to an [Alignment] value.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.", "detail": "", "kind": 7, "label": "CustomSingleChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the subtree through which this notification bubbles must be\nkept alive even if it would normally be discarded as an optimization.\n\nFor example, a focused text field might fire this notification to indicate\nthat it should not be disposed even if the user scrolls the field off\nscreen.\n\nEach [KeepAliveNotification] is configured with a [handle] that consists of\na [Listenable] that is triggered when the subtree no longer needs to be kept\nalive.\n\nThe [handle] should be triggered any time the sending widget is removed from\nthe tree (in [State.deactivate]). If the widget is then rebuilt and still\nneeds to be kept alive, it should immediately send a new notification\n(possible with the very same [Listenable]) during build.\n\nThis notification is listened to by the [AutomaticKeepAlive] widget, which\nis added to the tree automatically by [SliverList] (and [ListView]) and\n[SliverGrid] (and [GridView]) widgets.\n\nFailure to trigger the [handle] in the manner described above will likely\ncause the [AutomaticKeepAlive] to lose track of whether the widget should be\nkept alive or not, leading to memory leaks or lost data. For example, if the\nwidget that requested keep-alive is removed from the subtree but doesn't\ntrigger its [Listenable] on the way out, then the subtree will continue to\nbe kept alive until the list itself is disposed. Similarly, if the\n[Listenable] is triggered while the widget needs to be kept alive, but a new\n[KeepAliveNotification] is not immediately sent, then the widget risks being\ngarbage collected while it wants to be kept alive.\n\nIt is an error to use the same [handle] in two [KeepAliveNotification]s\nwithin the same [AutomaticKeepAlive] without triggering that [handle] before\nthe second notification is sent.\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses\n[KeepAliveNotification] internally.", "detail": "", "kind": 7, "label": "KeepAliveNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElementVisitor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback to [BuildContext.visitChildElements].\n\nThe argument is the child being visited.\n\nIt is safe to call `element.visitChildElements` reentrantly within\nthis callback.", "detail": "(Element element) → void", "kind": 7, "label": "ElementVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListenerCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [Notification] listeners.\n\nReturn true to cancel the notification bubbling. Return false to allow the\nnotification to continue to be dispatched to further ancestors.\n\nUsed by [NotificationListener.onNotification].", "detail": "(T notification) → bool", "kind": 7, "label": "NotificationListenerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserScrollNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that the user has changed the direction in which they are\nscrolling.\n\nSee also:\n\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "UserScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Align", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that aligns its child within itself and optionally sizes itself\nbased on the child's size.\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\n## How it works\n\nThe [alignment] property describes a point in the `child`'s coordinate system\nand a different point in the coordinate system of this widget. The [Align]\nwidget positions the `child` such that both points are lined up on top of\neach other.\n\nThe [Align] widget in this example uses one of the defined constants from\n[Alignment], [topRight]. This places the [FlutterLogo] in the top right corner\nof the parent blue [Container].\n\n![A blue square container with the Flutter logo in the top right corner.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_constant.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment.topRight,\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [Alignment] used in the following example defines a single point:\n\n * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height\n of [FlutterLogo]/2 + height of [FlutterLogo]/2) = (36.0, 48.0).\n\nThe [Alignment] class uses a coordinate system with an origin in the center\nof the [Container], as shown with the [Icon] above. [Align] will place the\n[FlutterLogo] at (36.0, 48.0) according to this coordinate system.\n\n![A blue square container with the Flutter logo positioned according to the\nAlignment specified above. A point is marked at the center of the container\nfor the origin of the Alignment coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_alignment.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [FractionalOffset] used in the following example defines two points:\n\n * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0)\n in the coordinate system of the blue container.\n * (0.2 * width of [Align], 0.6 * height of [Align]) = (24.0, 72.0) in the\n coordinate system of the [Align] widget.\n\nThe [Align] widget positions the [FlutterLogo] such that the two points are on\ntop of each other. In this example, the top left of the [FlutterLogo] will\nbe placed at (24.0, 72.0) - (12.0, 36.0) = (12.0, 36.0) from the top left of\nthe [Align] widget.\n\nThe [FractionalOffset] class uses a coordinate system with an origin in the top-left\ncorner of the [Container] in difference to the center-oriented system used in\nthe example above with [Alignment].\n\n![A blue square container with the Flutter logo positioned according to the\nFractionalOffset specified above. A point is marked at the top left corner\nof the container for the origin of the FractionalOffset coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_fractional_offset.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: FractionalOffset(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Center], which is the same as [Align] but with the [alignment] always\n set to [Alignment.center].\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Align" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget for a given index, e.g., in a\nlist.\n\nUsed by [ListView.builder] and other APIs that use lazily-generated widgets.\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [TransitionBuilder], which is similar but also takes a child.", "detail": "(BuildContext context, int index) → Widget", "kind": 7, "label": "IndexedWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotationTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the rotation of a widget.\n\nHere's an illustration of the [RotationTransition] widget, with it's [turns]\nanimated by a [CurvedAnimation] set to [Curves.elasticOut]:\nSee also:\n\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "RotationTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldValidator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for validating a form field.\n\nReturns an error string to display if the input is invalid, or null\notherwise.\n\nUsed by [FormField.validator].", "detail": "(T value) → String", "kind": 7, "label": "FormFieldValidator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Stream].\n\n\nWidget rebuilding is scheduled by each interaction, using [State.setState],\nbut is otherwise decoupled from the timing of the stream. The [builder]\nis called at the discretion of the Flutter pipeline, and will thus receive a\ntiming-dependent sub-sequence of the snapshots that represent the\ninteraction with the stream.\n\nAs an example, when interacting with a stream producing the integers\n0 through 9, the [builder] may be called with any ordered sub-sequence\nof the following snapshots that includes the last one (the one with\nConnectionState.done):\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 0)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 1)`\n* ...\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 9)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.done, 9)`\n\nThe actual sequence of invocations of the [builder] depends on the relative\ntiming of events produced by the stream and the build rate of the Flutter\npipeline.\n\nChanging the [StreamBuilder] configuration to another stream during event\ngeneration introduces snapshot pairs of the form:\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.none, 5)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, 5)`\n\nThe latter will be produced only when the new stream is non-null, and the\nformer only when the old stream is non-null.\n\nThe stream may produce errors, resulting in snapshots of the form:\n\n* `new AsyncSnapshot<int>.withError(ConnectionState.active, 'some error')`\n\nThe data and error fields of snapshots produced are only changed when the\nstate is `ConnectionState.active`.\n\nThe initial snapshot data can be controlled by specifying [initialData].\nThis should be used to ensure that the first frame has the expected value,\nas the builder will always be called before the stream listener has a chance\nto be processed.\n\n\nThis sample shows a [StreamBuilder] configuring a text label to show the\nlatest bid received for a lot in an auction. Assume the `_lot` field is\nset by a selector elsewhere in the UI.\n\n```dart\nStreamBuilder<int>(\n stream: _lot?.bids, // a Stream<int> or null\n builder: (BuildContext context, AsyncSnapshot<int> snapshot) {\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n switch (snapshot.connectionState) {\n case ConnectionState.none: return Text('Select lot');\n case ConnectionState.waiting: return Text('Awaiting bids...');\n case ConnectionState.active: return Text('\\$${snapshot.data}');\n case ConnectionState.done: return Text('\\$${snapshot.data} (closed)');\n }\n return null; // unreachable\n },\n)\n```\n\nSee also:\n\n * [ValueListenableBuilder], which wraps a [ValueListenable] instead of a\n [Stream].\n * [StreamBuilderBase], which supports widget building based on a computation\n that spans all interactions made with the stream.", "detail": "", "kind": 7, "label": "StreamBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMask", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a mask generated by a [Shader] to its child.\n\nFor example, [ShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.\n\n\nThis example makes the text look like it is on fire:\n\n```dart\nShaderMask(\n shaderCallback: (Rect bounds) {\n return RadialGradient(\n center: Alignment.topLeft,\n radius: 1.0,\n colors: <Color>[Colors.yellow, Colors.deepOrange.shade900],\n tileMode: TileMode.mirror,\n ).createShader(bounds);\n },\n child: const Text('I’m burning the memories'),\n)\n```\n\nSee also:\n\n * [Opacity], which can apply a uniform alpha effect to its child.\n * [CustomPaint], which lets you draw directly on the canvas.\n * [DecoratedBox], for another approach at decorating child widgets.\n * [BackdropFilter], which applies an image filter to the background.", "detail": "", "kind": 7, "label": "ShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).", "detail": "(TextSelection selection, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageScaffold", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements a single iOS application page's layout.\n\nThe scaffold lays out the navigation bar on top and the content between or\nbehind the navigation bar.\n\nSee also:\n\n * [CupertinoTabScaffold], a similar widget for tabbed applications.\n * [CupertinoPageRoute], a modal page route that typically hosts a\n [CupertinoPageScaffold] with support for iOS-style page transitions.", "detail": "", "kind": 7, "label": "CupertinoPageScaffold" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DatePickerDateOrder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the order of the columns inside [CupertinoDatePicker] in date mode.", "detail": "", "kind": 13, "label": "DatePickerDateOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSlider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style slider.\n\nUsed to select from a range of values.\n\nA slider can be used to select from either a continuous or a discrete set of\nvalues. The default is use a continuous range of values from [min] to [max].\nTo use discrete values, use a non-null value for [divisions], which\nindicates the number of discrete intervals. For example, if [min] is 0.0 and\n[max] is 50.0 and [divisions] is 5, then the slider can take on the values\ndiscrete values 0.0, 10.0, 20.0, 30.0, 40.0, and 50.0.\n\nThe slider itself does not maintain any state. Instead, when the state of\nthe slider changes, the widget calls the [onChanged] callback. Most widgets\nthat use a slider will listen for the [onChanged] callback and rebuild the\nslider with a new [value] to update the visual appearance of the slider.\n\nSee also:\n\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/sliders/>", "detail": "", "kind": 7, "label": "CupertinoSlider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which a single widget can be scrolled.\n\nThis widget is useful when you have a single box that will normally be\nentirely visible, for example a clock face in a time picker, but you need to\nmake sure it can be scrolled if the container gets too small in one axis\n(the scroll direction).\n\nIt is also useful if you need to shrink-wrap in both axes (the main\nscrolling direction as well as the cross axis), as one might see in a dialog\nor pop-up menu. In that case, you might pair the [SingleChildScrollView]\nwith a [ListBody] child.\n\nWhen you have a list of children and do not require cross-axis\nshrink-wrapping behavior, for example a scrolling list that is always the\nwidth of the screen, consider [ListView], which is vastly more efficient\nthat a [SingleChildScrollView] containing a [ListBody] or [Column] with\nmany children.\n\n## Sample code: Using [SingleChildScrollView] with a [Column]\n\nSometimes a layout is designed around the flexible properties of a\n[Column], but there is the concern that in some cases, there might not\nbe enough room to see the entire contents. This could be because some\ndevices have unusually small screens, or because the application can\nbe used in landscape mode where the aspect ratio isn't what was\noriginally envisioned, or because the application is being shown in a\nsmall window in split-screen mode. In any case, as a result, it might\nmake sense to wrap the layout in a [SingleChildScrollView].\n\nSimply doing so, however, usually results in a conflict between the [Column],\nwhich typically tries to grow as big as it can, and the [SingleChildScrollView],\nwhich provides its children with an infinite amount of space.\n\nTo resolve this apparent conflict, there are a couple of techniques, as\ndiscussed below. These techniques should only be used when the content is\nnormally expected to fit on the screen, so that the lazy instantiation of\na sliver-based [ListView] or [CustomScrollView] is not expected to provide\nany performance benefit. If the viewport is expected to usually contain\ncontent beyond the dimensions of the screen, then [SingleChildScrollView]\nwould be very expensive.\n\n### Centering, spacing, or aligning fixed-height content\n\nIf the content has fixed (or intrinsic) dimensions but needs to be spaced out,\ncentered, or otherwise positioned using the [Flex] layout model of a [Column],\nthe following technique can be used to provide the [Column] with a minimum\ndimension while allowing it to shrink-wrap the contents when there isn't enough\nroom to apply these spacing or alignment needs.\n\nA [LayoutBuilder] is used to obtain the size of the viewport (implicitly via\nthe constraints that the [SingleChildScrollView] sees, since viewports\ntypically grow to fit their maximum height constraint). Then, inside the\nscroll view, a [ConstrainedBox] is used to set the minimum height of the\n[Column].\n\nThe [Column] has no [Expanded] children, so rather than take on the infinite\nheight from its [BoxConstraints.maxHeight], (the viewport provides no maximum height\nconstraint), it automatically tries to shrink to fit its children. It cannot\nbe smaller than its [BoxConstraints.minHeight], though, and It therefore\nbecomes the bigger of the minimum height provided by the\n[ConstrainedBox] and the sum of the heights of the children.\n\nIf the children aren't enough to fit that minimum size, the [Column] ends up\nwith some remaining space to allocate as specified by its\n[Column.mainAxisAlignment] argument.\n\nIn this example, the children are spaced out equally, unless there's no more\nroom, in which case they stack vertically and scroll.\n\nWhen using this technique, [Expanded] and [Flexible] are not useful, because\nin both cases the \"available space\" is infinite (since this is in a viewport).\nThe next section describes a technique for providing a maximum height constraint.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: Column(\n mainAxisSize: MainAxisSize.min,\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Container(\n // Another fixed-height child.\n color: const Color(0xff008000), // Green\n height: 120.0,\n ),\n ],\n ),\n ),\n );\n },\n );\n}\n```\n\n### Expanding content to fit the viewport\n\nThe following example builds on the previous one. In addition to providing a\nminimum dimension for the child [Column], an [IntrinsicHeight] widget is used\nto force the column to be exactly as big as its contents. This constraint\ncombines with the [ConstrainedBox] constraints discussed previously to ensure\nthat the column becomes either as big as viewport, or as big as the contents,\nwhichever is biggest.\n\nBoth constraints must be used to get the desired effect. If only the\n[IntrinsicHeight] was specified, then the column would not grow to fit the\nentire viewport when its children were smaller than the whole screen. If only\nthe size of the viewport was used, then the [Column] would overflow if the\nchildren were bigger than the viewport.\n\nThe widget that is to grow to fit the remaining space so provided is wrapped\nin an [Expanded] widget.\n\nThis technique is quite expensive, as it more or less requires that the contents\nof the viewport be laid out twice (once to find their intrinsic dimensions, and\nonce to actually lay them out). The number of widgets within the column should\ntherefore be kept small. Alternatively, subsets of the children that have known\ndimensions can be wrapped in a [SizedBox] that has tight vertical constraints,\nso that the intrinsic sizing algorithm can short-circuit the computation when it\nreaches those parts of the subtree.\n\nIn this example, the column becomes either as big as viewport, or as big as\nthe contents, whichever is biggest.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: IntrinsicHeight(\n child: Column(\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Expanded(\n // A flexible child that will grow to fit the viewport but\n // still be at least as big as necessary to fit its contents.\n child: Container(\n color: const Color(0xff800000), // Red\n height: 120.0,\n ),\n ),\n ],\n ),\n ),\n ),\n );\n },\n );\n}\n```\n\nSee also:\n\n * [ListView], which handles multiple children in a scrolling list.\n * [GridView], which handles multiple children in a scrolling grid.\n * [PageView], for a scrollable that works page by page.\n * [Scrollable], which handles arbitrary scrolling effects.", "detail": "", "kind": 7, "label": "SingleChildScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryConstructor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.constructor].", "detail": "() → T", "kind": 7, "label": "GestureRecognizerFactoryConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilderBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that build themselves based on interaction with\na specified [Stream].\n\nA [StreamBuilderBase] is stateful and maintains a summary of the interaction\nso far. The type of the summary and how it is updated with each interaction\nis defined by sub-classes.\n\nExamples of summaries include:\n\n* the running average of a stream of integers;\n* the current direction and speed based on a stream of geolocation data;\n* a graph displaying data points from a stream.\n\nIn general, the summary is the result of a fold computation over the data\nitems and errors received from the stream along with pseudo-events\nrepresenting termination or change of stream. The initial summary is\nspecified by sub-classes by overriding [initial]. The summary updates on\nreceipt of stream data and errors are specified by overriding [afterData] and\n[afterError], respectively. If needed, the summary may be updated on stream\ntermination by overriding [afterDone]. Finally, the summary may be updated\non change of stream by overriding [afterDisconnected] and [afterConnected].\n\n`T` is the type of stream events.\n\n`S` is the type of interaction summary.\n\nSee also:\n\n * [StreamBuilder], which is specialized for the case where only the most\n recent interaction is needed for widget building.", "detail": "", "kind": 7, "label": "StreamBuilderBase" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a [Navigator] widget.", "detail": "", "kind": 7, "label": "NavigatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Visibility", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to show or hide a child.\n\nBy default, the [visible] property controls whether the [child] is included\nin the subtree or not; when it is not [visible], the [replacement] child\n(typically a zero-sized box) is included instead.\n\nA variety of flags can be used to tweak exactly how the child is hidden.\n(Changing the flags dynamically is discouraged, as it can cause the [child]\nsubtree to be rebuilt, with any state in the subtree being discarded.\nTypically, only the [visible] flag is changed dynamically.)\n\nThese widgets provide some of the facets of this one:\n\n * [Opacity], which can stop its child from being painted.\n * [Offstage], which can stop its child from being laid out or painted.\n * [TickerMode], which can stop its child from being animated.\n * [ExcludeSemantics], which can hide the child from accessibility tools.\n * [IgnorePointer], which can disable touch interactions with the child.\n\nUsing this widget is not necessary to hide children. The simplest way to\nhide a child is just to not include it, or, if a child _must_ be given (e.g.\nbecause the parent is a [StatelessWidget]) then to use [SizedBox.shrink]\ninstead of the child that would otherwise be included.\n\nSee also:\n\n * [AnimatedSwitcher], which can fade from one child to the next as the\n subtree changes.\n * [AnimatedCrossFade], which can fade between two specific children.", "detail": "", "kind": 7, "label": "Visibility" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a path.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\n[PhysicalModel] does the same but only supports shapes that can be expressed\nas rectangles with rounded corners.\n\nSee also:\n\n * [ShapeBorderClipper], which converts a [ShapeBorder] to a [CustomerClipper], as\n needed by this widget.", "detail": "", "kind": 7, "label": "PhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildOwner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manager class for the widgets framework.\n\nThis class tracks which widgets need rebuilding, and handles other tasks\nthat apply to widget trees as a whole, such as managing the inactive element\nlist for the tree and triggering the \"reassemble\" command when necessary\nduring hot reload when debugging.\n\nThe main build owner is typically owned by the [WidgetsBinding], and is\ndriven from the operating system along with the rest of the\nbuild/layout/paint pipeline.\n\nAdditional build owners can be built to manage off-screen widget trees.\n\nTo assign a build owner to a tree, use the\n[RootRenderObjectElement.assignOwner] method on the root element of the\nwidget tree.", "detail": "", "kind": 7, "label": "BuildOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] of entries that can be managed independently.\n\nOverlays let independent child widgets \"float\" visual elements on top of\nother widgets by inserting them into the overlay's [Stack]. The overlay lets\neach of these widgets manage their participation in the overlay using\n[OverlayEntry] objects.\n\nAlthough you can create an [Overlay] directly, it's most common to use the\noverlay created by the [Navigator] in a [WidgetsApp] or a [MaterialApp]. The\nnavigator uses its overlay to manage the visual appearance of its routes.\n\nSee also:\n\n * [OverlayEntry].\n * [OverlayState].\n * [WidgetsApp].\n * [MaterialApp].", "detail": "", "kind": 7, "label": "Overlay" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have multiple box children.\n\nHelps subclasses build their children lazily using a [SliverChildDelegate].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the color, opacity, and size of icons.\n\nUsed by [IconTheme] to control the color, opacity, and size of icons in a\nwidget subtree.\n\nTo obtain the current icon theme, use [IconTheme.of]. To convert an icon\ntheme to a version with all the fields filled in, use [new\nIconThemeData.fallback].", "detail": "", "kind": 7, "label": "IconThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedAlign", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Align] which automatically transitions the child's\nposition over a given duration whenever the given [alignment] changes.\n\nHere's an illustration of what this can look like, using a [curve] of\n[Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedPadding], which can animate the padding instead of the\n alignment.\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.", "detail": "", "kind": 7, "label": "AnimatedAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragAnchor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where the [Draggable] should be anchored during a drag.", "detail": "", "kind": 13, "label": "DragAnchor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A general-purpose widget for building animations.\n\nAnimatedBuilder is useful for more complex widgets that wish to include\nan animation as part of a larger build function. To use AnimatedBuilder,\nsimply construct the widget and pass it a builder function.\n\nFor simple cases without additional state, consider using\n[AnimatedWidget].\n\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nanimation, it's more efficient to build that subtree once instead of\nrebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\nAnimatedBuilder will pass it back to your builder function so that you\ncan incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedBuilder] and makes use of the\n[child] feature to avoid having to rebuild the [Container] each time.\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return AnimatedBuilder(\n animation: _controller,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n builder: (BuildContext context, Widget child) {\n return Transform.rotate(\n angle: _controller.value * 2.0 * math.pi,\n child: child,\n );\n },\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "AnimatedBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnconstrainedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes no constraints on its child, allowing it to render\nat its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This container will then attempt\nto adopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the container, a warning will be\nprinted on the console, and black and yellow striped areas will appear where\nthe overflow occurs.\n\nSee also:\n\n * [ConstrainedBox], for a box which imposes constraints on its child.\n * [Align], which loosens the constraints given to the child rather than\n removing them entirely.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow\n the parent.", "detail": "", "kind": 7, "label": "UnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single list of children. (This superclass only provides the\nstorage for that child list, it doesn't actually provide the updating\nlogic.)", "detail": "", "kind": 7, "label": "MultiChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a callback that verifies that it's OK to call [Navigator.pop].\n\nUsed by [Form.onWillPop], [ModalRoute.addScopedWillPopCallback],\n[ModalRoute.removeScopedWillPopCallback], and [WillPopScope].", "detail": "() → Future<bool>", "kind": 7, "label": "WillPopCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedOverflowBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is a specific size but passes its original constraints\nthrough to its child, which may then overflow.\n\nSee also:\n\n * [OverflowBox], A widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoColors", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A palette of [Color] constants that describe colors commonly used when\nmatching the iOS platform aesthetics.", "detail": "", "kind": 7, "label": "CupertinoColors" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of a [FormField]. Passed to the [FormFieldBuilder] method\nfor use in constructing the form field's widget.", "detail": "", "kind": 7, "label": "FormFieldState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a filter to the existing painted content and then\npaints [child].\n\nThe filter will be applied to all the area within its parent or ancestor\nwidget's clip. If there's no clip, the filter will be applied to the full\nscreen.\n\n\nIf the [BackdropFilter] needs to be applied to an area that exactly matches\nits child, wraps the [BackdropFilter] with a clip widget that clips exactly\nto that child.\n\n```dart\nStack(\n fit: StackFit.expand,\n children: <Widget>[\n Text('0' * 10000),\n Center(\n child: ClipRect( // <-- clips to the 200x200 [Container] below\n child: BackdropFilter(\n filter: ui.ImageFilter.blur(\n sigmaX: 5.0,\n sigmaY: 5.0,\n ),\n child: Container(\n alignment: Alignment.center,\n width: 200.0,\n height: 200.0,\n child: Text('Hello World'),\n ),\n ),\n ),\n ),\n ],\n)\n```\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.\n\nSee also:\n\n * [DecoratedBox], which draws a background under (or over) a widget.\n * [Opacity], which changes the opacity of the widget itself.", "detail": "", "kind": 7, "label": "BackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Notification] related to scrolling.\n\n[Scrollable] widgets notify their ancestors about scrolling-related changes.\nThe notifications have the following lifecycle:\n\n * A [ScrollStartNotification], which indicates that the widget has started\n scrolling.\n * Zero or more [ScrollUpdateNotification]s, which indicate that the widget\n has changed its scroll position, mixed with zero or more\n [OverscrollNotification]s, which indicate that the widget has not changed\n its scroll position because the change would have caused its scroll\n position to go outside its scroll bounds.\n * Interspersed with the [ScrollUpdateNotification]s and\n [OverscrollNotification]s are zero or more [UserScrollNotification]s,\n which indicate that the user has changed the direction in which they are\n scrolling.\n * A [ScrollEndNotification], which indicates that the widget has stopped\n scrolling.\n * A [UserScrollNotification], with a [UserScrollNotification.direction] of\n [ScrollDirection.idle].\n\nNotifications bubble up through the tree, which means a given\n[NotificationListener] will receive notifications for all descendant\n[Scrollable] widgets. To focus on notifications from the nearest\n[Scrollable] descendant, check that the [depth] property of the notification\nis zero.\n\nWhen a scroll notification is received by a [NotificationListener], the\nlistener will have already completed build and layout, and it is therefore\ntoo late for that widget to call [State.setState]. Any attempt to adjust the\nbuild or layout based on a scroll notification would result in a layout that\nlagged one frame behind, which is a poor user experience. Scroll\nnotifications are therefore primarily useful for paint effects (since paint\nhappens after layout). The [GlowingOverscrollIndicator] and [Scrollbar]\nwidgets are examples of paint effects that use scroll notifications.\n\nTo drive layout based on the scroll position, consider listening to the\n[ScrollPosition] directly (or indirectly via a [ScrollController]).", "detail": "", "kind": 7, "label": "ScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an Android view in the Widget hierarchy.\n\nRequires Android API level 20 or greater.\n\nEmbedding Android views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\nThe embedded Android view is painted just like any other Flutter widget and transformations\napply to it as well.\n\nThe widget fills all available space, the parent of this object must provide bounded layout\nconstraints.\n\nThe widget participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified in the `gestureRecognizers` constructor parameter. If\nthe set of gesture recognizers is empty, a gesture will be dispatched to the platform\nview iff it was not claimed by any other gesture recognizer.\n\nThe Android view object is created using a [PlatformViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewFactory.html).\nPlugins can register platform view factories with [PlatformViewRegistry#registerViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewRegistry.html#registerViewFactory-java.lang.String-io.flutter.plugin.platform.PlatformViewFactory-).\n\nRegistration is typically done in the plugin's registerWith method, e.g:\n\n```java\n public static void registerWith(Registrar registrar) {\n registrar.platformViewRegistry().registerViewFactory(\"webview\", WebViewFactory(registrar.messenger()));\n }\n```\n\nThe platform view's lifetime is the same as the lifetime of the [State] object for this widget.\nWhen the [State] is disposed the platform view (and auxiliary resources) are lazily\nreleased (some resources are immediately released and some by platform garbage collector).\nA stateful widget's state is disposed when the widget is removed from the tree or when it is\nmoved within the tree. If the stateful widget has a key and it's only moved relative to its siblings,\nor it has a [GlobalKey] and it's moved within the tree, it will not be disposed.", "detail": "", "kind": 7, "label": "AndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGrid", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[SliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nThe main axis direction of a grid is the direction in which it scrolls; the\ncross axis direction is the orthogonal direction.\n\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows twenty boxes in a pretty teal grid:\n\n```dart\nSliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n)\n```\n\n\nSee also:\n\n * [SliverList], which places its children in a linear array.\n * [SliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.", "detail": "", "kind": 7, "label": "SliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image that shows a [placeholder] image while the target [image] is\nloading, then fades in the new image when it loads.\n\nUse this class to display long-loading images, such as [new NetworkImage],\nso that the image appears on screen with a graceful animation rather than\nabruptly pops onto the screen.\n\n\nIf the [image] emits an [ImageInfo] synchronously, such as when the image\nhas been loaded and cached, the [image] is displayed immediately and the\n[placeholder] is never displayed.\n\n[fadeOutDuration] and [fadeOutCurve] control the fade-out animation of the\nplaceholder.\n\n[fadeInDuration] and [fadeInCurve] control the fade-in animation of the\ntarget [image].\n\nPrefer a [placeholder] that's already cached so that it is displayed in one\nframe. This prevents it from popping onto the screen.\n\nWhen [image] changes it is resolved to a new [ImageStream]. If the new\n[ImageStream.key] is different this widget subscribes to the new stream and\nreplaces the displayed image with images emitted by the new stream.\n\nWhen [placeholder] changes and the [image] has not yet emitted an\n[ImageInfo], then [placeholder] is resolved to a new [ImageStream]. If the\nnew [ImageStream.key] is different this widget subscribes to the new stream\nand replaces the displayed image to images emitted by the new stream.\n\nWhen either [placeholder] or [image] changes, this widget continues showing\nthe previously loaded image (if any) until the new image provider provides a\ndifferent image. This is known as \"gapless playback\" (see also\n[Image.gaplessPlayback]).\n\n\n```dart\nFadeInImage(\n // here `bytes` is a Uint8List containing the bytes for the in-memory image\n placeholder: MemoryImage(bytes),\n image: NetworkImage('https://backend.example.com/image.png'),\n)\n```", "detail": "", "kind": 7, "label": "FadeInImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that manages [Hero] transitions.\n\nAn instance of [HeroController] should be used in [Navigator.observers].\nThis is done automatically by [MaterialApp].", "detail": "", "kind": 7, "label": "HeroController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [PageView].\n\nThe metrics are available on [ScrollNotification]s generated from\n[PageView]s.", "detail": "", "kind": 7, "label": "PageMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModelElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [InheritedModel] as its configuration.", "detail": "", "kind": 7, "label": "InheritedModelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSizeWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for widgets that can return the size this widget would prefer\nif it were otherwise unconstrained.\n\nThere are a few cases, notably [AppBar] and [TabBar], where it would be\nundesirable for the widget to constrain its own size but where the widget\nneeds to expose a preferred or \"default\" size. For example a primary\n[Scaffold] sets its app bar height to the app bar's preferred height\nplus the height of the system status bar.\n\nUse [PreferredSize] to give a preferred size to an arbitrary widget.", "detail": "", "kind": 7, "label": "PreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFixedExtentList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[SliverFixedExtentList] places its children in a linear array along the main\naxis starting at offset zero and without gaps. Each child is forced to have\nthe [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[SliverFixedExtentList] is more efficient than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis.\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows an infinite number of items in varying shades of blue:\n\n```dart\nSliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n)\n```\n\n\nSee also:\n\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Direction of the hero's flight based on the navigation operation.", "detail": "", "kind": 13, "label": "HeroFlightDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showSnackBar]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself had been used, no [Scaffold] would have\nbeen found, and the [Scaffold.of] function would have returned null.\n\n```dart\n @override\n Widget build(BuildContext context) {\n // here, Scaffold.of(context) returns null\n return Scaffold(\n appBar: AppBar(title: Text('Demo')),\n body: Builder(\n builder: (BuildContext context) {\n return FlatButton(\n child: Text('BUTTON'),\n onPressed: () {\n // here, Scaffold.of(context) returns the locally created Scaffold\n Scaffold.of(context).showSnackBar(SnackBar(\n content: Text('Hello.')\n ));\n }\n );\n }\n )\n );\n }\n```\n\nThe [BuildContext] for a particular widget can change location over time as\nthe widget is moved around the tree. Because of this, values returned from\nthe methods on this class should not be cached beyond the execution of a\nsingle synchronous function.\n\n[BuildContext] objects are actually [Element] objects. The [BuildContext]\ninterface is used to discourage direct manipulation of [Element] objects.", "detail": "", "kind": 7, "label": "BuildContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTarget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that receives data when a [Draggable] widget is dropped.\n\nWhen a draggable is dragged on top of a drag target, the drag target is\nasked whether it will accept the data the draggable is carrying. If the user\ndoes drop the draggable on top of the drag target (and the drag target has\nindicated that it will accept the draggable's data), then the drag target is\nasked to accept the draggable's data.\n\nSee also:\n\n * [Draggable]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "DragTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Widget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the configuration for an [Element].\n\nWidgets are the central class hierarchy in the Flutter framework. A widget\nis an immutable description of part of a user interface. Widgets can be\ninflated into elements, which manage the underlying render tree.\n\nWidgets themselves have no mutable state (all their fields must be final).\nIf you wish to associate mutable state with a widget, consider using a\n[StatefulWidget], which creates a [State] object (via\n[StatefulWidget.createState]) whenever it is inflated into an element and\nincorporated into the tree.\n\nA given widget can be included in the tree zero or more times. In particular\na given widget can be placed in the tree multiple times. Each time a widget\nis placed in the tree, it is inflated into an [Element], which means a\nwidget that is incorporated into the tree multiple times will be inflated\nmultiple times.\n\nThe [key] property controls how one widget replaces another widget in the\ntree. If the [runtimeType] and [key] properties of the two widgets are\n[operator==], respectively, then the new widget replaces the old widget by\nupdating the underlying element (i.e., by calling [Element.update] with the\nnew widget). Otherwise, the old element is removed from the tree, the new\nwidget is inflated into an element, and the new element is inserted into the\ntree.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.", "detail": "", "kind": 7, "label": "Widget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerLocation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to show a [Banner].\n\nThe start and end locations are relative to the ambient [Directionality]\n(which can be overridden by [Banner.layoutDirection]).", "detail": "", "kind": 13, "label": "BannerLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPhysicalModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PhysicalModel].\n\nThe [borderRadius] and [elevation] are animated.\n\nThe [color] is animated if the [animateColor] property is set; otherwise,\nthe color changes immediately at the start of the animation for the other\ntwo properties. This allows the color to be animated independently (e.g.\nbecause it is being driven by an [AnimatedTheme]).\n\nThe [shape] is not animated.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].", "detail": "", "kind": 7, "label": "AnimatedPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoScrollbar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS style scrollbar.\n\nA scrollbar indicates which portion of a [Scrollable] widget is actually\nvisible.\n\nTo add a scrollbar to a [ScrollView], simply wrap the scroll view widget in\na [CupertinoScrollbar] widget.\n\nSee also:\n\n * [ListView], which display a linear, scrollable list of children.\n * [GridView], which display a 2 dimensional, scrollable array of children.\n * [Scrollbar], a Material Design scrollbar that dynamically adapts to the\n platform showing either an Android style or iOS style scrollbar.", "detail": "", "kind": 7, "label": "CupertinoScrollbar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapInjector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [SliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [Viewport], so that it will always be laid out before the\n[SliverOverlapInjector] during a particular frame.\n\nSee also:\n\n * [NestedScrollView], which uses a [SliverOverlapAbsorber] to align its\n children, and which shows sample usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightShuttleBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A function that lets [Hero]s self supply a [Widget] that is shown during the\nhero's flight from one route to another instead of default (which is to\nshow the destination route's instance of the Hero).", "detail": "(BuildContext flightContext, Animation<double> animation, HeroFlightDirection flightDirection, BuildContext fromHeroContext, BuildContext toHeroContext) → Widget", "kind": 7, "label": "HeroFlightShuttleBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that manages a pair of text selection handles.\n\nThe selection handles are displayed in the [Overlay] that most closely\nencloses the given [BuildContext].", "detail": "", "kind": 7, "label": "TextSelectionOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoNavigationBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled navigation bar.\n\nThe navigation bar is a toolbar that minimally consists of a widget, normally\na page title, in the [middle] of the toolbar.\n\nIt also supports a [leading] and [trailing] widget before and after the\n[middle] widget while keeping the [middle] widget centered.\n\nThe [leading] widget will automatically be a back chevron icon button (or a\nclose button in case of a fullscreen dialog) to pop the current route if none\nis provided and [automaticallyImplyLeading] is true (true by default).\n\nThe [middle] widget will automatically be a title text from the current\n[CupertinoPageRoute] if none is provided and [automaticallyImplyMiddle] is\ntrue (true by default).\n\nIt should be placed at top of the screen and automatically accounts for\nthe OS's status bar.\n\nIf the given [backgroundColor]'s opacity is not 1.0 (which is the case by\ndefault), it will produce a blurring effect to the content behind it.\n\nWhen [transitionBetweenRoutes] is true, this navigation bar will transition\non top of the routes instead of inside them if the route being transitioned\nto also has a [CupertinoNavigationBar] or a [CupertinoSliverNavigationBar]\nwith [transitionBetweenRoutes] set to true. If [transitionBetweenRoutes] is\ntrue, none of the [Widget] parameters can contain a key in its subtree since\nthat widget will exist in multiple places in the tree simultaneously.\n\nBy default, only one [CupertinoNavigationBar] or [CupertinoSliverNavigationBar]\nshould be present in each [PageRoute] to support the default transitions.\nUse [transitionBetweenRoutes] or [heroTag] to customize the transition\nbehavior for multiple navigation bars per route.\n\nSee also:\n\n * [CupertinoPageScaffold], a page layout helper typically hosting the\n [CupertinoNavigationBar].\n * [CupertinoSliverNavigationBar] for a navigation bar to be placed in a\n scrolling list and that supports iOS-11-style large titles.", "detail": "", "kind": 7, "label": "CupertinoNavigationBar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Navigator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that manages a set of child widgets with a stack discipline.\n\nMany apps have a navigator near the top of their widget hierarchy in order\nto display their logical history using an [Overlay] with the most recently\nvisited pages visually on top of the older pages. Using this pattern lets\nthe navigator visually transition from one page to another by moving the widgets\naround in the overlay. Similarly, the navigator can be used to show a dialog\nby positioning the dialog widget above the current page.\n\n## Using the Navigator\n\nMobile apps typically reveal their contents via full-screen elements\ncalled \"screens\" or \"pages\". In Flutter these elements are called\nroutes and they're managed by a [Navigator] widget. The navigator\nmanages a stack of [Route] objects and provides methods for managing\nthe stack, like [Navigator.push] and [Navigator.pop].\n\n### Displaying a full-screen route\n\nAlthough you can create a navigator directly, it's most common to use\nthe navigator created by a [WidgetsApp] or a [MaterialApp] widget. You\ncan refer to that navigator with [Navigator.of].\n\nA [MaterialApp] is the simplest way to set things up. The [MaterialApp]'s\nhome becomes the route at the bottom of the [Navigator]'s stack. It is what\nyou see when the app is launched.\n\n```dart\nvoid main() {\n runApp(MaterialApp(home: MyAppHome()));\n}\n```\n\nTo push a new route on the stack you can create an instance of\n[MaterialPageRoute] with a builder function that creates whatever you\nwant to appear on the screen. For example:\n\n```dart\nNavigator.push(context, MaterialPageRoute<void>(\n builder: (BuildContext context) {\n return Scaffold(\n appBar: AppBar(title: Text('My Page')),\n body: Center(\n child: FlatButton(\n child: Text('POP'),\n onPressed: () {\n Navigator.pop(context);\n },\n ),\n ),\n );\n },\n));\n```\n\nThe route defines its widget with a builder function instead of a\nchild widget because it will be built and rebuilt in different\ncontexts depending on when it's pushed and popped.\n\nAs you can see, the new route can be popped, revealing the app's home\npage, with the Navigator's pop method:\n\n```dart\nNavigator.pop(context);\n```\n\nIt usually isn't necessary to provide a widget that pops the Navigator\nin a route with a [Scaffold] because the Scaffold automatically adds a\n'back' button to its AppBar. Pressing the back button causes\n[Navigator.pop] to be called. On Android, pressing the system back\nbutton does the same thing.\n\n### Using named navigator routes\n\nMobile apps often manage a large number of routes and it's often\neasiest to refer to them by name. Route names, by convention,\nuse a path-like structure (for example, '/a/b/c').\nThe app's home page route is named '/' by default.\n\nThe [MaterialApp] can be created\nwith a [Map<String, WidgetBuilder>] which maps from a route's name to\na builder function that will create it. The [MaterialApp] uses this\nmap to create a value for its navigator's [onGenerateRoute] callback.\n\n```dart\nvoid main() {\n runApp(MaterialApp(\n home: MyAppHome(), // becomes the route named '/'\n routes: <String, WidgetBuilder> {\n '/a': (BuildContext context) => MyPage(title: 'page A'),\n '/b': (BuildContext context) => MyPage(title: 'page B'),\n '/c': (BuildContext context) => MyPage(title: 'page C'),\n },\n ));\n}\n```\n\nTo show a route by name:\n\n```dart\nNavigator.pushNamed(context, '/b');\n```\n\n### Routes can return a value\n\nWhen a route is pushed to ask the user for a value, the value can be\nreturned via the [pop] method's result parameter.\n\nMethods that push a route return a [Future]. The Future resolves when the\nroute is popped and the [Future]'s value is the [pop] method's `result`\nparameter.\n\nFor example if we wanted to ask the user to press 'OK' to confirm an\noperation we could `await` the result of [Navigator.push]:\n\n```dart\nbool value = await Navigator.push(context, MaterialPageRoute<bool>(\n builder: (BuildContext context) {\n return Center(\n child: GestureDetector(\n child: Text('OK'),\n onTap: () { Navigator.pop(context, true); }\n ),\n );\n }\n));\n```\n\nIf the user presses 'OK' then value will be true. If the user backs\nout of the route, for example by pressing the Scaffold's back button,\nthe value will be null.\n\nWhen a route is used to return a value, the route's type parameter must\nmatch the type of [pop]'s result. That's why we've used\n`MaterialPageRoute<bool>` instead of `MaterialPageRoute<void>` or just\n`MaterialPageRoute`. (If you prefer to not specify the types, though, that's\nfine too.)\n\n### Popup routes\n\nRoutes don't have to obscure the entire screen. [PopupRoute]s cover the\nscreen with a [ModalRoute.barrierColor] that can be only partially opaque to\nallow the current screen to show through. Popup routes are \"modal\" because\nthey block input to the widgets below.\n\nThere are functions which create and show popup routes. For\nexample: [showDialog], [showMenu], and [showModalBottomSheet]. These\nfunctions return their pushed route's Future as described above.\nCallers can await the returned value to take an action when the\nroute is popped, or to discover the route's value.\n\nThere are also widgets which create popup routes, like [PopupMenuButton] and\n[DropdownButton]. These widgets create internal subclasses of PopupRoute\nand use the Navigator's push and pop methods to show and dismiss them.\n\n### Custom routes\n\nYou can create your own subclass of one of the widget library route classes\nlike [PopupRoute], [ModalRoute], or [PageRoute], to control the animated\ntransition employed to show the route, the color and behavior of the route's\nmodal barrier, and other aspects of the route.\n\nThe [PageRouteBuilder] class makes it possible to define a custom route\nin terms of callbacks. Here's an example that rotates and fades its child\nwhen the route appears or disappears. This route does not obscure the entire\nscreen because it specifies `opaque: false`, just as a popup route does.\n\n```dart\nNavigator.push(context, PageRouteBuilder(\n opaque: false,\n pageBuilder: (BuildContext context, _, __) {\n return Center(child: Text('My PageRoute'));\n },\n transitionsBuilder: (___, Animation<double> animation, ____, Widget child) {\n return FadeTransition(\n opacity: animation,\n child: RotationTransition(\n turns: Tween<double>(begin: 0.5, end: 1.0).animate(animation),\n child: child,\n ),\n );\n }\n));\n```\n\nThe page route is built in two parts, the \"page\" and the\n\"transitions\". The page becomes a descendant of the child passed to\nthe `transitionsBuilder` function. Typically the page is only built once,\nbecause it doesn't depend on its animation parameters (elided with `_`\nand `__` in this example). The transition is built on every frame\nfor its duration.\n\n### Nesting Navigators\n\nAn app can use more than one Navigator. Nesting one Navigator below\nanother Navigator can be used to create an \"inner journey\" such as tabbed\nnavigation, user registration, store checkout, or other independent journeys\nthat represent a subsection of your overall application.\n\n#### Real World Example\n\nIt is standard practice for iOS apps to use tabbed navigation where each\ntab maintains its own navigation history. Therefore, each tab has its own\n[Navigator], creating a kind of \"parallel navigation.\"\n\nIn addition to the parallel navigation of the tabs, it is still possible to\nlaunch full-screen pages that completely cover the tabs. For example: an\non-boarding flow, or an alert dialog. Therefore, there must exist a \"root\"\n[Navigator] that sits above the tab navigation. As a result, each of the\ntab's [Navigator]s are actually nested [Navigator]s sitting below a single\nroot [Navigator].\n\nThe nested [Navigator]s for tabbed navigation sit in [WidgetApp] and\n[CupertinoTabView], so you don't need to worry about nested [Navigator]s\nin this situation, but it's a real world example where nested [Navigator]s\nare used.\n\nThe following example demonstrates how a nested [Navigator] can be used to\npresent a standalone user registration journey.\n\nEven though this example uses two [Navigator]s to demonstrate nested\n[Navigator]s, a similar result is possible using only a single [Navigator].\n\nRun this example with `flutter run --route=/signup` to start it with\nthe signup flow instead of on the home page.\n\n```dart\nimport 'package:flutter/material.dart';\n```\n\n```dart\nvoid main() => runApp(new MyApp());\n```\n\n```dart\nclass MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Code Sample for Navigator',\n // MaterialApp contains our top-level Navigator\n initialRoute: '/',\n routes: {\n '/': (BuildContext context) => HomePage(),\n '/signup': (BuildContext context) => SignUpPage(),\n },\n );\n }\n}\n\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: Text('Home Page'),\n ),\n );\n }\n}\n\nclass CollectPersonalInfoPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: GestureDetector(\n onTap: () {\n // This moves from the personal info page to the credentials page,\n // replacing this page with that one.\n Navigator.of(context)\n .pushReplacementNamed('signup/choose_credentials');\n },\n child: Container(\n color: Colors.lightBlue,\n alignment: Alignment.center,\n child: Text('Collect Personal Info Page'),\n ),\n ),\n );\n }\n}\n\nclass ChooseCredentialsPage extends StatelessWidget {\n const ChooseCredentialsPage({\n this.onSignupComplete,\n });\n\n final VoidCallback onSignupComplete;\n\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: onSignupComplete,\n child: DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.pinkAccent,\n alignment: Alignment.center,\n child: Text('Choose Credentials Page'),\n ),\n ),\n );\n }\n}\n\nclass SignUpPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n // SignUpPage builds its own Navigator which ends up being a nested\n // Navigator in our app.\n return Navigator(\n initialRoute: 'signup/personal_info',\n onGenerateRoute: (RouteSettings settings) {\n WidgetBuilder builder;\n switch (settings.name) {\n case 'signup/personal_info':\n // Assume CollectPersonalInfoPage collects personal info and then\n // navigates to 'signup/choose_credentials'.\n builder = (BuildContext _) => CollectPersonalInfoPage();\n break;\n case 'signup/choose_credentials':\n // Assume ChooseCredentialsPage collects new credentials and then\n // invokes 'onSignupComplete()'.\n builder = (BuildContext _) => ChooseCredentialsPage(\n onSignupComplete: () {\n // Referencing Navigator.of(context) from here refers to the\n // top level Navigator because SignUpPage is above the\n // nested Navigator that it created. Therefore, this pop()\n // will pop the entire \"sign up\" journey and return to the\n // \"/\" route, AKA HomePage.\n Navigator.of(context).pop();\n },\n );\n break;\n default:\n throw Exception('Invalid route: ${settings.name}');\n }\n return MaterialPageRoute(builder: builder, settings: settings);\n },\n );\n }\n}\n```\n\n[Navigator.of] operates on the nearest ancestor [Navigator] from the given\n[BuildContext]. Be sure to provide a [BuildContext] below the intended\n[Navigator], especially in large [build] methods where nested [Navigator]s\nare created. The [Builder] widget can be used to access a [BuildContext] at\na desired location in the widget subtree.", "detail": "", "kind": 7, "label": "Navigator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverSafeArea", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that insets another sliver by sufficient padding to avoid\nintrusions by the operating system.\n\nFor example, this will indent the sliver by enough to avoid the status bar\nat the top of the screen.\n\nIt will also indent the sliver by the amount necessary to avoid The Notch\non the iPhone X, or other similar creative physical features of the\ndisplay.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\nSee also:\n\n * [SafeArea], for insetting widgets to avoid operating system intrusions.\n * [SliverPadding], for insetting slivers in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SliverSafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoFullscreenDialogTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style transition used for summoning fullscreen dialogs.\n\nFor example, used when creating a new calendar event by bringing in the next\nscreen from the bottom.", "detail": "", "kind": 7, "label": "CupertinoFullscreenDialogTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTextField", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style text field.\n\nA text field lets the user enter text, either with a hardware keyboard or with\nan onscreen keyboard.\n\nThis widget corresponds to both a `UITextField` and an editable `UITextView`\non iOS.\n\nThe text field calls the [onChanged] callback whenever the user changes the\ntext in the field. If the user indicates that they are done typing in the\nfield (e.g., by pressing a button on the soft keyboard), the text field\ncalls the [onSubmitted] callback.\n\nTo control the text that is displayed in the text field, use the\n[controller]. For example, to set the initial value of the text field, use\na [controller] that already contains some text such as:\n\n\n```dart\nclass MyPrefilledText extends StatefulWidget {\n @override\n _MyPrefilledTextState createState() => _MyPrefilledTextState();\n}\n\nclass _MyPrefilledTextState extends State<MyPrefilledText> {\n TextEditingController _textController;\n\n @override\n void initState() {\n super.initState();\n _textController = TextEditingController(text: 'initial text');\n }\n\n @override\n Widget build(BuildContext context) {\n return CupertinoTextField(controller: _textController);\n }\n}\n```\n\nThe [controller] can also control the selection and composing region (and to\nobserve changes to the text, selection, and composing region).\n\nThe text field has an overridable [decoration] that, by default, draws a\nrounded rectangle border around the text field. If you set the [decoration]\nproperty to null, the decoration will be removed entirely.\n\nSee also:\n\n * <https://developer.apple.com/documentation/uikit/uitextfield>\n * [TextField], an alternative text field widget that follows the Material\n Design UI conventions.\n * [EditableText], which is the raw text editing control at the heart of a\n [TextField].", "detail": "", "kind": 7, "label": "CupertinoTextField" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "RenderObjectWidgets provide the configuration for [RenderObjectElement]s,\nwhich wrap [RenderObject]s, which provide the actual rendering of the\napplication.", "detail": "", "kind": 7, "label": "RenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures described by the given gesture\nfactories.\n\nFor common gestures, use a [GestureRecognizer].\n[RawGestureDetector] is useful primarily when developing your\nown gesture recognizers.\n\nConfiguring the gesture recognizers requires a carefully constructed map, as\ndescribed in [gestures] and as shown in the example below.\n\n\nThis example shows how to hook up a [TapGestureRecognizer]. It assumes that\nthe code is being used inside a [State] object with a `_last` field that is\nthen displayed as the child of the gesture detector.\n\n```dart\nRawGestureDetector(\n gestures: <Type, GestureRecognizerFactory>{\n TapGestureRecognizer: GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(\n () => TapGestureRecognizer(),\n (TapGestureRecognizer instance) {\n instance\n ..onTapDown = (TapDownDetails details) { setState(() { _last = 'down'; }); }\n ..onTapUp = (TapUpDetails details) { setState(() { _last = 'up'; }); }\n ..onTap = () { setState(() { _last = 'tap'; }); }\n ..onTapCancel = () { setState(() { _last = 'cancel'; }); };\n },\n ),\n },\n child: Container(width: 300.0, height: 300.0, color: Colors.yellow, child: Text(_last)),\n)\n```\n\nSee also:\n\n * [GestureDetector], a less flexible but much simpler widget that does the same thing.\n * [Listener], a widget that reports raw pointer events.\n * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.", "detail": "", "kind": 7, "label": "RawGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedModeBanner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a [Banner] saying \"DEBUG\" when running in checked mode.\n[MaterialApp] builds one of these by default.\nDoes nothing in release mode.", "detail": "", "kind": 7, "label": "CheckedModeBanner" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoActionSheet", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style action sheet.\n\nAn action sheet is a specific style of alert that presents the user\nwith a set of two or more choices related to the current context.\nAn action sheet can have a title, an additional message, and a list\nof actions. The title is displayed above the message and the actions\nare displayed below this content.\n\nThis action sheet styles its title and message to match standard iOS action\nsheet title and message text style.\n\nTo display action buttons that look like standard iOS action sheet buttons,\nprovide [CupertinoActionSheetAction]s for the [actions] given to this action sheet.\n\nTo include a iOS-style cancel button separate from the other buttons,\nprovide an [CupertinoActionSheetAction] for the [cancelButton] given to this\naction sheet.\n\nAn action sheet is typically passed as the child widget to\n[showCupertinoModalPopup], which displays the action sheet by sliding it up\nfrom the bottom of the screen.\n\nSee also:\n\n * [CupertinoActionSheetAction], which is an iOS-style action sheet button.\n * <https://developer.apple.com/design/human-interface-guidelines/ios/views/action-sheets/>", "detail": "", "kind": 7, "label": "CupertinoActionSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an iOS view in the Widget hierarchy.\n\n\nEmbedding iOS views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\n\n\n\nConstruction of UIViews is done asynchronously, before the UIView is ready this widget paints\nnothing while maintaining the same layout constraints.", "detail": "", "kind": 7, "label": "UiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a scrolling container that animates items when they are\ninserted or removed.\n\nWhen an item is inserted with [insertItem] an animation begins running. The\nanimation is passed to [AnimatedList.itemBuilder] whenever the item's widget\nis needed.\n\nWhen an item is removed with [removeItem] its animation is reversed.\nThe removed item's animation is passed to the [removeItem] builder\nparameter.\n\nAn app that needs to insert or remove items in response to an event\ncan refer to the [AnimatedList]'s state with a global key:\n\n```dart\nGlobalKey<AnimatedListState> listKey = GlobalKey<AnimatedListState>();\n...\nAnimatedList(key: listKey, ...);\n...\nlistKey.currentState.insert(123);\n```\n\n[AnimatedList] item input handlers can also refer to their [AnimatedListState]\nwith the static [AnimatedList.of] method.", "detail": "", "kind": 7, "label": "AnimatedListState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that replaces the entire screen with an iOS transition.\n\nThe page slides in from the right and exits in reverse. The page also shifts\nto the left in parallax when another page enters to cover it.\n\nThe page slides in from the bottom and exits in reverse with no parallax\neffect for fullscreen dialogs.\n\nBy default, when a modal route is replaced by another, the previous route\nremains in memory. To free all the resources when this is not necessary, set\n[maintainState] to false.\n\nThe type `T` specifies the return type of the route which can be supplied as\nthe route is popped from the stack via [Navigator.pop] when an optional\n`result` can be provided.\n\nSee also:\n\n * [MaterialPageRoute], for an adaptive [PageRoute] that uses a\n platform-appropriate transition.\n * [CupertinoPageScaffold], for applications that have one page with a fixed\n navigation bar on top.\n * [CupertinoTabScaffold], for applications that have a tab bar at the\n bottom with multiple pages.", "detail": "", "kind": 7, "label": "CupertinoPageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dismissible", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dismissed by dragging in the indicated [direction].\n\nDragging or flinging this widget in the [DismissDirection] causes the child\nto slide out of view. Following the slide animation, if [resizeDuration] is\nnon-null, the Dismissible widget animates its height (or width, whichever is\nperpendicular to the dismiss direction) to zero over the [resizeDuration].\n\n\nBackgrounds can be used to implement the \"leave-behind\" idiom. If a background\nis specified it is stacked behind the Dismissible's child and is exposed when\nthe child moves.\n\nThe widget calls the [onDismissed] callback either after its size has\ncollapsed to zero (if [resizeDuration] is non-null) or immediately after\nthe slide animation (if [resizeDuration] is null). If the Dismissible is a\nlist item, it must have a key that distinguishes it from the other items and\nits [onDismissed] callback must remove the item from the list.", "detail": "", "kind": 7, "label": "Dismissible" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DatePickerDateTimeOrder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the order of the columns inside [CupertinoDatePicker] in\ntime and date time mode.", "detail": "", "kind": 13, "label": "DatePickerDateTimeOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionHandleType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Which type of selection handle to be displayed.\n\nWith mixed-direction text, both handles may be the same type. Examples:\n\n* LTR text: 'the <quick brown> fox':\n\n The '<' is drawn with the [left] type, the '>' with the [right]\n\n* RTL text: 'XOF <NWORB KCIUQ> EHT':\n\n Same as above.\n\n* mixed text: '<the NWOR<B KCIUQ fox'\n\n Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn\n with the [left] type.\n\nSee also:\n\n * [TextDirection], which discusses left-to-right and right-to-left text in\n more detail.", "detail": "", "kind": 13, "label": "TextSelectionHandleType" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stack", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its children relative to the edges of its box.\n\nThis class is useful if you want to overlap several children in a simple\nway, for example having some text and an image, overlaid with a gradient and\na button attached to the bottom.\n\nEach child of a [Stack] widget is either _positioned_ or _non-positioned_.\nPositioned children are those wrapped in a [Positioned] widget that has at\nleast one non-null property. The stack sizes itself to contain all the\nnon-positioned children, which are positioned according to [alignment]\n(which defaults to the top-left corner in left-to-right environments and the\ntop-right corner in right-to-left environments). The positioned children are\nthen placed relative to the stack according to their top, right, bottom, and\nleft properties.\n\nThe stack paints its children in order with the first child being at the\nbottom. If you want to change the order in which the children paint, you\ncan rebuild the stack with the children in the new order. If you reorder\nthe children in this way, consider giving the children non-null keys.\nThese keys will cause the framework to move the underlying objects for\nthe children to their new locations rather than recreate them at their\nnew location.\n\nFor more details about the stack layout algorithm, see [RenderStack].\n\nIf you want to lay a number of children out in a particular pattern, or if\nyou want to make a custom layout manager, you probably want to use\n[CustomMultiChildLayout] instead. In particular, when using a [Stack] you\ncan't position children relative to their size or the stack's own size.\n\n\nUsing a [Stack] you can position widgets over one another.\n\n```dart\nStack(\n children: <Widget>[\n Container(\n width: 100,\n height: 100,\n color: Colors.red,\n ),\n Container(\n width: 90,\n height: 90,\n color: Colors.green,\n ),\n Container(\n width: 80,\n height: 80,\n color: Colors.blue,\n ),\n ],\n)\n```\n\n\nThis example shows how [Stack] can be used to enhance text visibility\nby adding gradient backdrops.\n\n```dart\nSizedBox(\n width: 250,\n height: 250,\n child: Stack(\n children: <Widget>[\n Container(\n width: 250,\n height: 250,\n color: Colors.white,\n ),\n Container(\n padding: EdgeInsets.all(5.0),\n alignment: Alignment.bottomCenter,\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: <Color>[\n Colors.black.withAlpha(0),\n Colors.black12,\n Colors.black45\n ],\n ),\n ),\n child: Text(\n \"Foreground Text\",\n style: TextStyle(color: Colors.white, fontSize: 20.0),\n ),\n ),\n ],\n ),\n)\n```\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * [Flow], which provides paint-time control of its children using transform\n matrices.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Stack" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the child semantics with an index.\n\nSemantic indexes are used by TalkBack/Voiceover to make announcements about\nthe current scroll state. Certain widgets like the [ListView] will\nautomatically provide a child index for building semantics. A user may wish\nto manually provide semantic indexes if not all child of the scrollable\ncontribute semantics.\n\n\nThe example below handles spacers in a scrollable that don't contribute\nsemantics. The automatic indexes would give the spaces a semantic index,\ncausing scroll announcements to erroneously state that there are four items\nvisible.\n\n```dart\nListView(\n addSemanticIndexes: false,\n semanticChildCount: 2,\n children: const <Widget>[\n IndexedSemantics(index: 0, child: Text('First')),\n Spacer(),\n IndexedSemantics(index: 1, child: Text('Second')),\n Spacer(),\n ],\n)\n```\n\nSee also:\n\n * [CustomScrollView], for an explanation of index semantics.", "detail": "", "kind": 7, "label": "IndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridPaper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a rectilinear grid of lines one pixel wide.\n\nUseful with a [Stack] for visualizing your layout along a grid.\n\nThe grid's origin (where the first primary horizontal line and the first\nprimary vertical line intersect) is at the top left of the widget.\n\nThe grid is drawn over the [child] widget.", "detail": "", "kind": 7, "label": "GridPaper" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directionality", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the ambient directionality of text and\ntext-direction-sensitive render objects.\n\nFor example, [Padding] depends on the [Directionality] to resolve\n[EdgeInsetsDirectional] objects into absolute [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "Directionality" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that paints a [Decoration] either before or after its child paints.\n\n[Container] insets its child by the widths of the borders; this widget does\nnot.\n\nCommonly used with [BoxDecoration].\n\nThe [child] is not clipped. To clip a child to the shape of a particular\n[ShapeDecoration], consider using a [ClipPath] widget.\n\n\nThis sample shows a radial gradient that draws a moon on a night sky:\n\n```dart\nDecoratedBox(\n decoration: BoxDecoration(\n gradient: RadialGradient(\n center: const Alignment(-0.5, -0.6),\n radius: 0.15,\n colors: <Color>[\n const Color(0xFFEEEEEE),\n const Color(0xFF111133),\n ],\n stops: <double>[0.9, 1.0],\n ),\n ),\n)\n```\n\nSee also:\n\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * [DecoratedBoxTransition], the version of this class that animates on the\n [decoration] property.\n * [Decoration], which you can extend to provide other effects with\n [DecoratedBox].\n * [CustomPaint], another way to draw custom effects from the widget layer.", "detail": "", "kind": 7, "label": "DecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Title", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that describes this app in the operating system.", "detail": "", "kind": 7, "label": "Title" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's orientation\n(distinct from the device orientation).\n\nSee also:\n\n * [LayoutBuilder], which exposes the complete constraints, not just the\n orientation.\n * [CustomSingleChildLayout], which positions its child during layout.\n * [CustomMultiChildLayout], with which you can define the precise layout\n of a list of children during the layout phase.\n * [MediaQueryData.orientation], which exposes whether the device is in\n landscape or portrait mode.", "detail": "", "kind": 7, "label": "OrientationBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expanded", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that expands a child of a [Row], [Column], or [Flex]\nso that the child fills the available space.\n\nUsing an [Expanded] widget makes a child of a [Row], [Column], or [Flex]\nexpand to fill the available space along the main axis (e.g., horizontally for\na [Row] or vertically for a [Column]). If multiple children are expanded,\nthe available space is divided among them according to the [flex] factor.\n\nAn [Expanded] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Expanded] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\n\nThis example shows how to use an [Expanded] widget in a [Column] so that\nit's middle child, a [Container] here, expands to fill the space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Column Sample'),\n ),\n body: Center(\n child: Column(\n children: <Widget>[\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n Expanded(\n child: Container(\n color: Colors.blue,\n width: 100,\n ),\n ),\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n ],\n ),\n ),\n );\n}\n```\n\nThis example shows how to use an [Expanded] widget in a [Row] with multiple\nchildren expanded, utilizing the [flex] factor to prioritize available space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Row Sample'),\n ),\n body: Center(\n child: Row(\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n Container(\n color: Colors.blue,\n height: 100,\n width: 50,\n ),\n Expanded(\n flex: 1,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Flexible], which does not force the child to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Expanded" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BallisticScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on a physics [Simulation].\n\nA [BallisticScrollActivity] is typically used when the user lifts their\nfinger off the screen to continue the scrolling gesture with the current velocity.\n\n[BallisticScrollActivity] is also used to restore a scroll view to a valid\nscroll offset when the geometry of the scroll view changes. In these\nsituations, the [Simulation] typically starts with a zero velocity.\n\nSee also:\n\n * [DrivenScrollActivity], which animates a scroll view based on a set of\n animation parameters.", "detail": "", "kind": 7, "label": "BallisticScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenVisitor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks passed to [AnimatedWidgetBaseState.forEachTween].", "detail": "(Tween<T> tween, T targetValue, TweenConstructor<T> constructor) → Tween<T>", "kind": 7, "label": "TweenVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An action the user has requested the text input control to perform.\n\nEach action represents a logical meaning, and also configures the soft\nkeyboard to display a certain kind of action button. The visual appearance\nof the action button might differ between versions of the same OS.\n\nDespite the logical meaning of each action, choosing a particular\n[TextInputAction] does not necessarily cause any specific behavior to\nhappen. It is up to the developer to ensure that the behavior that occurs\nwhen an action button is pressed is appropriate for the action button chosen.\n\nFor example: If the user presses the keyboard action button on iOS when it\nreads \"Emergency Call\", the result should not be a focus change to the next\nTextField. This behavior is not logically appropriate for a button that says\n\"Emergency Call\".\n\nSee [EditableText] for more information about customizing action button\nbehavior.\n\nMost [TextInputAction]s are supported equally by both Android and iOS.\nHowever, there is not a complete, direct mapping between Android's IME input\ntypes and iOS's keyboard return types. Therefore, some [TextInputAction]s\nare inappropriate for one of the platforms. If a developer chooses an\ninappropriate [TextInputAction] when running in debug mode, an error will be\nthrown. If the same thing is done in release mode, then instead of sending\nthe inappropriate value, Android will use \"unspecified\" on the platform\nside and iOS will use \"default\" on the platform side.\n\nSee also:\n\n * [TextInput], which configures the platform's keyboard setup.\n * [EditableText], which invokes callbacks when the action button is pressed.", "detail": "", "kind": 13, "label": "TextInputAction" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two relative rects.\n\nThis class specializes the interpolation of [Tween<RelativeRect>] to\nuse [RelativeRect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RelativeRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has mutable state.\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\nA stateful widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\nStateful widgets are useful when the part of the user interface you are\ndescribing can change dynamically, e.g. due to having an internal\nclock-driven state, or depending on some system state. For compositions that\ndepend only on the configuration information in the object itself and the\n[BuildContext] in which the widget is inflated, consider using\n[StatelessWidget].\n\n\n[StatefulWidget] instances themselves are immutable and store their mutable\nstate either in separate [State] objects that are created by the\n[createState] method, or in objects to which that [State] subscribes, for\nexample [Stream] or [ChangeNotifier] objects, to which references are stored\nin final fields on the [StatefulWidget] itself.\n\nThe framework calls [createState] whenever it inflates a\n[StatefulWidget], which means that multiple [State] objects might be\nassociated with the same [StatefulWidget] if that widget has been inserted\ninto the tree in multiple places. Similarly, if a [StatefulWidget] is\nremoved from the tree and later inserted in to the tree again, the framework\nwill call [createState] again to create a fresh [State] object, simplifying\nthe lifecycle of [State] objects.\n\nA [StatefulWidget] keeps the same [State] object when moving from one\nlocation in the tree to another if its creator used a [GlobalKey] for its\n[key]. Because a widget with a [GlobalKey] can be used in at most one\nlocation in the tree, a widget that uses a [GlobalKey] has at most one\nassociated element. The framework takes advantage of this property when\nmoving a widget with a global key from one location in the tree to another\nby grafting the (unique) subtree associated with that widget from the old\nlocation to the new location (instead of recreating the subtree at the new\nlocation). The [State] objects associated with [StatefulWidget] are grafted\nalong with the rest of the subtree, which means the [State] object is reused\n(instead of being recreated) in the new location. However, in order to be\neligible for grafting, the widget must be inserted into the new location in\nthe same animation frame in which it was removed from the old location.\n\n## Performance considerations\n\nThere are two primary categories of [StatefulWidget]s.\n\nThe first is one which allocates resources in [State.initState] and disposes\nof them in [State.dispose], but which does not depend on [InheritedWidget]s\nor call [State.setState]. Such widgets are commonly used at the root of an\napplication or page, and communicate with subwidgets via [ChangeNotifier]s,\n[Stream]s, or other such objects. Stateful widgets following such a pattern\nare relatively cheap (in terms of CPU and GPU cycles), because they are\nbuilt once then never update. They can, therefore, have somewhat complicated\nand deep build methods.\n\nThe second category is widgets that use [State.setState] or depend on\n[InheritedWidget]s. These will typically rebuild many times during the\napplication's lifetime, and it is therefore important to minimize the impact\nof rebuilding such a widget. (They may also use [State.initState] or\n[State.didChangeDependencies] and allocate resources, but the important part\nis that they rebuild.)\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateful widget:\n\n * Push the state to the leaves. For example, if your page has a ticking\n clock, rather than putting the state at the top of the page and\n rebuilding the entire page each time the clock ticks, create a dedicated\n clock widget that only updates itself.\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. Ideally, a stateful widget would only create a\n single widget, and that widget would be a [RenderObjectWidget].\n (Obviously this isn't always practical, but the closer a widget gets to\n this ideal, the more efficient it will be.)\n\n * If a subtree does not change, cache the widget that represents that\n subtree and re-use it each time it can be used. It is massively more\n efficient for a widget to be re-used than for a new (but\n identically-configured) widget to be created. Factoring out the stateful\n part into a widget that takes a child argument is a common way of doing\n this.\n\n * Use `const` widgets where possible. (This is equivalent to caching a\n widget and re-using it.)\n\n * Avoid changing the depth of any created subtrees or changing the type of\n any widgets in the subtree. For example, rather than returning either the\n child or the child wrapped in an [IgnorePointer], always wrap the child\n widget in an [IgnorePointer] and control the [IgnorePointer.ignoring]\n property. This is because changing the depth of the subtree requires\n rebuilding, laying out, and painting the entire subtree, whereas just\n changing the property will require the least possible change to the\n render tree (in the case of [IgnorePointer], for example, no layout or\n repaint is necessary at all).\n\n * If the depth must be changed for some reason, consider wrapping the\n common parts of the subtrees in widgets that have a [GlobalKey] that\n remains consistent for the life of the stateful widget. (The\n [KeyedSubtree] widget may be useful for this purpose if no other widget\n can conveniently be assigned the key.)\n\n\nThis is a skeleton of a stateful widget subclass called `YellowBird`.\n\nIn this example. the [State] has no actual state. State is normally\nrepresented as private member fields. Also, normally widgets have more\nconstructor arguments, each of which corresponds to a `final` property.\n\n```dart\nclass YellowBird extends StatefulWidget {\n const YellowBird({ Key key }) : super(key: key);\n\n @override\n _YellowBirdState createState() => _YellowBirdState();\n}\n\nclass _YellowBirdState extends State<YellowBird> {\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFFFFE306));\n }\n}\n```\n\nThis example shows the more generic widget `Bird` which can be given a\ncolor and a child, and which has some internal state with a method that\ncan be called to mutate it:\n\n```dart\nclass Bird extends StatefulWidget {\n const Bird({\n Key key,\n this.color = const Color(0xFFFFE306),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n _BirdState createState() => _BirdState();\n}\n\nclass _BirdState extends State<Bird> {\n double _size = 1.0;\n\n void grow() {\n setState(() { _size += 0.1; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(\n color: widget.color,\n transform: Matrix4.diagonal3Values(_size, _size, 1.0),\n child: widget.child,\n );\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [State], where the logic behind a [StatefulWidget] is hosted.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatefulWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. Rather than receiving\ntheir children as an explicit [List], they receive their children using a\n[SliverChildDelegate].\n\nIt's uncommon to subclass [SliverChildDelegate]. Instead, consider using one\nof the existing subclasses that provide adaptors to builder callbacks or\nexplicit child lists.\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as in the\ncase of [SliverChildListDelegate]) or lazily provided ones (such as in the\ncase of [SliverChildBuilderDelegate]).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree, states\nand render objects are destroyed. A new child at the same position in the\nsliver will be lazily recreated along with new elements, states and render\nobjects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the sliver child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the sliver child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child widget\n subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the sliver child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the sliver keeps the child's\n render object (and by extension, its associated elements and states) in a\n cache list instead of destroying them. When scrolled back into view, the\n render object is repainted as-is (if it wasn't marked dirty in the\n interim).\n\n This only works if the [SliverChildDelegate] subclasses don't wrap the\n child widget subtree with other widgets such as [AutomaticKeepAlive] and\n [RepaintBoundary] via `addAutomaticKeepAlives` and\n `addRepaintBoundaries`.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default in\n [SliverChildListDelegate] or [SliverChildListDelegate]). Instead of\n unconditionally caching the child element subtree when scrolling\n off-screen like [KeepAlive], [AutomaticKeepAlive] can let whether to\n cache the subtree be determined by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its sliver child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the sliver child element subtree will be\n destroyed when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive by\n using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.", "detail": "", "kind": 7, "label": "SliverChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildListDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using an\nexplicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollIndicatorNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that an [GlowingOverscrollIndicator] will start showing an\noverscroll indication.\n\nTo prevent the indicator from showing the indication, call [disallowGlow] on\nthe notification.\n\nSee also:\n\n * [GlowingOverscrollIndicator], which generates this type of notification.", "detail": "", "kind": 7, "label": "OverscrollIndicatorNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollbarPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomPainter] for painting scrollbars.\n\nUnlike [CustomPainter]s that subclasses [CustomPainter] and only repaint\nwhen [shouldRepaint] returns true (which requires this [CustomPainter] to\nbe rebuilt), this painter has the added optimization of repainting and not\nrebuilding when:\n\n * the scroll position changes; and\n * when the scrollbar fades away.\n\nCalling [update] with the new [ScrollMetrics] will repaint the new scrollbar\nposition.\n\nUpdating the value on the provided [fadeoutOpacityAnimation] will repaint\nwith the new opacity.\n\nYou must call [dispose] on this [ScrollbarPainter] when it's no longer used.\n\nSee also:\n\n * [Scrollbar] for a widget showing a scrollbar around a [Scrollable] in the\n Material Design style.\n * [CupertinoScrollbar] for a widget showing a scrollbar around a\n [Scrollable] in the iOS style.", "detail": "", "kind": 7, "label": "ScrollbarPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoActivityIndicator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style activity indicator.\n\nSee also:\n\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/progress-indicators/#activity-indicators>", "detail": "", "kind": 7, "label": "CupertinoActivityIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListItemBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedList].", "detail": "(BuildContext context, int index, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionControls", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for building the selection UI, to be provided by the\nimplementor of the toolbar widget.\n\nOverride text operations such as [handleCut] if needed.", "detail": "", "kind": 7, "label": "TextSelectionControls" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the opacity of a widget.\n\nFor a widget that automatically animates between the sizes of two children,\nfading between them, see [AnimatedCrossFade].\n\n\nHere's an illustration of the [FadeTransition] widget, with it's [opacity]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:", "detail": "", "kind": 7, "label": "FadeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that listens for [Notification]s bubbling up the tree.\n\nNotifications will trigger the [onNotification] callback only if their\n[runtimeType] is a subtype of `T`.\n\nTo dispatch notifications, use the [Notification.dispatch] method.", "detail": "", "kind": 7, "label": "NotificationListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics used by a [PageView].\n\nThese physics cause the page view to snap to page boundaries.\n\nSee also:\n\n * [ScrollPhysics], the base class which defines the API for scrolling\n physics.\n * [PageView.physics], which can override the physics used by a page view.", "detail": "", "kind": 7, "label": "PageScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [ScrollPosition] to a scroll view with fixed item sizes.\n\nThe metrics are available on [ScrollNotification]s generated from a scroll\nviews such as [ListWheelScrollView]s with a [FixedExtentScrollController] and\nexposes the current [itemIndex] and the scroll view's [itemExtent].\n\n`FixedExtent` refers to the fact that the scrollable items have the same size.\nThis is distinct from `Fixed` in the parent class name's [FixedScrollMetric]\nwhich refers to its immutability.", "detail": "", "kind": 7, "label": "FixedExtentMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFade", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that cross-fades between two given children and animates itself\nbetween their sizes.\n\nThe animation is controlled through the [crossFadeState] parameter.\n[firstCurve] and [secondCurve] represent the opacity curves of the two\nchildren. The [firstCurve] is inverted, i.e. it fades out when providing a\ngrowing curve like [Curves.linear]. The [sizeCurve] is the curve used to\nanimate between the size of the fading-out child and the size of the\nfading-in child.\n\nThis widget is intended to be used to fade a pair of widgets with the same\nwidth. In the case where the two children have different heights, the\nanimation crops overflowing children during the animation by aligning their\ntop edge, which means that the bottom will be clipped.\n\nThe animation is automatically triggered when an existing\n[AnimatedCrossFade] is rebuilt with a different value for the\n[crossFadeState] property.\n\n\nThis code fades between two representations of the Flutter logo. It depends\non a boolean field `_first`; when `_first` is true, the first logo is shown,\notherwise the second logo is shown. When the field changes state, the\n[AnimatedCrossFade] widget cross-fades between the two forms of the logo\nover three seconds.\n\n```dart\nAnimatedCrossFade(\n duration: const Duration(seconds: 3),\n firstChild: const FlutterLogo(style: FlutterLogoStyle.horizontal, size: 100.0),\n secondChild: const FlutterLogo(style: FlutterLogoStyle.stacked, size: 100.0),\n crossFadeState: _first ? CrossFadeState.showFirst : CrossFadeState.showSecond,\n)\n```\n\nSee also:\n\n * [AnimatedSize], the lower-level widget which [AnimatedCrossFade] uses to\n automatically change size.\n * [AnimatedSwitcher], which switches out a child for a new one with a\n customizable transition.", "detail": "", "kind": 7, "label": "AnimatedCrossFade" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrivenScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on animation parameters.\n\nFor example, a [DrivenScrollActivity] is used to implement\n[ScrollController.animateTo].\n\nSee also:\n\n * [BallisticScrollActivity], which animates a scroll view based on a\n physics [Simulation].", "detail": "", "kind": 7, "label": "DrivenScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Spacer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Spacer creates an adjustable, empty spacer that can be used to tune the\nspacing between widgets in a [Flex] container, like [Row] or [Column].\n\nThe [Spacer] widget will take up any available space, so setting the\n[Flex.mainAxisAlignment] on a flex container that contains a [Spacer] to\n[MainAxisAlignment.spaceAround], [MainAxisAlignment.spaceBetween], or\n[MainAxisAlignment.spaceEvenly] will not have any visible effect: the\n[Spacer] has taken up all of the additional space, therefore there is none\nleft to redistribute.\n\n\n```dart\nRow(\n children: <Widget>[\n Text('Begin'),\n Spacer(), // Defaults to a flex of one.\n Text('Middle'),\n // Gives twice the space between Middle and End than Begin and Middle.\n Spacer(flex: 2),\n Text('End'),\n ],\n)\n```\n\nSee also:\n\n * [Row] and [Column], which are the most common containers to use a Spacer\n in.\n * [SizedBox], to create a box with a specific size and an optional child.", "detail": "", "kind": 7, "label": "Spacer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollStartNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has started scrolling.\n\nSee also:\n\n * [ScrollEndNotification], which indicates that scrolling has stopped.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollStartNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveHandle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Listenable] which can be manually triggered.\n\nUsed with [KeepAliveNotification] objects as their\n[KeepAliveNotification.handle].\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses a\n[KeepAliveHandle] internally.", "detail": "", "kind": 7, "label": "KeepAliveHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SafeArea", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by sufficient padding to avoid intrusions by\nthe operating system.\n\nFor example, this will indent the child by enough to avoid the status bar at\nthe top of the screen.\n\nIt will also indent the child by the amount necessary to avoid The Notch on\nthe iPhone X, or other similar creative physical features of the display.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\n\nSee also:\n\n * [SliverSafeArea], for insetting slivers to avoid operating system\n intrusions.\n * [Padding], for insetting widgets in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoButton", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style button.\n\nTakes in a text or an icon that fades out and in on touch. May optionally have a\nbackground.\n\nSee also:\n\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/buttons/>", "detail": "", "kind": 7, "label": "CupertinoButton" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that composes other [Element]s.\n\nRather than creating a [RenderObject] directly, a [ComponentElement] creates\n[RenderObject]s indirectly by creating other [Element]s.\n\nContrast with [RenderObjectElement].", "detail": "", "kind": 7, "label": "ComponentElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedDefaultTextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [DefaultTextStyle] which automatically transitions the\ndefault text style (the text style to apply to descendant [Text] widgets\nwithout explicit style) over a given duration whenever the given style\nchanges.\n\nThe [textAlign], [softWrap], [textOverflow], and [maxLines] properties are\nnot animated and take effect immediately when changed.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].", "detail": "", "kind": 7, "label": "AnimatedDefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleListResolutionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeListResolutionCallback].\n\nA [LocaleListResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the list of\nlocales for the device.\n\nThe [locales] list is the device's preferred locales when the app started, or the\ndevice's preferred locales the user selected after the app was started. This list\nis in order of preference. If this list is null or empty, then Flutter has not yet\nreceived the locale information from the platform. The [supportedLocales] parameter\nis just the value of [WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleResolutionCallback], which takes only one default locale (instead of a list)\n and is attempted only after this callback fails or is null. [LocaleListResolutionCallback]\n is recommended over [LocaleResolutionCallback].", "detail": "(List<Locale> locales, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleListResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a [Scrollable]'s contents, useful for modeling the state\nof its viewport.\n\nThis class defines a current position, [pixels], and a range of values\nconsidered \"in bounds\" for that position. The range has a minimum value at\n[minScrollExtent] and a maximum value at [maxScrollExtent] (inclusive). The\nviewport scrolls in the direction and axis described by [axisDirection]\nand [axis].\n\nThe [outOfRange] getter will return true if [pixels] is outside this defined\nrange. The [atEdge] getter will return true if the [pixels] position equals\neither the [minScrollExtent] or the [maxScrollExtent].\n\nThe dimensions of the viewport in the given [axis] are described by\n[viewportDimension].\n\nThe above values are also exposed in terms of [extentBefore],\n[extentInside], and [extentAfter], which may be more useful for use cases\nsuch as scroll bars; for example, see [Scrollbar].\n\nSee also:\n\n * [FixedScrollMetrics], which is an immutable object that implements this\n interface.", "detail": "", "kind": 7, "label": "ScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAliveClientMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin with convenience methods for clients of [AutomaticKeepAlive]. Used\nwith [State] subclasses.\n\nSubclasses must implement [wantKeepAlive], and their [build] methods must\ncall `super.build` (the return value will always return null, and should be\nignored).\n\nThen, whenever [wantKeepAlive]'s value changes (or might change), the\nsubclass should call [updateKeepAlive].\n\nThe type argument `T` is the type of the [StatefulWidget] subclass of the\n[State] into which this class is being mixed.\n\nSee also:\n\n * [AutomaticKeepAlive], which listens to messages from this mixin.\n * [KeepAliveNotification], the notifications sent by this mixin.", "detail": "", "kind": 7, "label": "AutomaticKeepAliveClientMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offstage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that lays the child out as if it was in the tree, but without\npainting anything, without making the child available for hit testing, and\nwithout taking any room in the parent.\n\nAnimations continue to run in offstage children, and therefore use battery\nand CPU time, regardless of whether the animations end up being visible.\n\n[Offstage] can be used to measure the dimensions of a widget without\nbringing it on screen (yet). To hide a widget from view while it is not\nneeded, prefer removing the widget from the tree entirely rather than\nkeeping it alive in an [Offstage] subtree.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly).\n * [TickerMode], which can be used to disable animations in a subtree.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Offstage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state of connection to an asynchronous computation.\n\nSee also:\n\n * [AsyncSnapshot], which augments a connection state with information\n received from the asynchronous computation.", "detail": "", "kind": 13, "label": "ConnectionState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ParentDataWidget] as its configuration.", "detail": "", "kind": 7, "label": "ParentDataElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A viewport showing a subset of children on a wheel.\n\nTypically used with [ListWheelScrollView], this viewport is similar to\n[Viewport] in that it shows a subset of children in a scrollable based\non the scrolling offset and the children's dimensions. But uses\n[RenderListWheelViewport] to display the children on a wheel.\n\nSee also:\n\n * [ListWheelScrollView], widget that combines this viewport with a scrollable.\n * [RenderListWheelViewport], the render object that renders the children\n on a wheel.", "detail": "", "kind": 7, "label": "ListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the draggable is dropped.\n\nThe velocity and offset at which the pointer was moving when the draggable\nwas dropped is available in the [DraggableDetails]. Also included in the\n`details` is whether the draggable's [DragTarget] accepted it.\n\nUsed by [Draggable.onDragEnd]", "detail": "(DraggableDetails details) → void", "kind": 7, "label": "DragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget, e.g. [StatelessWidget.build]\nor [State.build].\n\nUsed by [Builder.builder], [OverlayEntry.builder], etc.\n\nSee also:\n\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [TransitionBuilder], which is similar but also takes a child.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context) → Widget", "kind": 7, "label": "WidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewHeaderSliversBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [NestedScrollView] for building its header.\n\nThe `innerBoxIsScrolled` argument is typically used to control the\n[SliverAppBar.forceElevated] property to ensure that the app bar shows a\nshadow, since it would otherwise not necessarily be aware that it had\ncontent ostensibly below it.", "detail": "(BuildContext context, bool innerBoxIsScrolled) → List<Widget>", "kind": 7, "label": "NestedScrollViewHeaderSliversBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AspectRatio", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that attempts to size the child to a specific aspect ratio.\n\nThe widget first tries the largest width permitted by the layout\nconstraints. The height of the widget is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The widget will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the widget would\ncontinue iterating through the constraints. If the widget does not\nfind a feasible size after consulting each constraint, the widget\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "AspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that overlays a widget over the current route.", "detail": "", "kind": 7, "label": "PopupRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDialog", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style dialog.\n\nThis dialog widget does not have any opinion about the contents of the\ndialog. Rather than using this widget directly, consider using\n[CupertinoAlertDialog], which implement a specific kind of dialog.\n\nPush with `Navigator.of(..., rootNavigator: true)` when using with\n[CupertinoTabScaffold] to ensure that the dialog appears above the tabs.\n\nSee also:\n\n * [CupertinoAlertDialog], which is a dialog with title, contents, and\n actions.\n * <https://developer.apple.com/ios/human-interface-guidelines/views/alerts/>", "detail": "(Deprecated) ", "kind": 7, "label": "CupertinoDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building the widget representing the form field.\n\nUsed by [FormField.builder].", "detail": "(FormFieldState<T> field) → Widget", "kind": 7, "label": "FormFieldBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Builder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that calls a closure to obtain its child widget.\n\nSee also:\n\n * [StatefulBuilder], a platonic widget which also has state.", "detail": "", "kind": 7, "label": "Builder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageTransition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides an iOS-style page transition animation.\n\nThe page slides in from the right and exits in reverse. It also shifts to the left in\na parallax motion when another page enters to cover it.", "detail": "", "kind": 7, "label": "CupertinoPageTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Center", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that centers its child within itself.\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\nSee also:\n\n * [Align], which lets you arbitrarily position a child within itself,\n rather than just centering it.\n * [Row], a widget that displays its children in a horizontal array.\n * [Column], a widget that displays its children in a vertical array.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Center" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Text", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A run of text with a single style.\n\nThe [Text] widget displays a string of text with single style. The string\nmight break across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nThe [style] argument is optional. When omitted, the text will use the style\nfrom the closest enclosing [DefaultTextStyle]. If the given style's\n[TextStyle.inherit] property is true (the default), the given style will\nbe merged with the closest enclosing [DefaultTextStyle]. This merging\nbehavior is useful, for example, to make the text bold while using the\ndefault font family and size.\n\n\n```dart\nText(\n 'Hello, $_name! How are you?',\n textAlign: TextAlign.center,\n overflow: TextOverflow.ellipsis,\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\nUsing the [Text.rich] constructor, the [Text] widget can\ndisplay a paragraph with differently styled [TextSpan]s. The sample\nthat follows displays \"Hello beautiful world\" with different styles\nfor each word.\n\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'Hello', // default text style\n children: <TextSpan>[\n TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),\n TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),\n ],\n ),\n)\n```\n\n## Interactivity\n\nTo make [Text] react to touch events, wrap it in a [GestureDetector] widget\nwith a [GestureDetector.onTap] handler.\n\nIn a material design application, consider using a [FlatButton] instead, or\nif that isn't appropriate, at least using an [InkWell] instead of\n[GestureDetector].\n\nTo make sections of the text interactive, use [RichText] and specify a\n[TapGestureRecognizer] as the [TextSpan.recognizer] of the relevant part of\nthe text.\n\nSee also:\n\n * [RichText], which gives you more control over the text styles.\n * [DefaultTextStyle], which sets default styles for [Text] widgets.", "detail": "", "kind": 7, "label": "Text" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSliverRefreshControl", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver widget implementing the iOS-style pull to refresh content control.\n\nWhen inserted as the first sliver in a scroll view or behind other slivers\nthat still lets the scrollable overscroll in front of this sliver (such as\nthe [CupertinoSliverNavigationBar], this widget will:\n\n * Let the user draw inside the overscrolled area via the passed in [builder].\n * Trigger the provided [onRefresh] function when overscrolled far enough to\n pass [refreshTriggerPullDistance].\n * Continue to hold [refreshIndicatorExtent] amount of space for the [builder]\n to keep drawing inside of as the [Future] returned by [onRefresh] processes.\n * Scroll away once the [onRefresh] [Future] completes.\n\nThe [builder] function will be informed of the current [RefreshIndicatorMode]\nwhen invoking it, except in the [RefreshIndicatorMode.inactive] state when\nno space is available and nothing needs to be built. The [builder] function\nwill otherwise be continuously invoked as the amount of space available\nchanges from overscroll, as the sliver scrolls away after the [onRefresh]\ntask is done, etc.\n\nOnly one refresh can be triggered until the previous refresh has completed\nand the indicator sliver has retracted at least 90% of the way back.\n\nCan only be used in downward-scrolling vertical lists that overscrolls. In\nother words, refreshes can't be triggered with lists using\n[ClampingScrollPhysics].\n\nIn a typical application, this sliver should be inserted between the app bar\nsliver such as [CupertinoSliverNavigationBar] and your main scrollable\ncontent's sliver.\n\nSee also:\n\n * [CustomScrollView], a typical sliver holding scroll view this control\n should go into.\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/refresh-content-controls/>\n * [RefreshIndicator], a Material Design version of the pull-to-refresh\n paradigm. This widget works differently than [RefreshIndicator] because\n instead of being an overlay on top of the scrollable, the\n [CupertinoSliverRefreshControl] is part of the scrollable and actively occupies\n scrollable space.", "detail": "", "kind": 7, "label": "CupertinoSliverRefreshControl" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes and positions children efficiently, according to the\nlogic in a [FlowDelegate].\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow, which happens\nwithout the children being laid out again (contrast this with a [Stack],\nwhich does the sizing and positioning together during layout).\n\nThe most efficient way to trigger a repaint of the flow is to supply an\nanimation to the constructor of the [FlowDelegate]. The flow will listen to\nthis animation and repaint whenever the animation ticks, avoiding both the\nbuild and layout phases of the pipeline.\n\nSee also:\n\n * [Wrap], which provides the layout model that some other frameworks call\n \"flow\", and is otherwise unrelated to [Flow].\n * [FlowDelegate], which controls the visual presentation of the children.\n * [Stack], which arranges children relative to the edges of the container.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that both has state and calls a closure to obtain its child widget.\n\nSee also:\n\n * [Builder], the platonic stateless widget.", "detail": "", "kind": 7, "label": "StatefulBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A bridge from a [RenderObject] to an [Element] tree.\n\nThe given container is the [RenderObject] that the [Element] tree should be\ninserted into. It must be a [RenderObject] that implements the\n[RenderObjectWithChildMixin] protocol. The type argument `T` is the kind of\n[RenderObject] that the container expects as its child.\n\nUsed by [runApp] to bootstrap applications.", "detail": "", "kind": 7, "label": "RenderObjectToWidgetAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LimitedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box that limits its size only when it's unconstrained.\n\nIf this widget's maximum width is unconstrained then its child's width is\nlimited to [maxWidth]. Similarly, if this widget's maximum height is\nunconstrained then its child's height is limited to [maxHeight].\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).\n\nSee also:\n\n * [ConstrainedBox], which applies its constraints in all cases, not just\n when the incoming constraints are unbounded.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "LimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultAssetBundle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the default asset bundle for its descendants.\n\nFor example, used by [Image] to determine which bundle to use for\n[AssetImage]s if no bundle is specified explicitly.\n\n\nThis can be used in tests to override what the current asset bundle is, thus\nallowing specific resources to be injected into the widget under test.\n\nFor example, a test could create a test asset bundle like this:\n\n```dart\nclass TestAssetBundle extends CachingAssetBundle {\n @override\n Future<ByteData> load(String key) async {\n if (key == 'resources/test')\n return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);\n return null;\n }\n}\n```\n\n...then wrap the widget under test with a [DefaultAssetBundle] using this\nbundle implementation:\n\n```dart\nawait tester.pumpWidget(\n MaterialApp(\n home: DefaultAssetBundle(\n bundle: TestAssetBundle(),\n child: TestWidget(),\n ),\n ),\n);\n```\n\nAssuming that `TestWidget` uses [DefaultAssetBundle.of] to obtain its\n[AssetBundle], it will now see the [TestAssetBundle]'s \"Hello World!\" data\nwhen requesting the \"resources/test\" asset.\n\nSee also:\n\n * [AssetBundle], the interface for asset bundles.\n * [rootBundle], the default default asset bundle.", "detail": "", "kind": 7, "label": "DefaultAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncSnapshot", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable representation of the most recent interaction with an asynchronous\ncomputation.\n\nSee also:\n\n * [StreamBuilder], which builds itself based on a snapshot from interacting\n with a [Stream].\n * [FutureBuilder], which builds itself based on a snapshot from interacting\n with a [Future].", "detail": "", "kind": 7, "label": "AsyncSnapshot" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Banner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a diagonal message above the corner of another widget.\n\nUseful for showing the execution mode of an app (e.g., that asserts are\nenabled.)\n\nSee also:\n\n * [CheckedModeBanner], which the [WidgetsApp] widget includes by default in\n debug mode, to show a banner that says \"DEBUG\".", "detail": "", "kind": 7, "label": "Banner" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetectorState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [RawGestureDetector].", "detail": "", "kind": 7, "label": "RawGestureDetectorState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ProxyWidget] as its configuration.", "detail": "", "kind": 7, "label": "ProxyElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CreateRectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that takes two [Rect] instances and returns a\n[RectTween] that transitions between them.\n\nThis is typically used with a [HeroController] to provide an animation for\n[Hero] positions that looks nicer than a linear movement. For example, see\n[MaterialRectArcTween].", "detail": "(Rect begin, Rect end) → Tween<Rect>", "kind": 7, "label": "CreateRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for strategies that build widgets based on asynchronous\ninteraction.\n\nSee also:\n\n * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Stream].\n * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Future].", "detail": "(BuildContext context, AsyncSnapshot<T> snapshot) → Widget", "kind": 7, "label": "AsyncWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageIcon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An icon that comes from an [ImageProvider], e.g. an [AssetImage].\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for icons based on glyphs from fonts instead of images.\n * [Icons], a predefined font based set of icons from the material design library.", "detail": "", "kind": 7, "label": "ImageIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for scrolling activities like dragging and flinging.\n\nSee also:\n\n * [ScrollPosition], which uses [ScrollActivity] objects to manage the\n [ScrollPosition] of a [Scrollable].", "detail": "", "kind": 7, "label": "ScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorberHandle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Handle to provide to a [SliverOverlapAbsorber], a [SliverOverlapInjector],\nand an [NestedScrollViewViewport], to shift overlap in a [NestedScrollView].\n\nA particular [SliverOverlapAbsorberHandle] can only be assigned to a single\n[SliverOverlapAbsorber] at a time. It can also be (and normally is) assigned\nto one or more [SliverOverlapInjector]s, which must be later descendants of\nthe same [NestedScrollViewViewport] as the [SliverOverlapAbsorber]. The\n[SliverOverlapAbsorber] must be a direct descendant of the\n[NestedScrollViewViewport], taking part in the same sliver layout. (The\n[SliverOverlapInjector] can be a descendant that takes part in a nested\nscroll view's sliver layout.)\n\nWhenever the [NestedScrollViewViewport] is marked dirty for layout, it will\ncause its assigned [SliverOverlapAbsorberHandle] to fire notifications. It\nis the responsibility of the [SliverOverlapInjector]s (and any other\nclients) to mark themselves dirty when this happens, in case the geometry\nsubsequently changes during layout.\n\nSee also:\n\n * [NestedScrollView], which uses a [NestedScrollViewViewport] and a\n [SliverOverlapAbsorber] to align its children, and which shows sample\n usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorberHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nSee also the discussions at [Key] and [Widget.key].", "detail": "", "kind": 7, "label": "ObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectButtonBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by\n[WidgetInspector.selectButtonBuilder].", "detail": "(BuildContext context, VoidCallback onPressed) → Widget", "kind": 7, "label": "InspectorSelectButtonBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOval", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildBuilderDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using a builder\ncallback.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot have to be built until they are displayed.", "detail": "", "kind": 7, "label": "ListWheelChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTabBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled bottom navigation tab bar.\n\nDisplays multiple tabs using [BottomNavigationBarItem] with one tab being\nactive, the first tab by default.\n\nThis [StatelessWidget] doesn't store the active tab itself. You must\nlisten to the [onTap] callbacks and call `setState` with a new [currentIndex]\nfor the new selection to reflect. This can also be done automatically\nby wrapping this with a [CupertinoTabScaffold].\n\nTab changes typically trigger a switch between [Navigator]s, each with its\nown navigation stack, per standard iOS design. This can be done by using\n[CupertinoTabView]s inside each tab builder in [CupertinoTabScaffold].\n\nIf the given [backgroundColor]'s opacity is not 1.0 (which is the case by\ndefault), it will produce a blurring effect to the content behind it.\n\nSee also:\n\n * [CupertinoTabScaffold], which hosts the [CupertinoTabBar] at the bottom.\n * [BottomNavigationBarItem], an item in a [CupertinoTabBar].", "detail": "", "kind": 7, "label": "CupertinoTabBar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetLeave", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] leaves a [DragTarget].\n\nUsed by [DragTarget.onLeave].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetLeave" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents the details when a specific pointer event occurred on\nthe [Draggable].\n\nThis includes the [Velocity] at which the pointer was moving and [Offset]\nwhen the draggable event occurred, and whether its [DragTarget] accepted it.\n\nAlso, this is the details object for callbacks that use [DragEndCallback].", "detail": "", "kind": 7, "label": "DraggableDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [MultiChildRenderObjectWidget] as its configuration.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [ContainerRenderObjectMixin] mixin with a parent data\ntype that implements [ContainerParentDataMixin<RenderObject>]. Such widgets\nare expected to inherit from [MultiChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "MultiChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Localizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the [Locale] for its `child` and the localized resources that the\nchild depends on.\n\nLocalized resources are loaded by the list of [LocalizationsDelegate]\n`delegates`. Each delegate is essentially a factory for a collection\nof localized resources. There are multiple delegates because there are\nmultiple sources for localizations within an app.\n\nDelegates are typically simple subclasses of [LocalizationsDelegate] that\noverride [LocalizationsDelegate.load]. For example a delegate for the\n`MyLocalizations` class defined below would be:\n\n```dart\nclass _MyDelegate extends LocalizationsDelegate<MyLocalizations> {\n @override\n Future<MyLocalizations> load(Locale locale) => MyLocalizations.load(locale);\n\n @override\n bool shouldReload(MyLocalizationsDelegate old) => false;\n}\n```\n\nEach delegate can be viewed as a factory for objects that encapsulate a\na set of localized resources. These objects are retrieved with\nby runtime type with [Localizations.of].\n\nThe [WidgetsApp] class creates a `Localizations` widget so most apps\nwill not need to create one. The widget app's `Localizations` delegates can\nbe initialized with [WidgetsApp.localizationsDelegates]. The [MaterialApp]\nclass also provides a `localizationsDelegates` parameter that's just\npassed along to the [WidgetsApp].\n\nApps should retrieve collections of localized resources with\n`Localizations.of<MyLocalizations>(context, MyLocalizations)`,\nwhere MyLocalizations is an app specific class defines one function per\nresource. This is conventionally done by a static `.of` method on the\nMyLocalizations class.\n\nFor example, using the `MyLocalizations` class defined below, one would\nlookup a localized title string like this:\n```dart\nMyLocalizations.of(context).title()\n```\nIf `Localizations` were to be rebuilt with a new `locale` then\nthe widget subtree that corresponds to [BuildContext] `context` would\nbe rebuilt after the corresponding resources had been loaded.\n\nThis class is effectively an [InheritedWidget]. If it's rebuilt with\na new `locale` or a different list of delegates or any of its\ndelegates' [LocalizationsDelegate.shouldReload()] methods returns true,\nthen widgets that have created a dependency by calling\n`Localizations.of(context)` will be rebuilt after the resources\nfor the new locale have been loaded.\n\n\nThis following class is defined in terms of the\n[Dart `intl` package](https://github.com/dart-lang/intl). Using the `intl`\npackage isn't required.\n\n```dart\nclass MyLocalizations {\n MyLocalizations(this.locale);\n\n final Locale locale;\n\n static Future<MyLocalizations> load(Locale locale) {\n return initializeMessages(locale.toString())\n .then((void _) {\n return MyLocalizations(locale);\n });\n }\n\n static MyLocalizations of(BuildContext context) {\n return Localizations.of<MyLocalizations>(context, MyLocalizations);\n }\n\n String title() => Intl.message('<title>', name: 'title', locale: locale.toString());\n // ... more Intl.message() methods like title()\n}\n```\nA class based on the `intl` package imports a generated message catalog that provides\nthe `initializeMessages()` function and the per-locale backing store for `Intl.message()`.\nThe message catalog is produced by an `intl` tool that analyzes the source code for\nclasses that contain `Intl.message()` calls. In this case that would just be the\n`MyLocalizations` class.\n\nOne could choose another approach for loading localized resources and looking them up while\nstill conforming to the structure of this example.", "detail": "", "kind": 7, "label": "Localizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableScrollableSheet", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container for a [Scrollable] that responds to drag gestures by resizing\nthe scrollable until a limit is reached, and then scrolling.\n\nThis widget can be dragged along the vertical axis between its\n[minChildSize], which defaults to `0.25` and [maxChildSize], which defaults\nto `1.0`. These sizes are percentages of the height of the parent container.\n\nThe widget coordinates resizing and scrolling of the widget returned by\nbuilder as the user drags along the horizontal axis.\n\nThe widget will initially be displayed at its initialChildSize which\ndefaults to `0.5`, meaning half the height of its parent. Dragging will work\nbetween the range of minChildSize and maxChildSize (as percentages of the\nparent container's height) as long as the builder creates a widget which\nuses the provided [ScrollController]. If the widget created by the\n[ScrollableWidgetBuilder] does not use provided [ScrollController], the\nsheet will remain at the initialChildSize.\n\n\nThis is a sample widget which shows a [ListView] that has 25 [ListTile]s.\nIt starts out as taking up half the body of the [Scaffold], and can be\ndragged up to the full height of the scaffold or down to 25% of the height\nof the scaffold. Upon reaching full height, the list contents will be\nscrolled up or down, until they reach the top of the list again and the user\ndrags the sheet back down.\n\n```dart\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('DraggableScrollableSheet'),\n ),\n body: SizedBox.expand(\n child: DraggableScrollableSheet(\n builder: (BuildContext context, ScrollController scrollController) {\n return Container(\n color: Colors.blue[100],\n child: ListView.builder(\n controller: scrollController,\n itemCount: 25,\n itemBuilder: (BuildContext context, int index) {\n return ListTile(title: Text('Item $index'));\n },\n ),\n );\n },\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DraggableScrollableSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFadeBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [AnimatedCrossFade.layoutBuilder] callback.\n\nThe `topChild` is the child fading in, which is normally drawn on top. The\n`bottomChild` is the child fading out, normally drawn on the bottom.\n\nFor good performance, the returned widget tree should contain both the\n`topChild` and the `bottomChild`; the depth of the tree, and the types of\nthe widgets in the tree, from the returned widget to each of the children\nshould be the same; and where there is a widget with multiple children, the\ntop child and the bottom child should be keyed using the provided\n`topChildKey` and `bottomChildKey` keys respectively.\n\n\n```dart\nWidget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) {\n return Stack(\n fit: StackFit.loose,\n children: <Widget>[\n Positioned(\n key: bottomChildKey,\n left: 0.0,\n top: 0.0,\n right: 0.0,\n child: bottomChild,\n ),\n Positioned(\n key: topChildKey,\n child: topChild,\n )\n ],\n );\n}\n```", "detail": "(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) → Widget", "kind": 7, "label": "AnimatedCrossFadeBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDialogAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A button typically used in a [CupertinoAlertDialog].\n\nSee also:\n\n * [CupertinoAlertDialog], a dialog that informs the user about situations\n that require acknowledgement.", "detail": "", "kind": 7, "label": "CupertinoDialogAction" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ControlsWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that creates a widget given the two callbacks `onStepContinue` and\n`onStepCancel`.\n\nUsed by [Stepper.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].", "detail": "(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) → Widget", "kind": 7, "label": "ControlsWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin used by routes to handle back navigations internally by popping a list.\n\nWhen a [Navigator] is instructed to pop, the current route is given an\nopportunity to handle the pop internally. A `LocalHistoryRoute` handles the\npop internally if its list of local history entries is non-empty. Rather\nthan being removed as the current route, the most recent [LocalHistoryEntry]\nis removed from the list and its [LocalHistoryEntry.onRemove] is called.", "detail": "", "kind": 7, "label": "LocalHistoryRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An element that lazily builds children for a [SliverMultiBoxAdaptorWidget].\n\nImplements [RenderSliverBoxChildManager], which lets this element manage\nthe children of subclasses of [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flex", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a one-dimensional array.\n\nThe [Flex] widget allows you to control the axis along which the children are\nplaced (horizontal or vertical). This is referred to as the _main axis_. If\nyou know the main axis in advance, then consider using a [Row] (if it's\nhorizontal) or [Column] (if it's vertical) instead, because that will be less\nverbose.\n\nTo cause a child to expand to fill the available space in the [direction]\nof this widget's main axis, wrap the child in an [Expanded] widget.\n\nThe [Flex] widget does not scroll (and in general it is considered an error\nto have more children in a [Flex] than will fit in the available room). If\nyou have some widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nIf you only have one child, then rather than using [Flex], [Row], or\n[Column], consider using [Align] or [Center] to position the child.\n\n## Layout algorithm\n\n_This section describes how a [Flex] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Flex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded main axis constraints and the incoming\n cross axis constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight cross axis constraints\n that match the incoming max extent in the cross axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of main axis space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [Flex] is the maximum cross axis extent of\n the children (which will always satisfy the incoming constraints).\n5. The main axis extent of the [Flex] is determined by the [mainAxisSize]\n property. If the [mainAxisSize] property is [MainAxisSize.max], then the\n main axis extent of the [Flex] is the max extent of the incoming main\n axis constraints. If the [mainAxisSize] property is [MainAxisSize.min],\n then the main axis extent of the [Flex] is the sum of the main axis\n extents of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a version of this widget that is always horizontal.\n * [Column], for a version of this widget that is always vertical.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n that may be sized smaller (leaving some remaining room unused).\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flex" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExcludeSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops all the semantics of its descendants.\n\nWhen [excluding] is true, this widget (and its subtree) is excluded from\nthe semantics tree.\n\nThis can be used to hide descendant widgets that would otherwise be\nreported but that would only be confusing. For example, the\nmaterial library's [Chip] widget hides the avatar since it is\nredundant with the chip label.\n\nSee also:\n\n * [BlockSemantics] which drops semantics of widgets earlier in the tree.", "detail": "", "kind": 7, "label": "ExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollEndNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has stopped scrolling.\n\nSee also:\n\n * [ScrollStartNotification], which indicates that scrolling has started.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollEndNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoThumbPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints an iOS-style slider thumb.\n\nUsed by [CupertinoSwitch] and [CupertinoSlider].", "detail": "", "kind": 7, "label": "CupertinoThumbPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatefulWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatefulElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches Android.\n\nSee also:\n\n * [BouncingScrollSimulation], which implements iOS scroll physics.", "detail": "", "kind": 7, "label": "ClampingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragScrollActivity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The activity a scroll view performs when a the user drags their finger\nacross the screen.\n\nSee also:\n\n * [ScrollDragController], which listens to the [Drag] and actually scrolls\n the scroll view.", "detail": "", "kind": 7, "label": "DragScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsFlutterBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A concrete binding for applications based on the Widgets framework.\n\nThis is the glue that binds the framework to the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Route", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstraction for an entry managed by a [Navigator].\n\nThis class defines an abstract interface between the navigator and the\n\"routes\" that are pushed on and popped off the navigator. Most routes have\nvisual affordances, which they place in the navigators [Overlay] using one\nor more [OverlayEntry] objects.\n\nSee [Navigator] for more explanation of how to use a Route\nwith navigation, including code examples.\n\nSee [MaterialPageRoute] for a route that replaces the\nentire screen with a platform-adaptive transition.", "detail": "", "kind": 7, "label": "Route" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDragController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scrolls a scroll view as the user drags their finger across the screen.\n\nSee also:\n\n * [DragScrollActivity], which is the activity the scroll view performs\n while a drag is underway.", "detail": "", "kind": 7, "label": "ScrollDragController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedStack", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] that shows a single child from a list of children.\n\nThe displayed child is the one with the given [index]. The stack is\nalways as big as the largest child.\n\nIf value is null, then nothing is displayed.\n\nSee also:\n\n * [Stack], for more details about stacks.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Transform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a transformation before painting its child.\n\n\n\nThis example rotates and skews an orange box containing text, keeping the\ntop right corner pinned to its original position.\n\n```dart\nContainer(\n color: Colors.black,\n child: Transform(\n alignment: Alignment.topRight,\n transform: Matrix4.skewY(0.3)..rotateZ(-math.pi / 12.0),\n child: Container(\n padding: const EdgeInsets.all(8.0),\n color: const Color(0xFFE8581C),\n child: const Text('Apartment for rent!'),\n ),\n ),\n)\n```\n\nSee also:\n\n * [RotatedBox], which rotates the child widget during layout, not just\n during painting.\n * [FractionalTranslation], which applies a translation to the child\n that is relative to the child's size.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.", "detail": "", "kind": 7, "label": "Transform" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysScrollableScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that always lets the user scroll.\n\nOn Android, overscrolls will be clamped by default and result in an\noverscroll glow. On iOS, overscrolls will load a spring that will return\nthe scroll view to its normal range when released.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "AlwaysScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that prevent the scroll offset from reaching\nbeyond the bounds of the content.\n\nThis is the behavior typically seen on Android.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on Android.\n * [BouncingScrollPhysics], which is the analogous physics for iOS' bouncing\n behavior.\n * [GlowingOverscrollIndicator], which is used by [ScrollConfiguration] to\n provide the glowing effect that is usually found with this clamping effect\n on Android. When using a [MaterialApp], the [GlowingOverscrollIndicator]'s\n glow color is specified to use [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "ClampingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RichText", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A paragraph of rich text.\n\nThe [RichText] widget displays text that uses multiple different styles. The\ntext to display is described using a tree of [TextSpan] objects, each of\nwhich has an associated style that is used for that subtree. The text might\nbreak across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nText displayed in a [RichText] widget must be explicitly styled. When\npicking which style to use, consider using [DefaultTextStyle.of] the current\n[BuildContext] to provide defaults. For more details on how to style text in\na [RichText] widget, see the documentation for [TextStyle].\n\nConsider using the [Text] widget to integrate with the [DefaultTextStyle]\nautomatically. When all the text uses the same style, the default constructor\nis less verbose. The [Text.rich] constructor allows you to style multiple\nspans with the default text style while still allowing specified styles per\nspan.\n\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Hello ',\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),\n TextSpan(text: ' world!'),\n ],\n ),\n)\n```\n\nSee also:\n\n * [TextStyle], which discusses how to style text.\n * [TextSpan], which is used to describe the text in a paragraph.\n * [Text], which automatically applies the ambient styles described by a\n [DefaultTextStyle] to a single string.", "detail": "", "kind": 7, "label": "RichText" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScope", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a scope in which widgets can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nA focus scope does not itself receive focus but instead helps remember\nprevious focus states. A scope is currently active when its [node] is the\nfirst focus of its parent scope. To activate a [FocusScope], either use the\n[autofocus] property or explicitly make the [node] the first focus in the\nparent scope:\n\n```dart\nFocusScope.of(context).setFirstFocus(node);\n```\n\nIf a [FocusScope] is removed from the widget tree, then the previously\nfocused node will be focused, but only if the [node] is the same [node]\nobject as in the previous frame. To assure this, you can use a GlobalKey to\nkeep the [FocusScope] widget from being rebuilt from one frame to the next,\nor pass in the [node] from a parent that is not rebuilt. If there is no next\nsibling, then the parent scope node will be focused.\n\nSee also:\n\n * [FocusScopeNode], which is the associated node in the focus tree.\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.", "detail": "", "kind": 7, "label": "FocusScope" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Form", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An optional container for grouping together multiple form field widgets\n(e.g. [TextField] widgets).\n\nEach individual form field should be wrapped in a [FormField] widget, with\nthe [Form] widget as a common ancestor of all of those. Call methods on\n[FormState] to save, reset, or validate each [FormField] that is a\ndescendant of this [Form]. To obtain the [FormState], you may use [Form.of]\nwith a context whose ancestor is the [Form], or pass a [GlobalKey] to the\n[Form] constructor and call [GlobalKey.currentState].\n\nThis example shows a [Form] with one [TextFormField] and a [RaisedButton]. A\n[GlobalKey] is used here to identify the [Form] and validate input.\n\n```dart\nfinal _formKey = GlobalKey<FormState>();\n\n@override\nWidget build(BuildContext context) {\n return Form(\n key: _formKey,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n TextFormField(\n validator: (value) {\n if (value.isEmpty) {\n return 'Please enter some text';\n }\n },\n ),\n Padding(\n padding: const EdgeInsets.symmetric(vertical: 16.0),\n child: RaisedButton(\n onPressed: () {\n // Validate will return true if the form is valid, or false if\n // the form is invalid.\n if (_formKey.currentState.validate()) {\n // Process data.\n }\n },\n child: Text('Submit'),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [GlobalKey], a key that is unique across the entire app.\n * [FormField], a single form field widget that maintains the current state.\n * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].", "detail": "", "kind": 7, "label": "Form" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4Tween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Matrix4]s.\n\nThis class specializes the interpolation of [Tween<Matrix4>] to be\nappropriate for transformation matrices.\n\nCurrently this class works only for translations.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "Matrix4Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Table", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses the table layout algorithm for its children.\n\n\nIf you only have one row, the [Row] widget is more appropriate. If you only\nhave one column, the [SliverList] or [Column] widgets will be more\nappropriate.\n\nRows size vertically based on their contents. To control the column widths,\nuse the [columnWidths] property.\n\nFor more details about the table layout algorithm, see [RenderTable].\nTo control the alignment of children, see [TableCell].", "detail": "", "kind": 7, "label": "Table" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that does not require mutable state.\n\nA stateless widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\n\nStateless widget are useful when the part of the user interface you are\ndescribing does not depend on anything other than the configuration\ninformation in the object itself and the [BuildContext] in which the widget\nis inflated. For compositions that can change dynamically, e.g. due to\nhaving an internal clock-driven state, or depending on some system state,\nconsider using [StatefulWidget].\n\n## Performance considerations\n\nThe [build] method of a stateless widget is typically only called in three\nsituations: the first time the widget is inserted in the tree, when the\nwidget's parent changes its configuration, and when an [InheritedWidget] it\ndepends on changes.\n\nIf a widget's parent will regularly change the widget's configuration, or if\nit depends on inherited widgets that frequently change, then it is important\nto optimize the performance of the [build] method to maintain a fluid\nrendering performance.\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateless widget:\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. For example, instead of an elaborate arrangement\n of [Row]s, [Column]s, [Padding]s, and [SizedBox]es to position a single\n child in a particularly fancy manner, consider using just an [Align] or a\n [CustomSingleChildLayout]. Instead of an intricate layering of multiple\n [Container]s and with [Decoration]s to draw just the right graphical\n effect, consider a single [CustomPaint] widget.\n\n * Use `const` widgets where possible, and provide a `const` constructor for\n the widget so that users of the widget can also do so.\n\n * Consider refactoring the stateless widget into a stateful widget so that\n it can use some of the techniques described at [StatefulWidget], such as\n caching common parts of subtrees and using [GlobalKey]s when changing the\n tree structure.\n\n * If the widget is likely to get rebuilt frequently due to the use of\n [InheritedWidget]s, consider refactoring the stateless widget into\n multiple widgets, with the parts of the tree that change being pushed to\n the leaves. For example instead of building a tree with four widgets, the\n inner-most widget depending on the [Theme], consider factoring out the\n part of the build function that builds the inner-most widget into its own\n widget, so that only the inner-most widget needs to be rebuilt when the\n theme changes.\n\n\nThe following is a skeleton of a stateless widget subclass called `GreenFrog`.\n\nNormally, widgets have more constructor arguments, each of which corresponds\nto a `final` property.\n\n```dart\nclass GreenFrog extends StatelessWidget {\n const GreenFrog({ Key key }) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFF2DBD3A));\n }\n}\n```\n\n\nThis next example shows the more generic widget `Frog` which can be given\na color and a child:\n\n```dart\nclass Frog extends StatelessWidget {\n const Frog({\n Key key,\n this.color = const Color(0xFF2DBD3A),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n @override\n Widget build(BuildContext context) {\n return Container(color: color, child: child);\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatelessWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossFadeState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Specifies which of two children to show. See [AnimatedCrossFade].\n\nThe child that is shown will fade in, while the other will fade out.", "detail": "", "kind": 13, "label": "CrossFadeState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalObjectKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nIf the object is not private, then it is possible that collisions will occur\nwhere independent widgets will reuse the same object as their\n[GlobalObjectKey] value in a different part of the tree, leading to a global\nkey conflict. To avoid this problem, create a private [GlobalObjectKey]\nsubclass, as in:\n\n```dart\nclass _MyKey extends GlobalObjectKey {\n const _MyKey(Object value) : super(value);\n}\n```\n\nSince the [runtimeType] of the key is part of its identity, this will\nprevent clashes with other [GlobalObjectKey]s even if they have the same\nvalue.\n\nAny [GlobalObjectKey] created for the same value will match.", "detail": "", "kind": 7, "label": "GlobalObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the default color, opacity, and size of icons in a widget subtree.\n\nThe icon theme is honored by [Icon] and [ImageIcon] widgets.", "detail": "", "kind": 7, "label": "IconTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyedSubtree", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that builds its child.\n\nUseful for attaching a key to an existing widget.", "detail": "", "kind": 7, "label": "KeyedSubtree" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls callbacks in response to pointer events.\n\nRather than listening for raw pointer events, consider listening for\nhigher-level gestures using [GestureDetector].\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nIf it has a child, this widget defers to the child for sizing behavior. If\nit does not have a child, it grows to fit the parent instead.\n\nThis example makes a [Container] react to being entered by a mouse\npointer, showing a count of the number of entries and exits.\n\n```dart\nimport 'package:flutter/gestures.dart';\n```\n\n```dart\nint _enterCounter = 0;\nint _exitCounter = 0;\ndouble x = 0.0;\ndouble y = 0.0;\n\nvoid _incrementCounter(PointerEnterEvent details) {\n setState(() {\n _enterCounter++;\n });\n}\n\nvoid _decrementCounter(PointerExitEvent details) {\n setState(() {\n _exitCounter++;\n });\n}\n\nvoid _updateLocation(PointerHoverEvent details) {\n setState(() {\n x = details.position.dx;\n y = details.position.dy;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Center(\n child: ConstrainedBox(\n constraints: new BoxConstraints.tight(Size(300.0, 200.0)),\n child: Listener(\n onPointerEnter: _incrementCounter,\n onPointerHover: _updateLocation,\n onPointerExit: _decrementCounter,\n child: Container(\n color: Colors.lightBlueAccent,\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pointed at this box this many times:'),\n Text(\n '$_enterCounter Entries\\n$_exitCounter Exits',\n style: Theme.of(context).textTheme.display1,\n ),\n Text(\n 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [MouseTracker] an object that tracks mouse locations in the [GestureBinding].", "detail": "", "kind": 7, "label": "Listener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView].\n\n[ListWheelScrollView] lazily constructs its children during layout to avoid\ncreating more children than are visible through the [Viewport]. This\ndelegate is responsible for providing children to [ListWheelScrollView]\nduring that stage.\n\nSee also:\n\n * [ListWheelChildListDelegate], a delegate that supplies children using an\n explicit list.\n * [ListWheelChildLoopingListDelegate], a delegate that supplies infinite\n children by looping an explicit list.\n * [ListWheelChildBuilderDelegate], a delegate that supplies children using\n a builder callback.", "detail": "", "kind": 7, "label": "ListWheelChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopScope", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Registers a callback to veto attempts by the user to dismiss the enclosing\n[ModalRoute].\n\nSee also:\n\n * [ModalRoute.addScopedWillPopCallback] and [ModalRoute.removeScopedWillPopCallback],\n which this widget uses to register and unregister [onWillPop].", "detail": "", "kind": 7, "label": "WillPopScope" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetWillAccept", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for determining whether the given data will be accepted by a [DragTarget].\n\nUsed by [DragTarget.onWillAccept].", "detail": "(T data) → bool", "kind": 7, "label": "DragTargetWillAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableTextState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [EditableText].", "detail": "", "kind": 7, "label": "EditableTextState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list of widgets arranged linearly.\n\n[ListView] is the most commonly used scrolling widget. It displays its\nchildren one after another in the scroll direction. In the cross axis, the\nchildren are required to fill the [ListView].\n\nIf non-null, the [itemExtent] forces the children to have the given extent\nin the scroll direction. Specifying an [itemExtent] is more efficient than\nletting the children determine their own extent because the scrolling\nmachinery can make use of the foreknowledge of the children's extent to save\nwork, for example when the scroll position changes drastically.\n\nThere are four options for constructing a [ListView]:\n\n 1. The default constructor takes an explicit [List<Widget>] of children. This\n constructor is appropriate for list views with a small number of\n children because constructing the [List] requires doing work for every\n child that could possibly be displayed in the list view instead of just\n those children that are actually visible.\n\n 2. The [ListView.builder] constructor takes an [IndexedWidgetBuilder], which\n builds the children on demand. This constructor is appropriate for list views\n with a large (or infinite) number of children because the builder is called\n only for those children that are actually visible.\n\n 3. The [ListView.separated] constructor takes two [IndexedWidgetBuilder]s:\n `itemBuilder` builds child items on demand, and `separatorBuilder`\n similarly builds separator children which appear in between the child items.\n This constructor is appropriate for list views with a fixed number of children.\n\n 4. The [ListView.custom] constructor takes a [SliverChildDelegate], which provides\n the ability to customize additional aspects of the child model. For example,\n a [SliverChildDelegate] can control the algorithm used to estimate the\n size of children that are not actually visible.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nThis example uses the default constructor for [ListView] which takes an\nexplicit [List<Widget>] of children. This [ListView]'s children are made up\nof [Container]s with [Text].\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view.png)\n\n```dart\nListView(\n padding: const EdgeInsets.all(8.0),\n children: <Widget>[\n Container(\n height: 50,\n color: Colors.amber[600],\n child: const Center(child: Text('Entry A')),\n ),\n Container(\n height: 50,\n color: Colors.amber[500],\n child: const Center(child: Text('Entry B')),\n ),\n Container(\n height: 50,\n color: Colors.amber[100],\n child: const Center(child: Text('Entry C')),\n ),\n ],\n)\n```\n\nThis example mirrors the previous one, creating the same list using the\n[ListView.builder] constructor. Using the [IndexedWidgetBuilder], children\nare built lazily and can be infinite in number.\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_builder.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.builder(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n }\n);\n```\n\nThis example continues to build from our the previous ones, creating a\nsimilar list using [ListView.separated]. Here, a [Divider] is used as a\nseparator.\n\n![A ListView of 3 amber colored containers with sample text and a Divider\nbetween each of them.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_separated.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.separated(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n },\n separatorBuilder: (BuildContext context, int index) => const Divider(),\n);\n```\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as when using\nthe default constructor) or lazily provided ones (such as when using the\n[ListView.builder] constructor).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree,\nstates and render objects are destroyed. A new child at the same position\nin the list will be lazily recreated along with new elements, states and\nrender objects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the list child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the list child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child\n widget subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the list child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the list keeps the child's render\n object (and by extension, its associated elements and states) in a cache\n list instead of destroying them. When scrolled back into view, the render\n object is repainted as-is (if it wasn't marked dirty in the interim).\n\n This only works if [addAutomaticKeepAlives] and [addRepaintBoundaries]\n are false since those parameters cause the [ListView] to wrap each child\n widget subtree with other widgets.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default when\n [addAutomaticKeepAlives] is true). Instead of unconditionally caching the\n child element subtree when scrolling off-screen like [KeepAlive],\n [AutomaticKeepAlive] can let whether to cache the subtree be determined\n by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its list child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the list child element subtree will be destroyed\n when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive\n by using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\n## Transitioning to [CustomScrollView]\n\nA [ListView] is basically a [CustomScrollView] with a single [SliverList] in\nits [CustomScrollView.slivers] property.\n\nIf [ListView] is no longer sufficient, for example because the scroll view\nis to have both a list and a grid, or because the list is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[ListView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [ListView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing either a\n[SliverList] or a [SliverFixedExtentList]; the former if [itemExtent] on the\n[ListView] was null, and the latter if [itemExtent] was not null.\n\nThe [childrenDelegate] property on [ListView] corresponds to the\n[SliverList.delegate] (or [SliverFixedExtentList.delegate]) property. The\n[new ListView] constructor's `children` argument corresponds to the\n[childrenDelegate] being a [SliverChildListDelegate] with that same\nargument. The [new ListView.builder] constructor's `itemBuilder` and\n`childCount` arguments correspond to the [childrenDelegate] being a\n[SliverChildBuilderDelegate] with the matching arguments.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the list itself, and having\nthe [SliverList] instead be a child of the [SliverPadding].\n\n[CustomScrollView]s don't automatically avoid obstructions from [MediaQuery]\nlike [ListView]s do. To reproduce the behavior, wrap the slivers in\n[SliverSafeArea]s.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [ListView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nListView(\n shrinkWrap: true,\n padding: const EdgeInsets.all(20.0),\n children: <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n shrinkWrap: true,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverList(\n delegate: SliverChildListDelegate(\n <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n ),\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is scrollable, 2D array of widgets.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [ListBody], which arranges its children in a similar manner, but without\n scrolling.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ListView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable, 2D array of widgets.\n\nThe main axis direction of a grid is the direction in which it scrolls (the\n[scrollDirection]).\n\nThe most commonly used grid layouts are [GridView.count], which creates a\nlayout with a fixed number of tiles in the cross axis, and\n[GridView.extent], which creates a layout with tiles that have a maximum\ncross-axis extent. A custom [SliverGridDelegate] can produce an arbitrary 2D\narrangement of children, including arrangements that are unaligned or\noverlapping.\n\nTo create a grid with a large (or infinite) number of children, use the\n[GridView.builder] constructor with either a\n[SliverGridDelegateWithFixedCrossAxisCount] or a\n[SliverGridDelegateWithMaxCrossAxisExtent] for the [gridDelegate].\n\nTo use a custom [SliverChildDelegate], use [GridView.custom].\n\nTo create a linear array of children, use a [ListView].\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n## Transitioning to [CustomScrollView]\n\nA [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in\nits [CustomScrollView.slivers] property.\n\nIf [GridView] is no longer sufficient, for example because the scroll view\nis to have both a grid and a list, or because the grid is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[GridView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [GridView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing just a\n[SliverGrid].\n\nThe [childrenDelegate] property on [GridView] corresponds to the\n[SliverGrid.delegate] property, and the [gridDelegate] property on the\n[GridView] corresponds to the [SliverGrid.gridDelegate] property.\n\nThe [new GridView], [new GridView.count], and [new GridView.extent]\nconstructors' `children` arguments correspond to the [childrenDelegate]\nbeing a [SliverChildListDelegate] with that same argument. The [new\nGridView.builder] constructor's `itemBuilder` and `childCount` arguments\ncorrespond to the [childrenDelegate] being a [SliverChildBuilderDelegate]\nwith the matching arguments.\n\nThe [new GridView.count] and [new GridView.extent] constructors create\ncustom grid delegates, and have equivalently named constructors on\n[SliverGrid] to ease the transition: [new SliverGrid.count] and [new\nSliverGrid.extent] respectively.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the grid itself, and having\nthe [SliverGrid] instead be a child of the [SliverPadding].\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [GridView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nGridView.count(\n primary: false,\n padding: const EdgeInsets.all(20.0),\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n primary: false,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverGrid.count(\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ListView], which is scrollable, linear list of widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "GridView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Opacity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.\n\n\n\nThis example shows some [Text] when the `_visible` member field is true, and\nhides it when it is false:\n\n```dart\nOpacity(\n opacity: _visible ? 1.0 : 0.0,\n child: const Text('Now you see me, now you don\\'t!'),\n)\n```\n\nThis is more efficient than adding and removing the child widget from the\ntree on demand.\n\n## Performance considerations for opacity animation\n\nAnimating an [Opacity] widget directly causes the widget (and possibly its\nsubtree) to rebuild each frame, which is not very efficient. Consider using\nan [AnimatedOpacity] instead.\n\n## Transparent image\n\nIf only a single [Image] or [Color] needs to be composited with an opacity\nbetween 0.0 and 1.0, it's much faster to directly use them without [Opacity]\nwidgets.\n\nFor example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much\nfaster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`.\n\n\nThe following example draws an [Image] with 0.5 opacity without using\n[Opacity]:\n\n```dart\nImage.network(\n 'https://raw.githubusercontent.com/flutter/assets-for-api-docs/master/packages/diagrams/assets/blend_mode_destination.jpeg',\n color: Color.fromRGBO(255, 255, 255, 0.5),\n colorBlendMode: BlendMode.modulate\n)\n```\n\n\nDirectly drawing an [Image] or [Color] with opacity is faster than using\n[Opacity] on top of them because [Opacity] could apply the opacity to a\ngroup of widgets and therefore a costly offscreen buffer will be used.\nDrawing content into the offscreen buffer may also trigger render target\nswitches and such switching is particularly slow in older GPUs.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly, because it is either visible or hidden, rather than allowing\n fractional opacity values).\n * [ShaderMask], which can apply more elaborate effects to its child.\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [AnimatedOpacity], which uses an animation internally to efficiently\n animate opacity.\n * [FadeTransition], which uses a provided animation to efficiently animate\n opacity.\n * [Image], which can directly provide a partially transparent image with\n much less performance hit.", "detail": "", "kind": 7, "label": "Opacity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollHoldController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for holding a [Scrollable] stationary.\n\nAn object that implements this interface is returned by\n[ScrollPosition.hold]. It holds the scrollable stationary until an activity\nis started or the [cancel] method is called.", "detail": "", "kind": 7, "label": "ScrollHoldController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleResolutionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeResolutionCallback].\n\nIt is recommended to provide a [LocaleListResolutionCallback] instead of a\n[LocaleResolutionCallback] when possible, as [LocaleResolutionCallback] only\nreceives a subset of the information provided in [LocaleListResolutionCallback].\n\nA [LocaleResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the default\nlocale for the device after [LocaleListResolutionCallback] fails or is not provided.\n\nThis callback is also used if the app is created with a specific locale using\nthe [new WidgetsApp] `locale` parameter.\n\nThe [locale] is either the value of [WidgetsApp.locale], or the device's default\nlocale when the app started, or the device locale the user selected after the app\nwas started. The default locale is the first locale in the list of preferred\nlocales. If [locale] is null, then Flutter has not yet received the locale\ninformation from the platform. The [supportedLocales] parameter is just the value of\n[WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleListResolutionCallback], which takes a list of preferred locales (instead of one locale).\n Resolutions by [LocaleListResolutionCallback] take precedence over [LocaleResolutionCallback].", "detail": "(Locale locale, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirectionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to indicate that it has been dismissed in\nthe given `direction`.\n\nUsed by [Dismissible.onDismissed].", "detail": "(DismissDirection direction) → void", "kind": 7, "label": "DismissDirectionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract widget for building widgets that gradually change their\nvalues over a period of time.\n\nSubclasses' States must provide a way to visit the subclass's relevant\nfields to animate. [ImplicitlyAnimatedWidget] will then automatically\ninterpolate and animate those fields using the provided duration and\ncurve when those fields change.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that blocks interaction with previous routes.\n\n[ModalRoute]s cover the entire [Navigator]. They are not necessarily\n[opaque], however; for example, a pop-up menu uses a [ModalRoute] but only\nshows the menu in a small box overlapping the previous route.\n\nThe `T` type argument is the return value of the route. If there is no\nreturn value, consider using `void` as the return value.", "detail": "", "kind": 7, "label": "ModalRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BorderRadius]s.\n\nThis class specializes the interpolation of [Tween<BorderRadius>] to use\n[BorderRadius.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderRadiusTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTextThemeData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Cupertino typography theme in a [CupertinoThemeData].", "detail": "", "kind": 7, "label": "CupertinoTextThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that efficiently propagate information down the tree.\n\nTo obtain the nearest instance of a particular type of inherited widget from\na build context, use [BuildContext.inheritFromWidgetOfExactType].\n\nInherited widgets, when referenced in this way, will cause the consumer to\nrebuild when the inherited widget itself changes state.\n\n\n\nThe following is a skeleton of an inherited widget called `FrogColor`:\n\n```dart\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor) as FrogColor;\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n```\n\nThe convention is to provide a static method `of` on the [InheritedWidget]\nwhich does the call to [BuildContext.inheritFromWidgetOfExactType]. This\nallows the class to define its own fallback logic in case there isn't\na widget in scope. In the example above, the value returned will be\nnull in that case, but it could also have defaulted to a value.\n\nSometimes, the `of` method returns the data rather than the inherited\nwidget; for example, in this case it could have returned a [Color] instead\nof the `FrogColor` widget.\n\nOccasionally, the inherited widget is an implementation detail of another\nclass, and is therefore private. The `of` method in that case is typically\nput on the public class instead. For example, [Theme] is implemented as a\n[StatelessWidget] that builds a private inherited widget; [Theme.of] looks\nfor that inherited widget using [BuildContext.inheritFromWidgetOfExactType]\nand then returns the [ThemeData].\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressDraggable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child draggable starting from long press.", "detail": "", "kind": 7, "label": "LongPressDraggable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A graphical icon widget drawn with a glyph from a font described in\nan [IconData] such as material's predefined [IconData]s in [Icons].\n\nIcons are not interactive. For an interactive icon, consider material's\n[IconButton].\n\nThere must be an ambient [Directionality] widget when using [Icon].\nTypically this is introduced automatically by the [WidgetsApp] or\n[MaterialApp].\n\nThis widget assumes that the rendered icon is squared. Non-squared icons may\nrender incorrectly.\n\n\nThis example shows how to use [Icon] to create an addition icon, in the\ncolor pink, and 30 x 30 pixels in size.\n\n```dart\nIcon(\n Icons.add,\n color: Colors.pink,\n size: 30.0,\n)\n```\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [Icons], for the list of available icons for use with this class.\n * [IconTheme], which provides ambient configuration for icons.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "Icon" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidgetBaseState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations that need to rebuild their\nwidget tree as the animation runs.\n\nThis class calls [build] each frame that the animation tickets. For a\nvariant that does not rebuild each frame, consider subclassing\n[ImplicitlyAnimatedWidgetState] directly.\n\nSubclasses must implement the [forEachTween] method to allow\n[AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields\nand animate them.", "detail": "", "kind": 7, "label": "AnimatedWidgetBaseState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePopDisposition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates whether the current route should be popped.\n\nUsed as the return value for [Route.willPop].\n\nSee also:\n\n * [WillPopScope], a widget that hooks into the route's [Route.willPop]\n mechanism.", "detail": "", "kind": 13, "label": "RoutePopDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling container that animates items when they are inserted or removed.\n\nThis widget's [AnimatedListState] can be used to dynamically insert or remove\nitems. To refer to the [AnimatedListState] either provide a [GlobalKey] or\nuse the static [of] method from an item's input callback.\n\nThis widget is similar to one created by [ListView.builder].", "detail": "", "kind": 7, "label": "AnimatedList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDatePicker", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A date picker widget in iOS style.\n\nThere are several modes of the date picker listed in [CupertinoDatePickerMode].\n\nThe class will display its children as consecutive columns. Its children\norder is based on internationalization.\n\nExample of the picker in date mode:\n\n * US-English: [July | 13 | 2012]\n * Vietnamese: [13 | Tháng 7 | 2012]\n\nSee also:\n\n * [CupertinoTimerPicker], the class that implements the iOS-style timer picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 7, "label": "CupertinoDatePicker" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraintsTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BoxConstraints].\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[BoxConstraints.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BoxConstraintsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsApp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience class that wraps a number of widgets that are commonly\nrequired for an application.\n\nOne of the primary roles that [WidgetsApp] provides is binding the system\nback button to popping the [Navigator] or quitting the application.\n\nSee also: [CheckedModeBanner], [DefaultTextStyle], [MediaQuery],\n[Localizations], [Title], [Navigator], [Overlay], [SemanticsDebugger] (the\nwidgets wrapped by this one).", "detail": "", "kind": 7, "label": "WidgetsApp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for scroll views whose items have the same size.\n\nSimilar to a standard [ScrollController] but with the added convenience\nmechanisms to read and go to item indices rather than a raw pixel scroll\noffset.\n\nSee also:\n\n * [ListWheelScrollView], a scrollable view widget with fixed size items\n that this widget controls.\n * [FixedExtentMetrics], the `metrics` property exposed by\n [ScrollNotification] from [ListWheelScrollView] which can be used\n to listen to the current item index on a push basis rather than polling\n the [FixedExtentScrollController].", "detail": "", "kind": 7, "label": "FixedExtentScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays an image.\n\nSeveral constructors are provided for the various ways that an image can be\nspecified:\n\n * [new Image], for obtaining an image from an [ImageProvider].\n * [new Image.asset], for obtaining an image from an [AssetBundle]\n using a key.\n * [new Image.network], for obtaining an image from a URL.\n * [new Image.file], for obtaining an image from a [File].\n * [new Image.memory], for obtaining an image from a [Uint8List].\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\nTo automatically perform pixel-density-aware asset resolution, specify the\nimage using an [AssetImage] and make sure that a [MaterialApp], [WidgetsApp],\nor [MediaQuery] widget exists above the [Image] widget in the widget tree.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nSee also:\n\n * [Icon], which shows an image from a font.\n * [new Ink.image], which is the preferred way to show an image in a\n material application (especially if the image is in a [Material] and will\n have an [InkWell] on top of it).\n * [Image](https://api.flutter.dev/flutter/dart-ui/Image-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorber", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[SliverOverlapInjector].\n\nSee also:\n\n * [NestedScrollView], whose documentation has sample code showing how to\n use this widget.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPadding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that applies padding on each side of another sliver.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverPadding]\nis a basic sliver that insets another sliver by applying padding on each\nside.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a [SliverPersistentHeader] with\n`pinned:true` will cause the app bar to overlap earlier slivers (contrary to\nthe normal behavior of pinned app bars), and while the app bar is pinned,\nthe padding will scroll away.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.", "detail": "", "kind": 7, "label": "SliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObstructingPreferredSizeWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that has a preferred size and reports whether it fully obstructs\nwidgets behind it.\n\nUsed by [CupertinoPageScaffold] to either shift away fully obstructed content\nor provide a padding guide to partially obstructed content.", "detail": "", "kind": 7, "label": "ObstructingPreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that builds a widget given a child.\n\nThe child should typically be part of the returned widget tree.\n\nUsed by [AnimatedBuilder.builder], as well as [WidgetsApp.builder] and\n[MaterialApp.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context, Widget child) → Widget", "kind": 7, "label": "TransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Viewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside.\n\n[Viewport] is the visual workhorse of the scrolling machinery. It displays a\nsubset of its children according to its own dimensions and the given\n[offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[Viewport] hosts a bidirectional list of slivers, anchored on a [center]\nsliver, which is placed at the zero scroll offset. The center widget is\ndisplayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[Viewport] cannot contain box children directly. Instead, use a\n[SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [Viewport] into widgets that are easier to use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [ShrinkWrappingViewport], a variant of [Viewport] that shrink-wraps its\n contents along the main axis.", "detail": "", "kind": 7, "label": "Viewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a shape.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\nFor shapes that cannot be expressed as a rectangle with rounded corners use\n[PhysicalShape].\n\nSee also:\n\n * [DecoratedBox], which can apply more arbitrary shadow effects.\n * [ClipRect], which applies a clip to its child.", "detail": "", "kind": 7, "label": "PhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Baseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its child according to the child's baseline.\n\nThis widget shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child. If [baseline] is less than the distance from\nthe top of the child to the baseline of the child, then the child\nis top-aligned instead.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [Center], a widget that centers its child within itself.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Baseline" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of an icon fulfilled by a font glyph.\n\nSee [Icons] for a number of predefined icons available for material\ndesign applications.", "detail": "", "kind": 7, "label": "IconData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollSimulation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches iOS.\n\nSee also:\n\n * [ClampingScrollSimulation], which implements Android scroll physics.", "detail": "", "kind": 7, "label": "BouncingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillRemaining", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[SliverFillRemaining] sizes its child to fill the viewport in the cross axis\nand to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableCanceledCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] is dropped without being accepted by a [DragTarget].\n\nUsed by [Draggable.onDraggableCanceled].", "detail": "(Velocity velocity, Offset offset) → void", "kind": 7, "label": "DraggableCanceledCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShrinkWrappingViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside and shrink wraps its children in the\nmain axis.\n\n[ShrinkWrappingViewport] displays a subset of its children according to its\nown dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[ShrinkWrappingViewport] differs from [Viewport] in that [Viewport] expands\nto fill the main axis whereas [ShrinkWrappingViewport] sizes itself to match\nits children in the main axis. This shrink wrapping behavior is expensive\nbecause the children, and hence the viewport, could potentially change size\nwhenever the [offset] changes (e.g., because of a collapsing header).\n\n[ShrinkWrappingViewport] cannot contain box children directly. Instead, use\na [SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [ShrinkWrappingViewport] into widgets that are easier to\n use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [Viewport], a viewport that does not shrink-wrap its contents.", "detail": "", "kind": 7, "label": "ShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrackingScrollController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollController] whose [initialScrollOffset] tracks its most recently\nupdated [ScrollPosition].\n\nThis class can be used to synchronize the scroll offset of two or more\nlazily created scroll views that share a single [TrackingScrollController].\nIt tracks the most recently updated scroll position and reports it as its\n`initialScrollOffset`.\n\n\nIn this example each [PageView] page contains a [ListView] and all three\n[ListView]'s share a [TrackingScrollController]. The scroll offsets of all\nthree list views will track each other, to the extent that's possible given\nthe different list lengths.\n\n```dart\nPageView(\n children: <Widget>[\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),\n ),\n ],\n)\n```\n\nIn this example the `_trackingController` would have been created by the\nstateful widget that built the widget tree.", "detail": "", "kind": 7, "label": "TrackingScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for stateful widgets that have exactly one inflated instance in\nthe tree.\n\nSuch widgets must be given a [GlobalKey]. This key can be generated by the\nsubclass from its [Type] object, e.g. by calling `super(key: new\nGlobalObjectKey(MyWidget))` where `MyWidget` is the name of the subclass.\n\nSince only one instance can be inflated at a time, there is only ever one\ncorresponding [State] object. That object is exposed, for convenience, via\nthe [currentState] property.\n\nWhen subclassing [UniqueWidget], provide the corresponding [State] subclass\nas the type argument.", "detail": "", "kind": 7, "label": "UniqueWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\nScrollable widgets consist of three pieces:\n\n 1. A [Scrollable] widget, which listens for various user gestures and\n implements the interaction design for scrolling.\n 2. A viewport widget, such as [Viewport] or [ShrinkWrappingViewport], which\n implements the visual design for scrolling by displaying only a portion\n of the widgets inside the scroll view.\n 3. One or more slivers, which are widgets that can be composed to created\n various scrolling effects, such as lists, grids, and expanding headers.\n\n[ScrollView] helps orchestrate these pieces by creating the [Scrollable] and\nthe viewport and deferring to its subclass to create the slivers.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedModalBarrier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself,\nand can be configured with an animated color value.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nThis widget is similar to [ModalBarrier] except that it takes an animated\n[color] instead of a single color.\n\nSee also:\n\n * [ModalRoute], which uses this widget.", "detail": "", "kind": 7, "label": "AnimatedModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPaint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [CustomPaint] first asks its [painter] to paint on the\ncurrent canvas, then it paints its child, and then, after painting its\nchild, it asks its [foregroundPainter] to paint. The coordinate system of the\ncanvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing [CustomPainter].\n\n\nBecause custom paint calls its painters during paint, you cannot call\n`setState` or `markNeedsLayout` during the callback (the layout for this\nframe has already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [size], which defaults to\n[Size.zero]. [size] must not be null.\n\n[isComplex] and [willChange] are hints to the compositor's raster cache\nand must not be null.\n\n\nThis example shows how the sample custom painter shown at [CustomPainter]\ncould be used in a [CustomPaint] widget to display a background to some\ntext.\n\n```dart\nCustomPaint(\n painter: Sky(),\n child: Center(\n child: Text(\n 'Once upon a time...',\n style: const TextStyle(\n fontSize: 40.0,\n fontWeight: FontWeight.w900,\n color: Color(0xFFFFFFFF),\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomPainter], the class to extend when creating custom painters.\n * [Canvas], the class that a custom painter uses to paint.", "detail": "", "kind": 7, "label": "CustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicHeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Element that supports building children lazily for [ListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotatedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rotates its child by a integral number of quarter turns.\n\nUnlike [Transform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.\n\n\nThis snippet rotates the child (some [Text]) so that it renders from bottom\nto top, like an axis label on a graph:\n\n```dart\nRotatedBox(\n quarterTurns: 3,\n child: const Text('Hello World!'),\n)\n```\n\nSee also:\n\n * [Transform], which is a paint effect that allows you to apply an\n arbitrary transform to a child.\n * [new Transform.rotate], which applies a rotation paint effect.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "RotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapInjector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [RenderSliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [RenderViewport] (probably a [RenderNestedScrollViewViewport]), so\nthat it will always be laid out before the [RenderSliverOverlapInjector]\nduring a particular frame.", "detail": "", "kind": 7, "label": "RenderSliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteFactory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a route for the given route settings.\n\nUsed by [Navigator.onGenerateRoute] and [Navigator.onUnknownRoute].", "detail": "(RouteSettings settings) → Route<dynamic>", "kind": 7, "label": "RouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPath", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a path.\n\nCalls a callback on a delegate whenever the widget is to be\npainted. The callback returns a path and the widget prevents the\nchild from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized widgets:\n\n * To clip to a rectangle, consider [ClipRect].\n * To clip to an oval or circle, consider [ClipOval].\n * To clip to a rounded rectangle, consider [ClipRRect].\n\nTo clip to a particular [ShapeBorder], consider using either the\n[ClipPath.shape] static method or the [ShapeBorderClipper] custom clipper\nclass.", "detail": "", "kind": 7, "label": "ClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayVisibilityMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Visibility of text field overlays based on the state of the current text entry.\n\nUsed to toggle the visibility behavior of the optional decorating widgets\nsurrounding the [EditableText] such as the clear text button.", "detail": "", "kind": 13, "label": "OverlayVisibilityMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormField", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single form field.\n\nThis widget maintains the current state of the form field, so that updates\nand validation errors are visually reflected in the UI.\n\nWhen used inside a [Form], you can use methods on [FormState] to query or\nmanipulate the form data as a whole. For example, calling [FormState.save]\nwill invoke each [FormField]'s [onSaved] callback in turn.\n\nUse a [GlobalKey] with [FormField] if you want to retrieve its current\nstate, for example if you want one form field to depend on another.\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nSee also:\n\n * [Form], which is the widget that aggregates the form fields.\n * [TextField], which is a commonly used form field for entering text.", "detail": "", "kind": 7, "label": "FormField" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the widgets layer and the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidgetState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations.\n\n[ImplicitlyAnimatedWidgetState] requires that subclasses respond to the\nanimation, themselves. If you would like `setState()` to be called\nautomatically as the animation changes, use [AnimatedWidgetBaseState].\n\nSubclasses must implement the [forEachTween] method to allow\n[ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's\nfields and animate them.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidgetState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteTransitionsBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's transitions.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildTransitions] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) → Widget", "kind": 7, "label": "RouteTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusManager", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the focus tree.\n\nThe focus tree keeps track of which [FocusNode] is the user's current\nkeyboard focus. The widget that owns the [FocusNode] often listens for\nkeyboard events.\n\nThe focus manager is responsible for holding the [FocusScopeNode] that is\nthe root of the focus tree and tracking which [FocusNode] has the overall\nfocus.\n\nThe [FocusManager] is held by the [WidgetsBinding] as\n[WidgetsBinding.focusManager]. The [FocusManager] is rarely accessed\ndirectly. Instead, to find the [FocusScopeNode] for a given [BuildContext],\nuse [FocusScope.of].\n\nThe [FocusManager] knows nothing about [FocusNode]s other than the one that\nis currently focused. If a [FocusScopeNode] is removed, then the\n[FocusManager] will attempt to focus the next [FocusScopeNode] in the focus\ntree that it maintains, but if the current focus in that [FocusScopeNode] is\nnull, it will stop there, and no [FocusNode] will have focus.\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusManager" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for [PageView].\n\nA page controller lets you manipulate which page is visible in a [PageView].\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nSee also:\n\n * [PageView], which is the widget this object controls.", "detail": "", "kind": 7, "label": "PageController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables or disables tickers (and thus animation controllers) in the widget\nsubtree.\n\nThis only works if [AnimationController] objects are created using\nwidget-aware ticker providers. For example, using a\n[TickerProviderStateMixin] or a [SingleTickerProviderStateMixin].", "detail": "", "kind": 7, "label": "TickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is unique across the entire app.\n\nGlobal keys uniquely identify elements. Global keys provide access to other\nobjects that are associated with elements, such as the a [BuildContext] and,\nfor [StatefulWidget]s, a [State].\n\nWidgets that have global keys reparent their subtrees when they are moved\nfrom one location in the tree to another location in the tree. In order to\nreparent its subtree, a widget must arrive at its new location in the tree\nin the same animation frame in which it was removed from its old location in\nthe tree.\n\nGlobal keys are relatively expensive. If you don't need any of the features\nlisted above, consider using a [Key], [ValueKey], [ObjectKey], or\n[UniqueKey] instead.\n\nYou cannot simultaneously include two widgets in the tree with the same\nglobal key. Attempting to do so will assert at runtime.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "GlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDatePickerMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different display modes of [CupertinoDatePicker].\n\nSee also:\n\n * [CupertinoDatePicker], the class that implements different display modes\n of the iOS-style date picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 13, "label": "CupertinoDatePickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Column", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a vertical array.\n\nTo cause a child to expand to fill the available vertical space, wrap the\nchild in an [Expanded] widget.\n\nThe [Column] widget does not scroll (and in general it is considered an error\nto have more children in a [Column] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a horizontal variant, see [Row].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example uses a [Column] to arrange three widgets vertically, the last\nbeing made to fill all the remaining space.\n\n```dart\nColumn(\n children: <Widget>[\n Text('Deliver features faster'),\n Text('Craft beautiful UIs'),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\nIn the sample above, the text and the logo are centered on each line. In the\nfollowing example, the [crossAxisAlignment] is set to\n[CrossAxisAlignment.start], so that the children are left-aligned. The\n[mainAxisSize] is set to [MainAxisSize.min], so that the column shrinks to\nfit the children.\n\n```dart\nColumn(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n Text('We move under cover and we move as one'),\n Text('Through the night, we have one shot to live another day'),\n Text('We cannot let a stray gunshot give us away'),\n Text('We will fight up close, seize the moment and stay in it'),\n Text('It’s either that or meet the business end of a bayonet'),\n Text('The code word is ‘Rochambeau,’ dig me?'),\n Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),\n ],\n)\n```\n\n## Troubleshooting\n\n### When the incoming vertical constraints are unbounded\n\nWhen a [Column] has one or more [Expanded] or [Flexible] children, and is\nplaced in another [Column], or in a [ListView], or in some other context\nthat does not provide a maximum height constraint for the [Column], you will\nget an exception at runtime saying that there are children with non-zero\nflex but the vertical constraints are unbounded.\n\nThe problem, as described in the details that accompany that exception, is\nthat using [Flexible] or [Expanded] means that the remaining space after\nlaying out all the other children must be shared equally, but if the\nincoming vertical constraints are unbounded, there is infinite remaining\nspace.\n\nThe key to solving this problem is usually to determine why the [Column] is\nreceiving unbounded vertical constraints.\n\nOne common reason for this to happen is that the [Column] has been placed in\nanother [Column] (without using [Expanded] or [Flexible] around the inner\nnested [Column]). When a [Column] lays out its non-flex children (those that\nhave neither [Expanded] or [Flexible] around them), it gives them unbounded\nconstraints so that they can determine their own dimensions (passing\nunbounded constraints usually signals to the child that it should\nshrink-wrap its contents). The solution in this case is typically to just\nwrap the inner column in an [Expanded] to indicate that it should take the\nremaining space of the outer column, rather than being allowed to take any\namount of room it desires.\n\nAnother reason for this message to be displayed is nesting a [Column] inside\na [ListView] or other vertical scrollable. In that scenario, there really is\ninfinite vertical space (the whole point of a vertical scrolling list is to\nallow infinite space vertically). In such scenarios, it is usually worth\nexamining why the inner [Column] should have an [Expanded] or [Flexible]\nchild: what size should the inner children really be? The solution in this\ncase is typically to remove the [Expanded] or [Flexible] widgets from around\nthe inner children.\n\nFor more discussion about constraints, see [BoxConstraints].\n\n### The yellow and black striped banner\n\nWhen the contents of a [Column] exceed the amount of space available, the\n[Column] overflows, and the contents are clipped. In debug mode, a yellow\nand black striped bar is rendered at the overflowing edge to indicate the\nproblem, and a message is printed below the [Column] saying how much\noverflow was detected.\n\nThe usual solution is to use a [ListView] rather than a [Column], to enable\nthe contents to scroll when vertical space is limited.\n\n## Layout algorithm\n\n_This section describes how a [Column] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Column] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded vertical constraints and the incoming\n horizontal constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight horizontal constraints\n that match the incoming max width.\n2. Divide the remaining vertical space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of vertical space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same horizontal\n constraints as in step 1, but instead of using unbounded vertical\n constraints, use vertical constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The width of the [Column] is the maximum width of the children (which\n will always satisfy the incoming horizontal constraints).\n5. The height of the [Column] is determined by the [mainAxisSize] property.\n If the [mainAxisSize] property is [MainAxisSize.max], then the height of\n the [Column] is the max height of the incoming constraints. If the\n [mainAxisSize] property is [MainAxisSize.min], then the height of the\n [Column] is the sum of heights of the children (subject to the incoming\n constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any vertical\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a horizontal equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may size smaller (leaving some remaining room unused).\n * [SingleChildScrollView], whose documentation discusses some ways to\n use a [Column] inside a scrolling container.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Column" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAlive", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mark a child as needing to stay alive even when it's in a lazy list that\nwould otherwise remove it.\n\nThis widget is for use in [SliverWithKeepAliveWidget]s, such as\n[SliverGrid] or [SliverList].\n\nThis widget is rarely used directly. The [SliverChildBuilderDelegate] and\n[SliverChildListDelegate] delegates, used with [SliverList] and\n[SliverGrid], as well as the scroll view counterparts [ListView] and\n[GridView], have an `addAutomaticKeepAlives` feature, which is enabled by\ndefault, and which causes [AutomaticKeepAlive] widgets to be inserted around\neach child, causing [KeepAlive] widgets to be automatically added and\nconfigured in response to [KeepAliveNotification]s.\n\nTherefore, to keep a widget alive, it is more common to use those\nnotifications than to directly deal with [KeepAlive] widgets.\n\nIn practice, the simplest way to deal with these notifications is to mix\n[AutomaticKeepAliveClientMixin] into one's [State]. See the documentation\nfor that mixin class for details.", "detail": "", "kind": 7, "label": "KeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollPhysics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that allow the scroll offset to go beyond\nthe bounds of the content, but then bounce the content back to the edge of\nthose bounds.\n\nThis is the behavior typically seen on iOS.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on iOS.\n * [ClampingScrollPhysics], which is the analogous physics for Android's\n clamping behavior.", "detail": "", "kind": 7, "label": "BouncingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageBucket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A storage bucket associated with a page in an app.\n\nUseful for storing per-page state that persists across navigations from one\npage to another.", "detail": "", "kind": 7, "label": "PageStorageBucket" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Semantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the widget tree with a description of the meaning of\nthe widgets.\n\nUsed by accessibility tools, search engines, and other semantic analysis\nsoftware to determine the meaning of the application.\n\nSee also:\n\n * [MergeSemantics], which marks a subtree as being a single node for\n accessibility purposes.\n * [ExcludeSemantics], which excludes a subtree from the semantics tree\n (which might be useful if it is, e.g., totally decorative and not\n important to the user).\n * [RenderObject.semanticsAnnotator], the rendering library API through which\n the [Semantics] widget is actually implemented.\n * [SemanticsNode], the object used by the rendering library to represent\n semantics in the semantics tree.\n * [SemanticsDebugger], an overlay to help visualize the semantics tree. Can\n be enabled using [WidgetsApp.showSemanticsDebugger] or\n [MaterialApp.showSemanticsDebugger].", "detail": "", "kind": 7, "label": "Semantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Draggable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dragged from to a [DragTarget].\n\nWhen a draggable widget recognizes the start of a drag gesture, it displays\na [feedback] widget that tracks the user's finger across the screen. If the\nuser lifts their finger while on top of a [DragTarget], that target is given\nthe opportunity to accept the [data] carried by the draggable.\n\nOn multitouch devices, multiple drags can occur simultaneously because there\ncan be multiple pointers in contact with the device at once. To limit the\nnumber of simultaneous drags, use the [maxSimultaneousDrags] property. The\ndefault is to allow an unlimited number of simultaneous drags.\n\nThis widget displays [child] when zero drags are under way. If\n[childWhenDragging] is non-null, this widget instead displays\n[childWhenDragging] when one or more drags are underway. Otherwise, this\nwidget always displays [child].\n\nSee also:\n\n * [DragTarget]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "Draggable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a [Dismissible] can be dismissed.", "detail": "", "kind": 13, "label": "DismissDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Positioned", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned.\n\nA [Positioned] widget must be a descendant of a [Stack], and the path from\nthe [Positioned] widget to its enclosing [Stack] must contain only\n[StatelessWidget]s or [StatefulWidget]s (not other kinds of widgets, like\n[RenderObjectWidget]s).\n\n\nIf a widget is wrapped in a [Positioned], then it is a _positioned_ widget\nin its [Stack]. If the [top] property is non-null, the top edge of this child\nwill be positioned [top] layout units from the top of the stack widget. The\n[right], [bottom], and [left] properties work analogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [right] and [left] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nIf all three values on a particular axis are null, then the\n[Stack.alignment] property is used to position the child.\n\nIf all six values are null, the child is a non-positioned child. The [Stack]\nuses only the non-positioned children to size itself.\n\nSee also:\n\n * [PositionedDirectional], which adapts to the ambient [Directionality].", "detail": "", "kind": 7, "label": "Positioned" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTimerPickerMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different modes of [CupertinoTimerPicker].\n\nSee also:\n\n * [CupertinoTimerPicker], the class that implements the iOS-style timer picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 13, "label": "CupertinoTimerPickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is only equal to itself.", "detail": "", "kind": 7, "label": "UniqueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionallySizedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to a fraction of the total available space.\nFor more details about the layout algorithm, see\n[RenderFractionallySizedOverflowBox].\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionallySizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScopeNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interior node in the focus tree.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nThe interior nodes in the focus tree cannot themselves be focused but\ninstead remember previous focus states. A scope is currently active in its\nparent whenever [isFirstFocus] is true. If that scope is detached from its\nparent, its previous sibling becomes the parent's first focus.\n\nA [FocusNode] has the overall focus when the node is focused in its\nparent [FocusScopeNode] and [FocusScopeNode.isFirstFocus] is true for\nthat scope and all its ancestor scopes.\n\nIf a [FocusScopeNode] is removed, then the next sibling node will be set as\nthe focused node by the [FocusManager].\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].\n * [FocusScope], which is a widget that associates a [FocusScopeNode] with\n its location in the tree.", "detail": "", "kind": 7, "label": "FocusScopeNode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAlive", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows subtrees to request to be kept alive in lazy lists.\n\nThis widget is like [KeepAlive] but instead of being explicitly configured,\nit listens to [KeepAliveNotification] messages from the [child] and other\ndescendants.\n\nThe subtree is kept alive whenever there is one or more descendant that has\nsent a [KeepAliveNotification] and not yet triggered its\n[KeepAliveNotification.handle].\n\nTo send these notifications, consider using [AutomaticKeepAliveClientMixin].", "detail": "", "kind": 7, "label": "AutomaticKeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapAbsorber", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[RenderSliverOverlapInjector].", "detail": "", "kind": 7, "label": "RenderSliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometryTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsetsGeometry]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsetsGeometry>] to\nuse [EdgeInsetsGeometry.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsTween], which interpolates between two [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryInitializer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.initializer].", "detail": "(T instance) → void", "kind": 7, "label": "GestureRecognizerFactoryInitializer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver whose size varies when the sliver is scrolled to the leading edge\nof the viewport.\n\nThis is the layout primitive that [SliverAppBar] uses for its\nshrinking/growing effect.", "detail": "", "kind": 7, "label": "SliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoAlertDialog", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style alert dialog.\n\nAn alert dialog informs the user about situations that require\nacknowledgement. An alert dialog has an optional title, optional content,\nand an optional list of actions. The title is displayed above the content\nand the actions are displayed below the content.\n\nThis dialog styles its title and content (typically a message) to match the\nstandard iOS title and message dialog text style. These default styles can\nbe overridden by explicitly defining [TextStyle]s for [Text] widgets that\nare part of the title or content.\n\nTo display action buttons that look like standard iOS dialog buttons,\nprovide [CupertinoDialogAction]s for the [actions] given to this dialog.\n\nTypically passed as the child widget to [showDialog], which displays the\ndialog.\n\nSee also:\n\n * [CupertinoPopupSurface], which is a generic iOS-style popup surface that\n holds arbitrary content to create custom popups.\n * [CupertinoDialogAction], which is an iOS-style dialog button.\n * [AlertDialog], a Material Design alert dialog.\n * <https://developer.apple.com/ios/human-interface-guidelines/views/alerts/>", "detail": "", "kind": 7, "label": "CupertinoAlertDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RootRenderObjectElement] that is hosted by a [RenderObject].\n\nThis element class is the instantiation of a [RenderObjectToWidgetAdapter]\nwidget. It can be used only as the root of an [Element] tree (it cannot be\nmounted into another [Element]; it's parent must be null).\n\nIn typical usage, it will be instantiated for a [RenderObjectToWidgetAdapter]\nwhose container is the [RenderView] that connects to the Flutter engine. In\nthis usage, it is normally instantiated by the bootstrapping logic in the\n[WidgetsFlutterBinding] singleton created by [runApp].", "detail": "", "kind": 7, "label": "RenderObjectToWidgetElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Wrap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in multiple horizontal or vertical runs.\n\nA [Wrap] lays out each child and attempts to place the child adjacent to the\nprevious child in the main axis, given by [direction], leaving [spacing]\nspace in between. If there is not enough space to fit the child, [Wrap]\ncreates a new _run_ adjacent to the existing children in the cross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].\n\n\n\nThis example renders some [Chip]s representing four contacts in a [Wrap] so\nthat they flow across lines as necessary.\n\n```dart\nWrap(\n spacing: 8.0, // gap between adjacent chips\n runSpacing: 4.0, // gap between lines\n children: <Widget>[\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('AH')),\n label: Text('Hamilton'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('ML')),\n label: Text('Lafayette'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('HM')),\n label: Text('Mulligan'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('JL')),\n label: Text('Laurens'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [Row], which places children in one line, and gives control over their\n alignment and spacing.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Wrap" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An inherited widget for a [Listenable] [notifier], which updates its\ndependencies when the [notifier] is triggered.\n\nThis is a variant of [InheritedWidget], specialized for subclasses of\n[Listenable], such as [ChangeNotifier] or [ValueNotifier].\n\nDependents are notified whenever the [notifier] sends notifications, or\nwhenever the identity of the [notifier] changes.\n\nMultiple notifications are coalesced, so that dependents only rebuild once\neven if the [notifier] fires multiple times between two frames.\n\nTypically this class is subclassed with a class that provides an `of` static\nmethod that calls [BuildContext.inheritFromWidgetOfExactType] with that\nclass.\n\nThe [updateShouldNotify] method may also be overridden, to change the logic\nin the cases where [notifier] itself is changed. The [updateShouldNotify]\nmethod is called with the old [notifier] in the case of the [notifier] being\nchanged. When it returns true, the dependents are marked as needing to be\nrebuilt this frame.\n\nSee also:\n\n * [Animation], an implementation of [Listenable] that ticks each frame to\n update a value.\n * [ViewportOffset] or its subclass [ScrollPosition], implementations of\n [Listenable] that trigger when a view is scrolled.\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedScrollMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable snapshot of values associated with a [Scrollable] viewport.\n\nFor details, see [ScrollMetrics], which defines this object's interfaces.", "detail": "", "kind": 7, "label": "FixedScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Padding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.\n\n\nThis snippet indents the child (a [Card] with some [Text]) by eight pixels\nin each direction:\n\n```dart\nPadding(\n padding: EdgeInsets.all(8.0),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\n## Design discussion\n\n### Why use a [Padding] widget rather than a [Container] with a [Container.padding] property?\n\nThere isn't really any difference between the two. If you supply a\n[Container.padding] argument, [Container] simply builds a [Padding] widget\nfor you.\n\n[Container] doesn't implement its properties directly. Instead, [Container]\ncombines a number of simpler widgets together into a convenient package. For\nexample, the [Container.padding] property causes the container to build a\n[Padding] widget and the [Container.decoration] property causes the\ncontainer to build a [DecoratedBox] widget. If you find [Container]\nconvenient, feel free to use it. If not, feel free to build these simpler\nwidgets in whatever combination meets your needs.\n\nIn fact, the majority of widgets in Flutter are simply combinations of other\nsimpler widgets. Composition, rather than inheritance, is the primary\nmechanism for building up widgets.\n\nSee also:\n\n * [EdgeInsets], the class that is used to describe the padding dimensions.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Padding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidgetBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [StatefulBuilder].\n\nCall [setState] to schedule the [StatefulBuilder] to rebuild.", "detail": "(BuildContext context, StateSetter setState) → Widget", "kind": 7, "label": "StatefulWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildBuilderDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using a builder callback.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot even have to be built until they are displayed.\n\nThe widgets returned from the builder callback are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\n\nThis sample code shows how to use `semanticIndexOffset` to handle multiple\ndelegates in a single scroll view.\n\n```dart\nCustomScrollView(\n semanticChildCount: 4,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n ),\n ),\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n semanticIndexOffset: 2,\n ),\n ),\n ],\n)\n```\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\n\nThis sample code shows how to use `semanticIndexCallback` to handle\nannotating a subset of child nodes with a semantic index. There is\na [Spacer] widget at odd indexes which should not have a semantic\nindex.\n\n```dart\nCustomScrollView(\n semanticChildCount: 5,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n if (index.isEven) {\n return Text('...');\n }\n return Spacer();\n },\n semanticIndexCallback: (Widget widget, int localIndex) {\n if (localIndex.isEven) {\n return localIndex ~/ 2;\n }\n return null;\n },\n childCount: 10,\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.\n * [IndexedSemantics], for an example of manually annotating child nodes\n with semantic indexes.", "detail": "", "kind": 7, "label": "SliverChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelScrollView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which children on a wheel can be scrolled.\n\nThis widget is similar to a [ListView] but with the restriction that all\nchildren must be the same size along the scrolling axis.\n\nWhen the list is at the zero scroll offset, the first child is aligned with\nthe middle of the viewport. When the list is at the final scroll offset,\nthe last child is aligned with the middle of the viewport\n\nThe children are rendered as if rotating on a wheel instead of scrolling on\na plane.", "detail": "", "kind": 7, "label": "ListWheelScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTabScaffold", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements a tabbed iOS application's root layout and behavior structure.\n\nThe scaffold lays out the tab bar at the bottom and the content between or\nbehind the tab bar.\n\nA [tabBar] and a [tabBuilder] are required. The [CupertinoTabScaffold]\nwill automatically listen to the provided [CupertinoTabBar]'s tap callbacks\nto change the active tab.\n\nTabs' contents are built with the provided [tabBuilder] at the active\ntab index. The [tabBuilder] must be able to build the same number of\npages as there are [tabBar.items]. Inactive tabs will be moved [Offstage]\nand their animations disabled.\n\nUse [CupertinoTabView] as the root widget of each tab to support tabs with\nparallel navigation state and history. Since each [CupertinoTabView] contains\na [Navigator], rebuilding the [CupertinoTabView] with a different\n[WidgetBuilder] instance in [CupertinoTabView.builder] will not recreate\nthe [CupertinoTabView]'s navigation stack or update its UI. To update the\ncontents of the [CupertinoTabView] after it's built, trigger a rebuild\n(via [State.setState], for instance) from its descendant rather than from\nits ancestor.\n\n\nA sample code implementing a typical iOS information architecture with tabs.\n\n```dart\nCupertinoTabScaffold(\n tabBar: CupertinoTabBar(\n items: <BottomNavigationBarItem> [\n // ...\n ],\n ),\n tabBuilder: (BuildContext context, int index) {\n return CupertinoTabView(\n builder: (BuildContext context) {\n return CupertinoPageScaffold(\n navigationBar: CupertinoNavigationBar(\n middle: Text('Page 1 of tab $index'),\n ),\n child: Center(\n child: CupertinoButton(\n child: const Text('Next page'),\n onPressed: () {\n Navigator.of(context).push(\n CupertinoPageRoute<void>(\n builder: (BuildContext context) {\n return CupertinoPageScaffold(\n navigationBar: CupertinoNavigationBar(\n middle: Text('Page 2 of tab $index'),\n ),\n child: Center(\n child: CupertinoButton(\n child: const Text('Back'),\n onPressed: () { Navigator.of(context).pop(); },\n ),\n ),\n );\n },\n ),\n );\n },\n ),\n ),\n );\n },\n );\n },\n)\n```\n\nTo push a route above all tabs instead of inside the currently selected one\n(such as when showing a dialog on top of this scaffold), use\n`Navigator.of(rootNavigator: true)` from inside the [BuildContext] of a\n[CupertinoTabView].\n\nSee also:\n\n * [CupertinoTabBar], the bottom tab bar inserted in the scaffold.\n * [CupertinoTabView], the typical root content of each tab that holds its own\n [Navigator] stack.\n * [CupertinoPageRoute], a route hosting modal pages with iOS style transitions.\n * [CupertinoPageScaffold], typical contents of an iOS modal page implementing\n layout with a navigation bar on top.", "detail": "", "kind": 7, "label": "CupertinoTabScaffold" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedContainer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container that gradually changes its values over a period of time.\n\nThe [AnimatedContainer] will automatically animate between the old and\nnew values of properties when they change using the provided curve and\nduration. Properties that are null are not animated. Its child and\ndescendants are not animated.\n\nThis class is useful for generating simple implicit transitions between\ndifferent parameters to [Container] with its internal [AnimationController].\nFor more complex animations, you'll likely want to use a subclass of\n[AnimatedWidget] such as the [DecoratedBoxTransition] or use your own\n[AnimationController].\n\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPadding], which is a subset of this widget that only\n supports animating the [padding].\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.\n * [AnimatedSwitcher], which switches out a child for a new one with a customizable transition.\n * [AnimatedCrossFade], which fades between two children and interpolates their sizes.", "detail": "", "kind": 7, "label": "AnimatedContainer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollNotification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has not changed its scroll position\nbecause the change would have caused its scroll position to go outside of\nits scroll bounds.\n\nSee also:\n\n * [ScrollUpdateNotification], which indicates that a [Scrollable] widget\n has changed its scroll position.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "OverscrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A utility class for defining one-off page routes in terms of callbacks.\n\nCallers must define the [pageBuilder] function which creates the route's\nprimary contents. To add transitions define the [transitionsBuilder] function.", "detail": "", "kind": 7, "label": "PageRouteBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTheme", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a visual styling theme to descendant Cupertino widgets.\n\nAffects the color and text styles of Cupertino widgets whose styling\nare not overridden when constructing the respective widgets instances.\n\nDescendant widgets can retrieve the current [CupertinoThemeData] by calling\n[CupertinoTheme.of]. An [InheritedWidget] dependency is created when\nan ancestor [CupertinoThemeData] is retrieved via [CupertinoTheme.of].\n\nThe [CupertinoTheme] widget implies an [IconTheme] widget, whose\n[IconTheme.data] has the same color as [CupertinoThemeData.primaryColor]\n\nSee also:\n\n * [CupertinoThemeData], specifies the theme's visual styling.\n * [CupertinoApp], which will automatically add a [CupertinoTheme].\n * [Theme], a Material theme which will automatically add a [CupertinoTheme]\n with a [CupertinoThemeData] derived from the Material [ThemeData].", "detail": "", "kind": 7, "label": "CupertinoTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteSettings", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data that might be useful in constructing a [Route].", "detail": "", "kind": 7, "label": "RouteSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box with a specified size.\n\nIf given a child, this widget forces its child to have a specific width\nand/or height (assuming values are permitted by this widget's parent). If\neither the width or height is null, this widget will size itself to match\nthe child's size in that dimension.\n\nIf not given a child, this widget will size itself to the given width and\nheight, treating nulls as zero.\n\nThe [new SizedBox.expand] constructor can be used to make a [SizedBox] that\nsizes itself to fit the parent. It is equivalent to setting [width] and\n[height] to [double.infinity].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) have the\nexact size 200x300, parental constraints permitting:\n\n```dart\nSizedBox(\n width: 200.0,\n height: 300.0,\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nSee also:\n\n * [ConstrainedBox], a more generic version of this class that takes\n arbitrary [BoxConstraints] instead of an explicit width and height.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [FractionallySizedBox], a widget that sizes its child to a fraction of\n the total available space.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherTransitionBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom transitions for\n[AnimatedSwitcher].\n\nThe `child` should be transitioning in when the `animation` is running in\nthe forward direction.\n\nThe function should return a widget which wraps the given `child`. It may\nalso use the `animation` to inform its transition. It must not return null.", "detail": "(Widget child, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedSwitcherTransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].\n\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositioned", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which automatically transitions the child's\nposition over a given duration whenever the given position changes.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositioned] will trigger a relayout\nas well.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositionedDirectional], which adapts to the ambient\n [Directionality] (the same as this widget, but for animating\n [PositionedDirectional]).", "detail": "", "kind": 7, "label": "AnimatedPositioned" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Container", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience widget that combines common painting, positioning, and sizing\nwidgets.\n\nA container first surrounds the child with [padding] (inflated by any\nborders present in the [decoration]) and then applies additional\n[constraints] to the padded extent (incorporating the `width` and `height`\nas constraints, if either is non-null). The container is then surrounded by\nadditional empty space described from the [margin].\n\nDuring painting, the container first applies the given [transform], then\npaints the [decoration] to fill the padded extent, then it paints the child,\nand finally paints the [foregroundDecoration], also filling the padded\nextent.\n\nContainers with no children try to be as big as possible unless the incoming\nconstraints are unbounded, in which case they try to be as small as\npossible. Containers with children size themselves to their children. The\n`width`, `height`, and [constraints] arguments to the constructor override\nthis.\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nSince [Container] combines a number of other widgets each with their own\nlayout behavior, [Container]'s layout behavior is somewhat complicated.\n\nSummary: [Container] tries, in order: to honor [alignment], to size itself\nto the [child], to honor the `width`, `height`, and [constraints], to expand\nto fit the parent, to be as small as possible.\n\nMore specifically:\n\nIf the widget has no child, no `height`, no `width`, no [constraints],\nand the parent provides unbounded constraints, then [Container] tries to\nsize as small as possible.\n\nIf the widget has no child and no [alignment], but a `height`, `width`, or\n[constraints] are provided, then the [Container] tries to be as small as\npossible given the combination of those constraints and the parent's\nconstraints.\n\nIf the widget has no child, no `height`, no `width`, no [constraints], and\nno [alignment], but the parent provides bounded constraints, then\n[Container] expands to fit the constraints provided by the parent.\n\nIf the widget has an [alignment], and the parent provides unbounded\nconstraints, then the [Container] tries to size itself around the child.\n\nIf the widget has an [alignment], and the parent provides bounded\nconstraints, then the [Container] tries to expand to fit the parent, and\nthen positions the child within itself as per the [alignment].\n\nOtherwise, the widget has a [child] but no `height`, no `width`, no\n[constraints], and no [alignment], and the [Container] passes the\nconstraints from the parent to the child and sizes itself to match the\nchild.\n\nThe [margin] and [padding] properties also affect the layout, as described\nin the documentation for those properties. (Their effects merely augment the\nrules described above.) The [decoration] can implicitly increase the\n[padding] (e.g. borders in a [BoxDecoration] contribute to the [padding]);\nsee [Decoration.padding].\n\nThis example shows a 48x48 amber square (placed inside a [Center] widget in\ncase the parent widget has its own opinions regarding the size that the\n[Container] should take), with a margin so that it stays away from\nneighboring widgets:\n\n![An amber colored container with the dimensions of 48 square pixels.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_a.png)\n\n```dart\nCenter(\n child: Container(\n margin: const EdgeInsets.all(10.0),\n color: Colors.amber[600],\n width: 48.0,\n height: 48.0,\n ),\n)\n```\n\n\nThis example shows how to use many of the features of [Container] at once.\nThe [constraints] are set to fit the font size plus ample headroom\nvertically, while expanding horizontally to fit the parent. The [padding] is\nused to make sure there is space between the contents and the text. The\n[color] makes the box blue. The [alignment] causes the [child] to be\ncentered in the box. Finally, the [transform] applies a slight rotation to the\nentire contraption to complete the effect.\n\n![A blue rectangular container with 'Hello World' in the center, rotated\nslightly in the z axis.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_b.png)\n\n```dart\nContainer(\n constraints: BoxConstraints.expand(\n height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,\n ),\n padding: const EdgeInsets.all(8.0),\n color: Colors.blue[600],\n alignment: Alignment.center,\n child: Text('Hello World',\n style: Theme.of(context)\n .textTheme\n .display1\n .copyWith(color: Colors.white)),\n transform: Matrix4.rotationZ(0.1),\n)\n```\n\nSee also:\n\n * [AnimatedContainer], a variant that smoothly animates the properties when\n they change.\n * [Border], which has a sample which uses [Container] heavily.\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Container" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\n[Scrollable] implements the interaction model for a scrollable widget,\nincluding gesture recognition, but does not have an opinion about how the\nviewport, which actually displays the children, is constructed.\n\nIt's rare to construct a [Scrollable] directly. Instead, consider [ListView]\nor [GridView], which combine scrolling, viewporting, and a layout model. To\ncombine layout models (or to use a custom layout mode), consider using\n[CustomScrollView].\n\nThe static [Scrollable.of] and [Scrollable.ensureVisible] functions are\noften used to interact with the [Scrollable] widget inside a [ListView] or\na [GridView].\n\nTo further customize scrolling behavior with a [Scrollable]:\n\n1. You can provide a [viewportBuilder] to customize the child model. For\n example, [SingleChildScrollView] uses a viewport that displays a single\n box child whereas [CustomScrollView] uses a [Viewport] or a\n [ShrinkWrappingViewport], both of which display a list of slivers.\n\n2. You can provide a custom [ScrollController] that creates a custom\n [ScrollPosition] subclass. For example, [PageView] uses a\n [PageController], which creates a page-oriented scroll position subclass\n that keeps the same page visible when the [Scrollable] resizes.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "Scrollable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Border]s.\n\nThis class specializes the interpolation of [Tween<Border>] to use\n[Border.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsets]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsets>] to use\n[EdgeInsets.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsGeometryTween], which interpolates between two\n [EdgeInsetsGeometry] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryWithHandlers", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers that delegates to callbacks.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactoryWithHandlers" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstrainedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes additional constraints on its child.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[constraints].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) fill the\nparent, by applying [BoxConstraints.expand] constraints:\n\n```dart\nConstrainedBox(\n constraints: const BoxConstraints.expand(),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nThe same behavior can be obtained using the [new SizedBox.expand] widget.\n\nSee also:\n\n * [BoxConstraints], the class that describes constraints.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "ConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListRemovedItemBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedListState.removeItem].", "detail": "(BuildContext context, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListRemovedItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBody", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that arranges its children sequentially along a given axis, forcing\nthem to the dimension of the parent in the other axis.\n\nThis widget is rarely used directly. Instead, consider using [ListView],\nwhich combines a similar layout algorithm with scrolling behavior, or\n[Column], which gives you more flexible control over the layout of a\nvertical set of boxes.\n\nSee also:\n\n * [RenderListBody], which implements this layout algorithm and the\n documentation for which describes some of its subtleties.\n * [SingleChildScrollView], which is sometimes used with [ListBody] to\n make the contents scrollable.\n * [Column] and [Row], which implement a more elaborate version of\n this layout algorithm (at the cost of being slightly less efficient).\n * [ListView], which implements an efficient scrolling version of this\n layout algorithm.", "detail": "", "kind": 7, "label": "ListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoApp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An application that uses Cupertino design.\n\nA convenience widget that wraps a number of widgets that are commonly\nrequired for an iOS-design targeting application. It builds upon a\n[WidgetsApp] by iOS specific defaulting such as fonts and scrolling\nphysics.\n\nThe [CupertinoApp] configures the top-level [Navigator] to search for routes\nin the following order:\n\n 1. For the `/` route, the [home] property, if non-null, is used.\n\n 2. Otherwise, the [routes] table is used, if it has an entry for the route.\n\n 3. Otherwise, [onGenerateRoute] is called, if provided. It should return a\n non-null value for any _valid_ route not handled by [home] and [routes].\n\n 4. Finally if all else fails [onUnknownRoute] is called.\n\nIf [home], [routes], [onGenerateRoute], and [onUnknownRoute] are all null,\nand [builder] is not null, then no [Navigator] is created.\n\nThis widget also configures the observer of the top-level [Navigator] (if\nany) to perform [Hero] animations.\n\nUse this widget with caution on Android since it may produce behaviors\nAndroid users are not expecting such as:\n\n * Pages will be dismissible via a back swipe.\n * Scrolling past extremities will trigger iOS-style spring overscrolls.\n * The San Francisco font family is unavailable on Android and can result\n in undefined font behavior.\n\nSee also:\n\n * [CupertinoPageScaffold], which provides a standard page layout default\n with nav bars.\n * [Navigator], which is used to manage the app's stack of pages.\n * [CupertinoPageRoute], which defines an app page that transitions in an\n iOS-specific way.\n * [WidgetsApp], which defines the basic app elements but does not depend\n on the Cupertino library.", "detail": "", "kind": 7, "label": "CupertinoApp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomMultiChildLayout", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses a delegate to size and position multiple children.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.\n\n[CustomMultiChildLayout] is appropriate when there are complex relationships\nbetween the size and positioning of a multiple widgets. To control the\nlayout of a single child, [CustomSingleChildLayout] is more appropriate. For\nsimple cases, such as aligning a widget to one or another edge, the [Stack]\nwidget is more appropriate.\n\nEach child must be wrapped in a [LayoutId] widget to identify the widget for\nthe delegate.\n\nSee also:\n\n * [MultiChildLayoutDelegate], for details about how to control the layout of\n the children.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Stack], which arranges children relative to the edges of the container.\n * [Flow], which provides paint-time control of its children using transform\n matrices.", "detail": "", "kind": 7, "label": "CustomMultiChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSliverNavigationBar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled navigation bar with iOS-11-style large titles using slivers.\n\nThe [CupertinoSliverNavigationBar] must be placed in a sliver group such\nas the [CustomScrollView].\n\nThis navigation bar consists of two sections, a pinned static section on top\nand a sliding section containing iOS-11-style large title below it.\n\nIt should be placed at top of the screen and automatically accounts for\nthe iOS status bar.\n\nMinimally, a [largeTitle] widget will appear in the middle of the app bar\nwhen the sliver is collapsed and transfer to the area below in larger font\nwhen the sliver is expanded.\n\nFor advanced uses, an optional [middle] widget can be supplied to show a\ndifferent widget in the middle of the navigation bar when the sliver is collapsed.\n\nLike [CupertinoNavigationBar], it also supports a [leading] and [trailing]\nwidget on the static section on top that remains while scrolling.\n\nThe [leading] widget will automatically be a back chevron icon button (or a\nclose button in case of a fullscreen dialog) to pop the current route if none\nis provided and [automaticallyImplyLeading] is true (true by default).\n\nThe [largeTitle] widget will automatically be a title text from the current\n[CupertinoPageRoute] if none is provided and [automaticallyImplyTitle] is\ntrue (true by default).\n\nWhen [transitionBetweenRoutes] is true, this navigation bar will transition\non top of the routes instead of inside them if the route being transitioned\nto also has a [CupertinoNavigationBar] or a [CupertinoSliverNavigationBar]\nwith [transitionBetweenRoutes] set to true. If [transitionBetweenRoutes] is\ntrue, none of the [Widget] parameters can contain any [GlobalKey]s in their\nsubtrees since those widgets will exist in multiple places in the tree\nsimultaneously.\n\nBy default, only one [CupertinoNavigationBar] or [CupertinoSliverNavigationBar]\nshould be present in each [PageRoute] to support the default transitions.\nUse [transitionBetweenRoutes] or [heroTag] to customize the transition\nbehavior for multiple navigation bars per route.\n\nSee also:\n\n * [CupertinoNavigationBar], an iOS navigation bar for use on non-scrolling\n pages.", "detail": "", "kind": 7, "label": "CupertinoSliverNavigationBar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An entry in the history of a [LocalHistoryRoute].", "detail": "", "kind": 7, "label": "LocalHistoryEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTabView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single tab view with its own [Navigator] state and history.\n\nA typical tab view used as the content of each tab in a [CupertinoTabScaffold]\nwhere multiple tabs with parallel navigation states and history can\nco-exist.\n\n[CupertinoTabView] configures the top-level [Navigator] to search for routes\nin the following order:\n\n 1. For the `/` route, the [builder] property, if non-null, is used.\n\n 2. Otherwise, the [routes] table is used, if it has an entry for the route,\n including `/` if [builder] is not specified.\n\n 3. Otherwise, [onGenerateRoute] is called, if provided. It should return a\n non-null value for any _valid_ route not handled by [builder] and [routes].\n\n 4. Finally if all else fails [onUnknownRoute] is called.\n\nThese navigation properties are not shared with any sibling [CupertinoTabView]\nnor any ancestor or descendant [Navigator] instances.\n\nTo push a route above this [CupertinoTabView] instead of inside it (such\nas when showing a dialog on top of all tabs), use\n`Navigator.of(rootNavigator: true)`.\n\nSee also:\n\n * [CupertinoTabScaffold], a typical host that supports switching between tabs.\n * [CupertinoPageRoute], a typical modal page route pushed onto the\n [CupertinoTabView]'s [Navigator].", "detail": "", "kind": 7, "label": "CupertinoTabView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRoute", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that replaces the entire screen.", "detail": "", "kind": 7, "label": "PageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of an [Overlay].\n\nUsed to insert [OverlayEntry]s into the overlay using the [insert] and\n[insertAll] functions.", "detail": "", "kind": 7, "label": "OverlayState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultWidgetsLocalizations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "US English localizations for the widgets library.\n\nSee also:\n\n * [GlobalWidgetsLocalizations], which provides widgets localizations for\n many languages.\n * [WidgetsApp.delegates], which automatically includes\n [DefaultWidgetsLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultWidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RepaintBoundary", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that creates a separate display list for its child.\n\nThis widget creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree.\n\nThis is useful since [RenderObject.paint] may be triggered even if its\nassociated [Widget] instances did not change or rebuild. A [RenderObject]\nwill repaint whenever any [RenderObject] that shares the same [Layer] is\nmarked as being dirty and needing paint (see [RenderObject.markNeedsPaint]),\nsuch as when an ancestor scrolls or when an ancestor or descendant animates.\n\nContaining [RenderObject.paint] to parts of the render subtree that are\nactually visually changing using [RepaintBoundary] explicitly or implicitly\nis therefore critical to minimizing redundant work and improving the app's\nperformance.\n\nWhen a [RenderObject] is flagged as needing to paint via\n[RenderObject.markNeedsPaint], the nearest ancestor [RenderObject] with\n[RenderObject.isRepaintBoundary], up to possibly the root of the application,\nis requested to repaint. That nearest ancestor's [RenderObject.paint] method\nwill cause _all_ of its descendant [RenderObject]s to repaint in the same\nlayer.\n\n[RepaintBoundary] is therefore used, both while propagating the\n`markNeedsPaint` flag up the render tree and while traversing down the\nrender tree via [RenderObject.paintChild], to strategically contain repaints\nto the render subtree that visually changed for performance. This is done\nbecause the [RepaintBoundary] widget creates a [RenderObject] that always\nhas a [Layer], decoupling ancestor render objects from the descendant\nrender objects.\n\n[RepaintBoundary] has the further side-effect of possibly hinting to the\nengine that it should further optimize animation performance if the render\nsubtree behind the [RepaintBoundary] is sufficiently complex and is static\nwhile the surrounding tree changes frequently. In those cases, the engine\nmay choose to pay a one time cost of rasterizing and caching the pixel\nvalues of the subtree for faster future GPU re-rendering speed.\n\nSeveral framework widgets insert [RepaintBoundary] widgets to mark natural\nseparation points in applications. For instance, contents in Material Design\ndrawers typically don't change while the drawer opens and closes, so\nrepaints are automatically contained to regions inside or outside the drawer\nwhen using the [Drawer] widget during transitions.\n\nSee also:\n\n * [debugRepaintRainbowEnabled], a debugging flag to help visually monitor\n render tree repaints in a running app.\n * [debugProfilePaintsEnabled], a debugging flag to show render tree\n repaints in the observatory's timeline view.", "detail": "", "kind": 7, "label": "RepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RootRenderObjectElement", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The element at the root of the tree.\n\nOnly root elements may have their owner set explicitly. All other\nelements inherit their owner from their parent.", "detail": "", "kind": 7, "label": "RootRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectWidget", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single child slot. (This superclass only provides the storage\nfor that child, it doesn't actually provide the updating logic.)", "detail": "", "kind": 7, "label": "SingleChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportNotificationMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mixin for [Notification]s that track how many [RenderAbstractViewport] they\nhave bubbled through.\n\nThis is used by [ScrollNotification] and [OverscrollIndicatorNotification].", "detail": "", "kind": 7, "label": "ViewportNotificationMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsProperties", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties used by assistive technologies to make the application\nmore accessible.\n\nThe properties of this class are used to generate a [SemanticsNode]s in the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsProperties" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsOwner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Owns [SemanticsNode] objects and notifies listeners of changes to the\nrender tree semantics.\n\nTo listen for semantic updates, call [PipelineOwner.ensureSemantics] to\nobtain a [SemanticsHandle]. This will create a [SemanticsOwner] if\nnecessary.", "detail": "", "kind": 7, "label": "SemanticsOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsService", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows access to the platform's accessibility services.\n\nEvents sent by this service are handled by the platform-specific\naccessibility bridge in Flutter's engine.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "SemanticsService" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the semantics layer and the Flutter engine.", "detail": "", "kind": 7, "label": "SemanticsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccessibilityFeatures", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Additional accessibility features that may be enabled by the platform.\n\nIt is not possible to enable these settings from Flutter, instead they are\nused by the platform to indicate that additional accessibility features are\nenabled.", "detail": "", "kind": 7, "label": "AccessibilityFeatures" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Summary information about a [SemanticsNode] object.\n\nA semantics node might [SemanticsNode.mergeAllDescendantsIntoThisNode],\nwhich means the individual fields on the semantics node don't fully describe\nthe semantics at that node. This data structure contains the full semantics\nfor the node.\n\nTypically obtained from [SemanticsNode.getSemanticsData].", "detail": "", "kind": 7, "label": "SemanticsData" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MoveCursorHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [SemanticsAction]s that move the cursor.\n\nIf `extendSelection` is set to true the cursor movement should extend the\ncurrent selection or (if nothing is currently selected) start a selection.", "detail": "(bool extendSelection) → void", "kind": 7, "label": "MoveCursorHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsSortKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for all sort keys for [Semantics] accessibility traversal order\nsorting.\n\nOnly keys of the same type and having matching [name]s are compared. If a\nlist of sibling [SemanticsNode]s contains keys that are not comparable with\neach other the list is first sorted using the default sorting algorithm.\nThen the nodes are broken down into groups by moving comparable nodes\ntowards the _earliest_ node in the group. Finally each group is sorted by\nsort key and the resulting list is made by concatenating the sorted groups\nback.\n\nFor example, let's take nodes (C, D, B, E, A, F). Let's assign node A key 1,\nnode B key 2, node C key 3. Let's also assume that the default sort order\nleaves the original list intact. Because nodes A, B, and C, have comparable\nsort key, they will form a group by pulling all nodes towards the earliest\nnode, which is C. The result is group (C, B, A). The remaining nodes D, E,\nF, form a second group with sort key being `null`. The first group is sorted\nusing their sort keys becoming (A, B, C). The second group is left as is\nbecause it does not specify sort keys. Then we concatenate the two groups -\n(A, B, C) and (D, E, F) - into the final (A, B, C, D, E, F).\n\nBecause of the complexity introduced by incomparable sort keys among sibling\nnodes, it is recommended to either use comparable keys for all nodes, or\nuse null for all of them, leaving the sort order to the default algorithm.\n\nSee Also:\n\n * [OrdinalSortKey] for a sort key that sorts using an ordinal.", "detail": "", "kind": 7, "label": "SemanticsSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugSemanticsDumpOrder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Used by [debugDumpSemanticsTree] to specify the order in which child nodes\nare printed.", "detail": "", "kind": 13, "label": "DebugSemanticsDumpOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetSelectionHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [SemanticsAction.setSelection] handlers to change the\ntext selection (or re-position the cursor) to `selection`.", "detail": "(TextSelection selection) → void", "kind": 7, "label": "SetSelectionHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressSemanticsEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers long press semantic feedback.\n\nCurrently only honored on Android. Triggers a long-press specific sound\nwhen TalkBack is enabled.", "detail": "", "kind": 7, "label": "LongPressSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the semantic information associated with the owning\n[RenderObject].\n\nThe information provided in the configuration is used to generate the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The possible actions that can be conveyed from the operating system\naccessibility APIs to a semantics node.", "detail": "", "kind": 7, "label": "SemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapSemanticEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers tap semantic feedback.\n\nCurrently only honored on Android. Triggers a tap specific sound when\nTalkBack is enabled.", "detail": "", "kind": 7, "label": "TapSemanticEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnounceSemanticsEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement.\n\nThis should be used for announcement that are not seamlessly announced by\nthe system as a result of a UI state change.\n\nFor example a camera application can use this method to make accessibility\nannouncements regarding objects in the viewfinder.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "AnnounceSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TooltipSemanticsEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement of a tooltip.\n\nThis is only used by Android to announce tooltip values.", "detail": "", "kind": 7, "label": "TooltipSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSemanticsAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier of a custom semantics action.\n\nCustom semantics actions can be provided to make complex user\ninteractions more accessible. For instance, if an application has a\ndrag-and-drop list that requires the user to press and hold an item\nto move it, users interacting with the application using a hardware\nswitch may have difficulty. This can be made accessible by creating custom\nactions and pairing them with handlers that move a list item up or down in\nthe list.\n\nIn Android, these actions are presented in the local context menu. In iOS,\nthese are presented in the radial context menu.\n\nLocalization and text direction do not automatically apply to the provided\nlabel or hint.\n\nInstances of this class should either be instantiated with const or\nnew instances cached in static fields.\n\nSee also:\n\n * [SemanticsProperties], where the handler for a custom action is provided.", "detail": "", "kind": 7, "label": "CustomSemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsTag", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tag for a [SemanticsNode].\n\nTags can be interpreted by the parent of a [SemanticsNode]\nand depending on the presence of a tag the parent can for example decide\nhow to add the tagged node as a child. Tags are not sent to the engine.\n\nAs an example, the [RenderSemanticsGestureHandler] uses tags to determine\nif a child node should be excluded from the scrollable area for semantic\npurposes.\n\nThe provided [name] is only used for debugging. Two tags created with the\nsame [name] and the `new` operator are not considered identical. However,\ntwo tags created with the same [name] and the `const` operator are always\nidentical.", "detail": "", "kind": 7, "label": "SemanticsTag" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event sent by the application to notify interested listeners that\nsomething happened to the user interface (e.g. a view scrolled).\n\nThese events are usually interpreted by assistive technologies to give the\nuser additional clues about the current state of the UI.", "detail": "", "kind": 7, "label": "SemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UpdateLiveRegionEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers a polite announcement of a live region.\n\nThis requires that the semantics node has already been marked as a live\nregion. On Android, TalkBack will make a verbal announcement, as long as\nthe label of the semantics node has changed since the last live region\nupdate. iOS does not currently support this event.\n\nSee also:\n\n * [SemanticsFlag.liveRegion], for a description of live regions.", "detail": "", "kind": 7, "label": "UpdateLiveRegionEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrdinalSortKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [SemanticsSortKey] that sorts simply based on the `double` value it is\ngiven.\n\nThe [OrdinalSortKey] compares itself with other [OrdinalSortKey]s\nto sort based on the order it is given.\n\nThe ordinal value `order` is typically a whole number, though it can be\nfractional, e.g. in order to fit between two other consecutive whole\nnumbers. The value must be finite (it cannot be [double.nan],\n[double.infinity], or [double.negativeInfinity]).", "detail": "", "kind": 7, "label": "OrdinalSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNodeVisitor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called for each [SemanticsNode].\n\nReturn false to stop visiting nodes.\n\nUsed by [SemanticsNode.visitChildren].", "detail": "(SemanticsNode node) → bool", "kind": 7, "label": "SemanticsNodeVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A node that represents some semantic data.\n\nThe semantics tree is maintained during the semantics phase of the pipeline\n(i.e., during [PipelineOwner.flushSemantics]), which happens after\ncompositing. The semantics tree is then uploaded into the engine for use\nby assistive technology.", "detail": "", "kind": 7, "label": "SemanticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsHintOverrides", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides hint values which override the default hints on supported\nplatforms.\n\nOn iOS, these values are always ignored.", "detail": "", "kind": 7, "label": "SemanticsHintOverrides" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderCustomSingleChildLayoutBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.", "detail": "", "kind": 7, "label": "RenderCustomSingleChildLayoutBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverHelpers", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mixin for [RenderSliver] subclasses that provides some utility functions.", "detail": "", "kind": 7, "label": "RenderSliverHelpers" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIndexedSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render objects that annotates semantics with an index.\n\nCertain widgets will automatically provide a child index for building\nsemantics. For example, the [ScrollView] uses the index of the first\nvisible child semantics node to determine the\n[SemanticsConfiguration.scrollIndex].\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.", "detail": "", "kind": 7, "label": "RenderIndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFollowerLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transform the child so that its origin is [offset] from the origin of the\n[RenderLeaderLayer] with the same [LayerLink].\n\nThe [RenderLeaderLayer] in question must be earlier in the paint order.\n\nHit testing on descendants of this render object will only work if the\ntarget position is within the box that this render object's parent considers\nto be hittable.\n\nSee also:\n\n * [CompositedTransformFollower], the corresponding widget.\n * [FollowerLayer], the layer that this render object creates.", "detail": "", "kind": 7, "label": "RenderFollowerLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPhysicalModel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a physical model layer that clips its child to a rounded\nrectangle.\n\nA physical model layer casts a shadow based on its [elevation].", "detail": "", "kind": 7, "label": "RenderPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPerformanceOverlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay shows two time series. The first shows how much time was\nrequired on this thread to produce each frame. The second shows how much\ntime was required on the GPU thread to produce each frame. Ideally, both\nthese values would be less than the total frame budget for the hardware on\nwhich the app is running. For example, if the hardware has a screen that\nupdates at 60 Hz, each thread should ideally spend less than 16ms producing\neach frame. This ideal condition is indicated by a green vertical line for\neach thread. Otherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "RenderPerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBaseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child.\n\nIf [baseline] is less than the distance from the top of the child\nto the baseline of the child, then the child will overflow the top\nof the box. This is typically not desirable, in particular, that\npart of the child will not be found when doing hit tests, so the\nuser cannot interact with that part of the child.\n\nThis box will be sized so that its bottom is coincident with the\nbottom of the child. This means if this box shifts the child down,\nthere will be space between the top of this box and the top of the\nchild, but there is never space between the bottom of the child\nand the bottom of the box.", "detail": "", "kind": 7, "label": "RenderBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The possible actions that can be conveyed from the operating system\naccessibility APIs to a semantics node.", "detail": "", "kind": 7, "label": "SemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverHitTestEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A hit test entry used by [RenderSliver].\n\nThe coordinate system used by this hit test entry is relative to the\n[AxisDirection] of the target sliver.", "detail": "", "kind": 7, "label": "SliverHitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsTag", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tag for a [SemanticsNode].\n\nTags can be interpreted by the parent of a [SemanticsNode]\nand depending on the presence of a tag the parent can for example decide\nhow to add the tagged node as a child. Tags are not sent to the engine.\n\nAs an example, the [RenderSemanticsGestureHandler] uses tags to determine\nif a child node should be excluded from the scrollable area for semantic\npurposes.\n\nThe provided [name] is only used for debugging. Two tags created with the\nsame [name] and the `new` operator are not considered identical. However,\ntwo tags created with the same [name] and the `const` operator are always\nidentical.", "detail": "", "kind": 7, "label": "SemanticsTag" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderProxyBoxMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implementation of [RenderProxyBox].\n\nUse this mixin in situations where the proxying behavior\nof [RenderProxyBox] is desired but inheriting from [RenderProxyBox] is\nimpractical (e.g. because you want to mix in other classes as well).", "detail": "", "kind": 7, "label": "RenderProxyBoxMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderListWheelViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Render, onto a wheel, a bigger sequential set of objects inside this viewport.\n\nTakes a scrollable set of fixed sized [RenderBox]es and renders them\nsequentially from top down on a vertical scrolling axis.\n\nIt starts with the first scrollable item in the center of the main axis\nand ends with the last scrollable item in the center of the main axis. This\nis in contrast to typical lists that start with the first scrollable item\nat the start of the main axis and ends with the last scrollable item at the\nend of the main axis.\n\nInstead of rendering its children on a flat plane, it renders them\nas if each child is broken into its own plane and that plane is\nperpendicularly fixed onto a cylinder which rotates along the scrolling\naxis.\n\nThis class works in 3 coordinate systems:\n\n1. The **scrollable layout coordinates**. This coordinate system is used to\n communicate with [ViewportOffset] and describes its children's abstract\n offset from the beginning of the scrollable list at (0.0, 0.0).\n\n The list is scrollable from the start of the first child item to the\n start of the last child item.\n\n Children's layout coordinates don't change as the viewport scrolls.\n\n2. The **untransformed plane's viewport painting coordinates**. Children are\n not painted in this coordinate system. It's an abstract intermediary used\n before transforming into the next cylindrical coordinate system.\n\n This system is the **scrollable layout coordinates** translated by the\n scroll offset such that (0.0, 0.0) is the top left corner of the\n viewport.\n\n Because the viewport is centered at the scrollable list's scroll offset\n instead of starting at the scroll offset, there are paintable children\n ~1/2 viewport length before and after the scroll offset instead of ~1\n viewport length after the scroll offset.\n\n Children's visibility inclusion in the viewport is determined in this\n system regardless of the cylinder's properties such as [diameterRatio]\n or [perspective]. In other words, a 100px long viewport will always\n paint 10-11 visible 10px children if there are enough children in the\n viewport.\n\n3. The **transformed cylindrical space viewport painting coordinates**.\n Children from system 2 get their positions transformed into a cylindrical\n projection matrix instead of its Cartesian offset with respect to the\n scroll offset.\n\n Children in this coordinate system are painted.\n\n The wheel's size and the maximum and minimum visible angles are both\n controlled by [diameterRatio]. Children visible in the **untransformed\n plane's viewport painting coordinates**'s viewport will be radially\n evenly laid out between the maximum and minimum angles determined by\n intersecting the viewport's main axis length with a cylinder whose\n diameter is [diameterRatio] times longer, as long as those angles are\n between -pi/2 and pi/2.\n\n For example, if [diameterRatio] is 2.0 and this [RenderListWheelViewport]\n is 100.0px in the main axis, then the diameter is 200.0. And children\n will be evenly laid out between that cylinder's -arcsin(1/2) and\n arcsin(1/2) angles.\n\n The cylinder's 0 degree side is always centered in the\n [RenderListWheelViewport]. The transformation from **untransformed\n plane's viewport painting coordinates** is also done such that the child\n in the center of that plane will be mostly untransformed with children\n above and below it being transformed more as the angle increases.", "detail": "", "kind": 7, "label": "RenderListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverToBoxAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RenderSliver] that contains a single [RenderBox].\n\nThe child will not be laid out if it is not visible. It is sized according\nto the child's preferences in the main axis, and with a tight constraint\nforcing it to the dimensions of the viewport in the cross axis.\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderViewport], which allows [RenderSliver] objects to be placed inside\n a [RenderBox] (the opposite of this class).", "detail": "", "kind": 7, "label": "RenderSliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderRotatedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Rotates its child by a integral number of quarter turns.\n\nUnlike [RenderTransform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.", "detail": "", "kind": 7, "label": "RenderRotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnnotatedRegion", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Render object which inserts an [AnnotatedRegionLayer] into the layer tree.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer this render object creates.", "detail": "", "kind": 7, "label": "RenderAnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderStack", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements the stack layout algorithm\n\nIn a stack layout, the children are positioned on top of each other in the\norder in which they appear in the child list. First, the non-positioned\nchildren (those with null values for top, right, bottom, and left) are\nlaid out and initially placed in the upper-left corner of the stack. The\nstack is then sized to enclose all of the non-positioned children. If there\nare no non-positioned children, the stack becomes as large as possible.\n\nThe final location of non-positioned children is determined by the alignment\nparameter. The left of each non-positioned child becomes the\ndifference between the child's width and the stack's width scaled by\nalignment.x. The top of each non-positioned child is computed\nsimilarly and scaled by alignment.y. So if the alignment x and y properties\nare 0.0 (the default) then the non-positioned children remain in the\nupper-left corner. If the alignment x and y properties are 0.5 then the\nnon-positioned children are centered within the stack.\n\nNext, the positioned children are laid out. If a child has top and bottom\nvalues that are both non-null, the child is given a fixed height determined\nby subtracting the sum of the top and bottom values from the height of the stack.\nSimilarly, if the child has right and left values that are both non-null,\nthe child is given a fixed width derived from the stack's width.\nOtherwise, the child is given unbounded constraints in the non-fixed dimensions.\n\nOnce the child is laid out, the stack positions the child\naccording to the top, right, bottom, and left properties of their\n[StackParentData]. For example, if the bottom value is 10.0, the\nbottom edge of the child will be inset 10.0 pixels from the bottom\nedge of the stack. If the child extends beyond the bounds of the\nstack, the stack will clip the child's painting to the bounds of\nthe stack.\n\nSee also:\n\n * [RenderFlow]", "detail": "", "kind": 7, "label": "RenderStack" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIntrinsicWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this render object can result in a layout that is O(N²) in the\ndepth of the tree.", "detail": "", "kind": 7, "label": "RenderIntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFloatingPersistentHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which shrinks and scrolls like a\n[RenderSliverScrollingPersistentHeader], but immediately comes back when the\nuser scrolls in the reverse direction.\n\nSee also:\n\n * [RenderSliverFloatingPinnedPersistentHeader], which is similar but sticks\n to the start of the viewport rather than scrolling off.", "detail": "", "kind": 7, "label": "RenderSliverFloatingPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipRRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using a rounded rectangle.\n\nBy default, [RenderClipRRect] uses its own bounds as the base rectangle for\nthe clip, but the size and location of the clip can be customized using a\ncustom [clipper].", "detail": "", "kind": 7, "label": "RenderClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Summary information about a [SemanticsNode] object.\n\nA semantics node might [SemanticsNode.mergeAllDescendantsIntoThisNode],\nwhich means the individual fields on the semantics node don't fully describe\nthe semantics at that node. This data structure contains the full semantics\nfor the node.\n\nTypically obtained from [SemanticsNode.getSemanticsData].", "detail": "", "kind": 7, "label": "SemanticsData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderOpacity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.", "detail": "", "kind": 7, "label": "RenderOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerBoxParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Abstract ParentData subclass for RenderBox subclasses that want the\nContainerRenderObjectMixin.\n\nThis is a convenience class that mixes in the relevant classes with\nthe relevant type arguments.", "detail": "", "kind": 7, "label": "ContainerBoxParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnimatedSizeState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RenderAnimatedSize] can be in exactly one of these states.", "detail": "", "kind": 13, "label": "RenderAnimatedSizeState" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWithChildMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Generic mixin for render objects with one child.\n\nProvides a child model for a render object subclass that has a unique child.", "detail": "", "kind": 7, "label": "RenderObjectWithChildMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliver", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for the render objects that implement scroll effects in viewports.\n\nA [RenderViewport] has a list of child slivers. Each sliver — literally a\nslice of the viewport's contents — is laid out in turn, covering the\nviewport in the process. (Every sliver is laid out each time, including\nthose that have zero extent because they are \"scrolled off\" or are beyond\nthe end of the viewport.)\n\nSlivers participate in the _sliver protocol_, wherein during [layout] each\nsliver receives a [SliverConstraints] object and computes a corresponding\n[SliverGeometry] that describes where it fits in the viewport. This is\nanalogous to the box protocol used by [RenderBox], which gets a\n[BoxConstraints] as input and computes a [Size].\n\nSlivers have a leading edge, which is where the position described by\n[SliverConstraints.scrollOffset] for this sliver begins. Slivers have\nseveral dimensions, the primary of which is [SliverGeometry.paintExtent],\nwhich describes the extent of the sliver along the main axis, starting from\nthe leading edge, reaching either the end of the viewport or the end of the\nsliver, whichever comes first.\n\nSlivers can change dimensions based on the changing constraints in a\nnon-linear fashion, to achieve various scroll effects. For example, the\nvarious [RenderSliverPersistentHeader] subclasses, on which [SliverAppBar]\nis based, achieve effects such as staying visible despite the scroll offset,\nor reappearing at different offsets based on the user's scroll direction\n([SliverConstraints.userScrollDirection]).\n\n## Writing a RenderSliver subclass\n\nSlivers can have sliver children, or children from another coordinate\nsystem, typically box children. (For details on the box protocol, see\n[RenderBox].) Slivers can also have different child models, typically having\neither one child, or a list of children.\n\n### Examples of slivers\n\nA good example of a sliver with a single child that is also itself a sliver\nis [RenderSliverPadding], which indents its child. A sliver-to-sliver render\nobject such as this must construct a [SliverConstraints] object for its\nchild, then must take its child's [SliverGeometry] and use it to form its\nown [geometry].\n\nThe other common kind of one-child sliver is a sliver that has a single\n[RenderBox] child. An example of that would be [RenderSliverToBoxAdapter],\nwhich lays out a single box and sizes itself around the box. Such a sliver\nmust use its [SliverConstraints] to create a [BoxConstraints] for the\nchild, lay the child out (using the child's [layout] method), and then use\nthe child's [RenderBox.size] to generate the sliver's [SliverGeometry].\n\nThe most common kind of sliver though is one with multiple children. The\nmost straight-forward example of this is [RenderSliverList], which arranges\nits children one after the other in the main axis direction. As with the\none-box-child sliver case, it uses its [constraints] to create a\n[BoxConstraints] for the children, and then it uses the aggregate\ninformation from all its children to generate its [geometry]. Unlike the\none-child cases, however, it is judicious in which children it actually lays\nout (and later paints). If the scroll offset is 1000 pixels, and it\npreviously determined that the first three children are each 400 pixels\ntall, then it will skip the first two and start the layout with its third\nchild.\n\n### Layout\n\nAs they are laid out, slivers decide their [geometry], which includes their\nsize ([SliverGeometry.paintExtent]) and the position of the next sliver\n([SliverGeometry.layoutExtent]), as well as the position of each of their\nchildren, based on the input [constraints] from the viewport such as the\nscroll offset ([SliverConstraints.scrollOffset]).\n\nFor example, a sliver that just paints a box 100 pixels high would say its\n[SliverGeometry.paintExtent] was 100 pixels when the scroll offset was zero,\nbut would say its [SliverGeometry.paintExtent] was 25 pixels when the scroll\noffset was 75 pixels, and would say it was zero when the scroll offset was\n100 pixels or more. (This is assuming that\n[SliverConstraints.remainingPaintExtent] was more than 100 pixels.)\n\nThe various dimensions that are provided as input to this system are in the\n[constraints]. They are described in detail in the documentation for the\n[SliverConstraints] class.\n\nThe [performLayout] function must take these [constraints] and create a\n[SliverGeometry] object that it must then assign to the [geometry] property.\nThe different dimensions of the geometry that can be configured are\ndescribed in detail in the documentation for the [SliverGeometry] class.\n\n### Painting\n\nIn addition to implementing layout, a sliver must also implement painting.\nThis is achieved by overriding the [paint] method.\n\nThe [paint] method is called with an [Offset] from the [Canvas] origin to\nthe top-left corner of the sliver, _regardless of the axis direction_.\n\nSubclasses should also override [applyPaintTransform] to provide the\n[Matrix4] describing the position of each child relative to the sliver.\n(This is used by, among other things, the accessibility layer, to determine\nthe bounds of the child.)\n\n### Hit testing\n\nTo implement hit testing, either override the [hitTestSelf] and\n[hitTestChildren] methods, or, for more complex cases, instead override the\n[hitTest] method directly.\n\nTo actually react to pointer events, the [handleEvent] method may be\nimplemented. By default it does nothing. (Typically gestures are handled by\nwidgets in the box protocol, not by slivers directly.)\n\n### Helper methods\n\nThere are a number of methods that a sliver should implement which will make\nthe other methods easier to implement. Each method listed below has detailed\ndocumentation. In addition, the [RenderSliverHelpers] class can be used to\nmix in some helpful methods.\n\n#### childScrollOffset\n\nIf the subclass positions children anywhere other than at scroll offset\nzero, it should override [childScrollOffset]. For example,\n[RenderSliverList] and [RenderSliverGrid] override this method, but\n[RenderSliverToBoxAdapter] does not.\n\nThis is used by, among other things, [Scrollable.ensureVisible].\n\n#### childMainAxisPosition\n\nSubclasses should implement [childMainAxisPosition] to describe where their\nchildren are positioned.\n\n#### childCrossAxisPosition\n\nIf the subclass positions children in the cross-axis at a position other\nthan zero, then it should override [childCrossAxisPosition]. For example\n[RenderSliverGrid] overrides this method.", "detail": "", "kind": 7, "label": "RenderSliver" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContextCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for painting into a [PaintingContext].\n\nThe `offset` argument is the offset from the origin of the coordinate system\nof the [PaintingContext.canvas] to the coordinate system of the callee.\n\nUsed by many of the methods of [PaintingContext].", "detail": "(PaintingContext context, Offset offset) → void", "kind": 7, "label": "PaintingContextCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderOffstage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Lays the child out as if it was in the tree, but without painting anything,\nwithout making the child available for hit testing, and without taking any\nroom in the parent.", "detail": "", "kind": 7, "label": "RenderOffstage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFloatingPinnedPersistentHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which shrinks and then remains pinned to\nthe start of the viewport like a [RenderSliverPinnedPersistentHeader], but\nimmediately grows when the user scrolls in the reverse direction.\n\nSee also:\n\n * [RenderSliverFloatingPersistentHeader], which is similar but scrolls off\n the top rather than sticking to it.", "detail": "", "kind": 7, "label": "RenderSliverFloatingPinnedPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the amount of space occupied by a [RenderSliver].\n\nA sliver can occupy space in several different ways, which is why this class\ncontains multiple values.", "detail": "", "kind": 7, "label": "SliverGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSizedOverflowBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is a specific size but passes its original constraints\nthrough to its child, which it allows to overflow.\n\nIf the child's resulting size differs from this render object's size, then\nthe child is aligned according to the [alignment] property.\n\nSee also:\n\n * [RenderUnconstrainedBox] for a render object that allows its children\n to render themselves unconstrained, expands to fit them, and considers\n overflow to be an error.\n * [RenderConstrainedOverflowBox] for a render object that imposes\n different constraints on its child than it gets from its parent,\n possibly allowing the child to overflow the parent.", "detail": "", "kind": 7, "label": "RenderSizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverWithKeepAliveMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This class exists to dissociate [KeepAlive] from [RenderSliverMultiBoxAdaptor].\n\n[RenderSliverWithKeepAliveMixin.setupParentData] must be implemented to use\na parentData class that uses the right mixin or whatever is appropriate.", "detail": "", "kind": 7, "label": "RenderSliverWithKeepAliveMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnimatedOpacity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child partially transparent, driven from an [Animation].\n\nThis is a variant of [RenderOpacity] that uses an [Animation<double>] rather\nthan a [double] to control the opacity.", "detail": "", "kind": 7, "label": "RenderAnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsOwner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Owns [SemanticsNode] objects and notifies listeners of changes to the\nrender tree semantics.\n\nTo listen for semantic updates, call [PipelineOwner.ensureSemantics] to\nobtain a [SemanticsHandle]. This will create a [SemanticsOwner] if\nnecessary.", "detail": "", "kind": 7, "label": "SemanticsOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data collected during a hit test about a specific [HitTestTarget].\n\nSubclass this object to pass additional information from the hit test phase\nto the event propagation phase.", "detail": "", "kind": 7, "label": "HitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderTable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A table where the columns and rows are sized to fit the contents of the cells.", "detail": "", "kind": 7, "label": "RenderTable" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIgnorePointer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is invisible during hit testing.\n\nWhen [ignoring] is true, this render object (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because its render\nobject returns false from [hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [RenderAbsorbPointer], which takes the pointer events but prevents any\n nodes in the subtree from seeing them.", "detail": "", "kind": 7, "label": "RenderIgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image in the render tree.\n\nThe render image attempts to find a size for itself that fits in the given\nconstraints and preserves the image's intrinsic aspect ratio.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "RenderImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[ParentData] for use with [RenderListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnounceSemanticsEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement.\n\nThis should be used for announcement that are not seamlessly announced by\nthe system as a result of a UI state change.\n\nFor example a camera application can use this method to make accessibility\nannouncements regarding objects in the viewfinder.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "AnnounceSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPhysicalShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a physical shape layer that clips its child to a [Path].\n\nA physical shape layer casts a shadow based on its [elevation].\n\nSee also:\n\n * [RenderPhysicalModel], which is optimized for rounded rectangles and\n circles.", "detail": "", "kind": 7, "label": "RenderPhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrdinalSortKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [SemanticsSortKey] that sorts simply based on the `double` value it is\ngiven.\n\nThe [OrdinalSortKey] compares itself with other [OrdinalSortKey]s\nto sort based on the order it is given.\n\nThe ordinal value `order` is typically a whole number, though it can be\nfractional, e.g. in order to fit between two other consecutive whole\nnumbers. The value must be finite (it cannot be [double.nan],\n[double.infinity], or [double.negativeInfinity]).", "detail": "", "kind": 7, "label": "OrdinalSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderUiKitView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object for an iOS UIKit UIView.\n\nEmbedding UIViews is still in release preview, to enable the preview for an iOS app add a boolean\nfield with the key 'io.flutter.embedded_views_preview' and the value set to 'YES' to the\napplication's Info.plist file. A list of open issued with embedding UIViews is available on\n[Github](https://github.com/flutter/flutter/issues?q=is%3Aopen+is%3Aissue+label%3A%22a%3A+platform-views%22+label%3A%22%E2%8C%BA%E2%80%AC+platform-ios%22)\n\n[RenderUiKitView] is responsible for sizing and displaying an iOS\n[UIView](https://developer.apple.com/documentation/uikit/uiview).\n\nUIViews are added as sub views of the FlutterView and are composited by Quartz.\n\n\n\nSee also:\n\n * [UiKitView] which is a widget that is used to show a UIView.\n * [PlatformViewsService] which is a service for controlling platform views.", "detail": "", "kind": 7, "label": "RenderUiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderingFlutterBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A concrete binding for applications that use the Rendering framework\ndirectly. This is the glue that binds the framework to the Flutter engine.\n\nYou would only use this binding if you are writing to the\nrendering layer directly. If you are writing to a higher-level\nlibrary, such as the Flutter Widgets library, then you would use\nthat layer's binding.\n\nSee also [BindingBase].", "detail": "", "kind": 7, "label": "RenderingFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderRepaintBoundary", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a separate display list for its child.\n\nThis render object creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree. Specifically, when the child does not\nrepaint but its parent does, we can re-use the display list we recorded\npreviously. Similarly, when the child repaints but the surround tree does\nnot, we can re-record its display list without re-recording the display list\nfor the surround tree.\n\nIn some cases, it is necessary to place _two_ (or more) repaint boundaries\nto get a useful effect. Consider, for example, an e-mail application that\nshows an unread count and a list of e-mails. Whenever a new e-mail comes in,\nthe list would update, but so would the unread count. If only one of these\ntwo parts of the application was behind a repaint boundary, the entire\napplication would repaint each time. On the other hand, if both were behind\na repaint boundary, a new e-mail would only change those two parts of the\napplication and the rest of the application would not repaint.\n\nTo tell if a particular RenderRepaintBoundary is useful, run your\napplication in checked mode, interacting with it in typical ways, and then\ncall [debugDumpRenderTree]. Each RenderRepaintBoundary will include the\nratio of cases where the repaint boundary was useful vs the cases where it\nwas not. These counts can also be inspected programmatically using\n[debugAsymmetricPaintCount] and [debugSymmetricPaintCount] respectively.", "detail": "", "kind": 7, "label": "RenderRepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EnumProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An property than displays enum values tersely.\n\nThe enum value is displayed with the class name stripped. For example:\n[HitTestBehavior.deferToChild] is shown as `deferToChild`.\n\nSee also:\n\n * [DiagnosticsProperty] which documents named parameters common to all\n [DiagnosticsProperty].", "detail": "", "kind": 7, "label": "EnumProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAbsorbPointer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this render object prevents its subtree from\nreceiving pointer events by terminating hit testing at itself. It still\nconsumes space during layout and paints its child as usual. It just prevents\nits children from being the target of located events, because its render\nobject returns true from [hitTest].\n\nSee also:\n\n * [RenderIgnorePointer], which has the opposite effect: removing the\n subtree from considering entirely for the purposes of hit testing.", "detail": "", "kind": 7, "label": "RenderAbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MoveCursorHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [SemanticsAction]s that move the cursor.\n\nIf `extendSelection` is set to true the cursor movement should extend the\ncurrent selection or (if nothing is currently selected) start a selection.", "detail": "(bool extendSelection) → void", "kind": 7, "label": "MoveCursorHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property with a [value] of type [T].\n\nIf the default `value.toString()` does not provide an adequate description\nof the value, specify `description` defining a custom description.\n\nThe [showSeparator] property indicates whether a separator should be placed\nbetween the property [name] and its [value].", "detail": "", "kind": 7, "label": "DiagnosticsProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverLogicalParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by parents of slivers that position their\nchildren using layout offsets.\n\nThis data structure is optimized for fast layout. It is best used by parents\nthat expect to have many children whose relative positions don't change even\nwhen the scroll offset does.", "detail": "", "kind": 7, "label": "SliverLogicalParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data used by [RenderTable] for its children.", "detail": "", "kind": 7, "label": "TableCellParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderConstrainedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Imposes additional constraints on its child.\n\nA render constrained box proxies most functions in the render box protocol\nto its child, except that when laying out its child, it tightens the\nconstraints provided by its parent by enforcing the [additionalConstraints]\nas well.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[additionalConstraints].", "detail": "", "kind": 7, "label": "RenderConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[ParentData] used by [RenderCustomMultiChildLayoutBox].", "detail": "", "kind": 7, "label": "MultiChildLayoutParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderLeaderLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides an anchor for a [RenderFollowerLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the corresponding widget.\n * [LeaderLayer], the layer that this render object creates.", "detail": "", "kind": 7, "label": "RenderLeaderLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TooltipSemanticsEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement of a tooltip.\n\nThis is only used by Android to announce tooltip values.", "detail": "", "kind": 7, "label": "TooltipSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A node that represents some semantic data.\n\nThe semantics tree is maintained during the semantics phase of the pipeline\n(i.e., during [PipelineOwner.flushSemantics]), which happens after\ncompositing. The semantics tree is then uploaded into the engine for use\nby assistive technology.", "detail": "", "kind": 7, "label": "SemanticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNodeVisitor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called for each [SemanticsNode].\n\nReturn false to stop visiting nodes.\n\nUsed by [SemanticsNode.visitChildren].", "detail": "(SemanticsNode node) → bool", "kind": 7, "label": "SemanticsNodeVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewHitTestBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How an embedded platform view behave during hit tests.", "detail": "", "kind": 13, "label": "PlatformViewHitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderWrap].", "detail": "", "kind": 7, "label": "WrapParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverPinnedPersistentHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which never scrolls off the viewport in\nthe positive scroll direction, and which first scrolls on at a full size but\nthen shrinks as the viewport continues to scroll.\n\nThis sliver avoids overlapping other earlier slivers where possible.", "detail": "", "kind": 7, "label": "RenderSliverPinnedPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderProxyBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for render objects that resemble their children.\n\nA proxy box has a single child and simply mimics all the properties of that\nchild by calling through to the child for each function in the render box\nprotocol. For example, a proxy box determines its size by asking its child\nto layout with the same constraints and then matching the size.\n\nA proxy box isn't useful on its own because you might as well just replace\nthe proxy box with its child. However, RenderProxyBox is a useful base class\nfor render objects that wish to mimic most, but not all, of the properties\nof their child.", "detail": "", "kind": 7, "label": "RenderProxyBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).\n\nUsed by [RenderEditable.onSelectionChanged].", "detail": "(TextSelection selection, RenderEditable renderObject, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RevealedOffset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Return value for [RenderAbstractViewport.getOffsetToReveal].\n\nIt indicates the [offset] required to reveal an element in a viewport and\nthe [rect] position said element would have in the viewport at that\n[offset].", "detail": "", "kind": 7, "label": "RevealedOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data used by [RenderBox] and its subclasses.", "detail": "", "kind": 7, "label": "BoxParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccessibilityFeatures", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Additional accessibility features that may be enabled by the platform.\n\nIt is not possible to enable these settings from Flutter, instead they are\nused by the platform to indicate that additional accessibility features are\nenabled.", "detail": "", "kind": 7, "label": "AccessibilityFeatures" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilterLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a filter to the existing contents of the scene.", "detail": "", "kind": 7, "label": "BackdropFilterLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxHitTestEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A hit test entry used by [RenderBox].", "detail": "", "kind": 7, "label": "BoxHitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextureBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture box refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture boxes are repainted autonomously as dictated by the backend (e.g. on\narrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by the parent, and the texture is\nautomatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "TextureBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a given transformation matrix to its\nchildren.\n\nThis class inherits from [OffsetLayer] to make it one of the layers that\ncan be used at the root of a [RenderObject] hierarchy.", "detail": "", "kind": 7, "label": "TransformLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderShrinkWrappingViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is bigger on the inside and shrink wraps its children\nin the main axis.\n\n[RenderShrinkWrappingViewport] displays a subset of its children according\nto its own dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[RenderShrinkWrappingViewport] differs from [RenderViewport] in that\n[RenderViewport] expands to fill the main axis whereas\n[RenderShrinkWrappingViewport] sizes itself to match its children in the\nmain axis. This shrink wrapping behavior is expensive because the children,\nand hence the viewport, could potentially change size whenever the [offset]\nchanges (e.g., because of a collapsing header).\n\n[RenderShrinkWrappingViewport] cannot contain [RenderBox] children directly.\nInstead, use a [RenderSliverList], [RenderSliverFixedExtentList],\n[RenderSliverGrid], or a [RenderSliverToBoxAdapter], for example.\n\nSee also:\n\n * [RenderViewport], a viewport that does not shrink-wrap its contents.\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which allows a [RenderBox] object to be\n placed inside a [RenderSliver] (the opposite of this class).", "detail": "", "kind": 7, "label": "RenderShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSemanticsAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier of a custom semantics action.\n\nCustom semantics actions can be provided to make complex user\ninteractions more accessible. For instance, if an application has a\ndrag-and-drop list that requires the user to press and hold an item\nto move it, users interacting with the application using a hardware\nswitch may have difficulty. This can be made accessible by creating custom\nactions and pairing them with handlers that move a list item up or down in\nthe list.\n\nIn Android, these actions are presented in the local context menu. In iOS,\nthese are presented in the radial context menu.\n\nLocalization and text direction do not automatically apply to the provided\nlabel or hint.\n\nInstances of this class should either be instantiated with const or\nnew instances cached in static fields.\n\nSee also:\n\n * [SemanticsProperties], where the handler for a custom action is provided.", "detail": "", "kind": 7, "label": "CustomSemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipPath", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using a path.\n\nTakes a delegate whose primary method returns a path that should\nbe used to prevent the child from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized render objects:\n\n * To clip to a rectangle, consider [RenderClipRect].\n * To clip to an oval or circle, consider [RenderClipOval].\n * To clip to a rounded rectangle, consider [RenderClipRRect].", "detail": "", "kind": 7, "label": "RenderClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestResult", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The result of performing a hit test.", "detail": "", "kind": 7, "label": "HitTestResult" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerRenderObjectMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Generic mixin for render objects with a list of children.\n\nProvides a child model for a render object subclass that has a doubly-linked\nlist of children.", "detail": "", "kind": 7, "label": "ContainerRenderObjectMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugOverflowIndicatorMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An mixin indicator that is drawn when a [RenderObject] overflows its\ncontainer.\n\nThis is used by some RenderObjects that are containers to show where, and by\nhow much, their children overflow their containers. These indicators are\ntypically only shown in a debug build (where the call to\n[paintOverflowIndicator] is surrounded by an assert).\n\nThis class will also print a debug message to the console when the container\noverflows. It will print on the first occurrence, and once after each time that\n[reassemble] is called.\n\n\n```dart\nclass MyRenderObject extends RenderAligningShiftedBox with DebugOverflowIndicatorMixin {\n MyRenderObject({\n AlignmentGeometry alignment,\n TextDirection textDirection,\n RenderBox child,\n }) : super.mixin(alignment, textDirection, child);\n\n Rect _containerRect;\n Rect _childRect;\n\n @override\n void performLayout() {\n // ...\n final BoxParentData childParentData = child.parentData;\n _containerRect = Offset.zero & size;\n _childRect = childParentData.offset & child.size;\n }\n\n @override\n void paint(PaintingContext context, Offset offset) {\n // Do normal painting here...\n // ...\n\n assert(() {\n paintOverflowIndicator(context, offset, _containerRect, _childRect);\n return true;\n }());\n }\n}\n```\n\nSee also:\n\n * [RenderUnconstrainedBox] and [RenderFlex] for examples of classes that use this indicator mixin.", "detail": "", "kind": 7, "label": "DebugOverflowIndicatorMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAndroidView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object for an Android view.\n\nRequires Android API level 20 or greater.\n\n[RenderAndroidView] is responsible for sizing, displaying and passing touch events to an\nAndroid [View](https://developer.android.com/reference/android/view/View).\n\nThe render object's layout behavior is to fill all available space, the parent of this object must\nprovide bounded layout constraints.\n\nThe render object participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified with factories in the `gestureRecognizers` constructor parameter or\nby calling `updateGestureRecognizers`. If the set of gesture recognizers is empty, the gesture\nwill be dispatched to the platform view iff it was not claimed by any other gesture recognizer.\n\nSee also:\n\n * [AndroidView] which is a widget that is used to show an Android view.\n * [PlatformViewsService] which is a service for controlling platform views.", "detail": "", "kind": 7, "label": "RenderAndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderErrorBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object used as a placeholder when an error occurs.\n\nThe box will be painted in the color given by the\n[RenderErrorBox.backgroundColor] static property.\n\nA message can be provided. To simplify the class and thus help reduce the\nlikelihood of this class itself being the source of errors, the message\ncannot be changed once the object has been created. If provided, the text\nwill be painted on top of the background, using the styles given by the\n[RenderErrorBox.textStyle] and [RenderErrorBox.paragraphStyle] static\nproperties.\n\nAgain to help simplify the class, this box tries to be 100000.0 pixels wide\nand high, to approximate being infinitely high but without using infinities.", "detail": "", "kind": 7, "label": "RenderErrorBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSemanticsGestureHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Listens for the specified gestures from the semantics server (e.g.\nan accessibility tool).", "detail": "", "kind": 7, "label": "RenderSemanticsGestureHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderListBody", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays its children sequentially along a given axis, forcing them to the\ndimensions of the parent in the other axis.\n\nThis layout algorithm arranges its children linearly along the main axis\n(either horizontally or vertically). In the cross axis, children are\nstretched to match the box's cross-axis extent. In the main axis, children\nare given unlimited space and the box expands its main axis to contain all\nits children. Because [RenderListBody] boxes expand in the main axis, they\nmust be given unlimited space in the main axis, typically by being contained\nin a viewport with a scrolling direction that matches the box's main axis.", "detail": "", "kind": 7, "label": "RenderListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderShaderMask", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a mask generated by a [Shader] to its child.\n\nFor example, [RenderShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.", "detail": "", "kind": 7, "label": "RenderShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFillViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains multiple box children that each fill the viewport.\n\n[RenderSliverFillViewport] places its children in a linear array along the\nmain axis. Each child is sized to fill the viewport, both in the main and\ncross axis. A [viewportFraction] factor can be provided to size the children\nto a multiple of the viewport's main axis dimension (typically a fraction\nless than 1.0).\n\nSee also:\n\n * [RenderSliverFillRemaining], which sizes the children based on the\n remaining space rather than the viewport itself.\n * [RenderSliverFixedExtentList], which has a configurable [itemExtent].\n * [RenderSliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "RenderSliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderConstrainedOverflowBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nA render overflow box proxies most functions in the render box protocol to\nits child, except that when laying out its child, it passes constraints\nbased on the minWidth, maxWidth, minHeight, and maxHeight fields instead of\njust passing the parent's constraints in. Specifically, it overrides any of\nthe equivalent fields on the constraints given by the parent with the\nconstraints given by these fields for each such field that is not null. It\nthen sizes itself based on the parent's constraints' maxWidth and maxHeight,\nignoring the child's dimensions.\n\nFor example, if you wanted a box to always render 50 pixels high, regardless\nof where it was rendered, you would wrap it in a\nRenderConstrainedOverflowBox with minHeight and maxHeight set to 50.0.\nGenerally speaking, to avoid confusing behavior around hit testing, a\nRenderConstrainedOverflowBox should usually be wrapped in a RenderClipRect.\n\nThe child is positioned according to [alignment]. To position a smaller\nchild inside a larger parent, use [RenderPositionedBox] and\n[RenderConstrainedBox] rather than RenderConstrainedOverflowBox.\n\nSee also:\n\n * [RenderUnconstrainedBox] for a render object that allows its children\n to render themselves unconstrained, expands to fit them, and considers\n overflow to be an error.\n * [RenderSizedOverflowBox], a render object that is a specific size but\n passes its original constraints through to its child, which it allows to\n overflow.", "detail": "", "kind": 7, "label": "RenderConstrainedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RendererBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the render tree and the Flutter engine.", "detail": "", "kind": 7, "label": "RendererBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPointerListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Calls callbacks in response to pointer events.\n\nIf it has a child, defers to the child for sizing behavior.\n\nIf it does not have a child, grows to fit the parent-provided constraints.\n\nThe [onPointerEnter], [onPointerHover], and [onPointerExit] events are only\nrelevant to and fired by pointers that can hover (e.g. mouse pointers, but\nnot most touch pointers).", "detail": "", "kind": 7, "label": "RenderPointerListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAspectRatio", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Attempts to size the child to a specific aspect ratio.\n\nThe render object first tries the largest width permitted by the layout\nconstraints. The height of the render object is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The render object will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the render object would\ncontinue iterating through the constraints. If the render object does not\nfind a feasible size after consulting each constraint, the render object\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.", "detail": "", "kind": 7, "label": "RenderAspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetailsForRendering", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [FlutterErrorDetails] with extra fields for the rendering\nlibrary.", "detail": "", "kind": 7, "label": "FlutterErrorDetailsForRendering" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverScrollingPersistentHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which scrolls normally, except that when\nit hits the leading edge (typically the top) of the viewport, it shrinks to\na minimum size before continuing to scroll.\n\nThis sliver makes no effort to avoid overlapping other content.", "detail": "", "kind": 7, "label": "RenderSliverScrollingPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectVisitor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called for each [RenderObject].\n\nUsed by [RenderObject.visitChildren] and [RenderObject.visitChildrenForSemantics].", "detail": "(RenderObject child) → void", "kind": 7, "label": "RenderObjectVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIndexedStack", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements the same layout algorithm as RenderStack but only paints the child\nspecified by index.\n\nAlthough only one child is displayed, the cost of the layout algorithm is\nstill O(N), like an ordinary stack.", "detail": "", "kind": 7, "label": "RenderIndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PipelineOwner", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pipeline owner manages the rendering pipeline.\n\nThe pipeline owner provides an interface for driving the rendering pipeline\nand stores the state about which render objects have requested to be visited\nin each stage of the pipeline. To flush the pipeline, call the following\nfunctions in order:\n\n1. [flushLayout] updates any render objects that need to compute their\n layout. During this phase, the size and position of each render\n object is calculated. Render objects might dirty their painting or\n compositing state during this phase.\n2. [flushCompositingBits] updates any render objects that have dirty\n compositing bits. During this phase, each render object learns whether\n any of its children require compositing. This information is used during\n the painting phase when selecting how to implement visual effects such as\n clipping. If a render object has a composited child, its needs to use a\n [Layer] to create the clip in order for the clip to apply to the\n composited child (which will be painted into its own [Layer]).\n3. [flushPaint] visits any render objects that need to paint. During this\n phase, render objects get a chance to record painting commands into\n [PictureLayer]s and construct other composited [Layer]s.\n4. Finally, if semantics are enabled, [flushSemantics] will compile the\n semantics for the render objects. This semantic information is used by\n assistive technology to improve the accessibility of the render tree.\n\nThe [RendererBinding] holds the pipeline owner for the render objects that\nare visible on screen. You can create other pipeline owners to manage\noff-screen objects, which can flush their pipelines independently of the\non-screen render objects.", "detail": "", "kind": 7, "label": "PipelineOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UpdateLiveRegionEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers a polite announcement of a live region.\n\nThis requires that the semantics node has already been marked as a live\nregion. On Android, TalkBack will make a verbal announcement, as long as\nthe label of the semantics node has changed since the last live region\nupdate. iOS does not currently support this event.\n\nSee also:\n\n * [SemanticsFlag.liveRegion], for a description of live regions.", "detail": "", "kind": 7, "label": "UpdateLiveRegionEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAligningShiftedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Abstract class for one-child-layout render boxes that use a\n[AlignmentGeometry] to align their children.", "detail": "", "kind": 7, "label": "RenderAligningShiftedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OpacityLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that makes its children partially transparent.\n\nWhen debugging, setting [debugDisableOpacityLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "OpacityLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderStack].", "detail": "", "kind": 7, "label": "StackParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFixedExtentList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[RenderSliverFixedExtentList] places its children in a linear array along\nthe main axis starting at offset zero and without gaps. Each child is forced\nto have the [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[RenderSliverFixedExtentList] is more efficient than [RenderSliverList]\nbecause [RenderSliverFixedExtentList] does not need to perform layout on its\nchildren to obtain their extent in the main axis.\n\nSee also:\n\n * [RenderSliverList], which does not require its children to have the same\n extent in the main axis.\n * [RenderSliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [RenderSliverFillRemaining], which determines the [itemExtent] based on\n [SliverConstraints.remainingPaintExtent].", "detail": "", "kind": 7, "label": "RenderSliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FollowerLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a transformation matrix to its children such\nthat they are positioned to match a [LeaderLayer].\n\nIf any of the ancestors of this layer have a degenerate matrix (e.g. scaling\nby zero), then the [FollowerLayer] will not be able to transform its child\nto the coordinate space of the [LeaderLayer].\n\nA [linkedOffset] property can be provided to further offset the child layer\nfrom the leader layer, for example if the child is to follow the linked\nlayer at a distance rather than directly overlapping it.", "detail": "", "kind": 7, "label": "FollowerLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsHandle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A reference to the semantics tree.\n\nThe framework maintains the semantics tree (used for accessibility and\nindexing) only when there is at least one client holding an open\n[SemanticsHandle].\n\nThe framework notifies the client that it has updated the semantics tree by\ncalling the [listener] callback. When the client no longer needs the\nsemantics tree, the client can call [dispose] on the [SemanticsHandle],\nwhich stops these callbacks and closes the [SemanticsHandle]. When all the\noutstanding [SemanticsHandle] objects are closed, the framework stops\nupdating the semantics tree.\n\nTo obtain a [SemanticsHandle], call [PipelineOwner.ensureSemantics] on the\n[PipelineOwner] for the render tree from which you wish to read semantics.\nYou can obtain the [PipelineOwner] using the [RenderObject.owner] property.", "detail": "", "kind": 7, "label": "SemanticsHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFractionallySizedOverflowBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes its child to a fraction of the total available space.\n\nFor both its width and height, this render object imposes a tight\nconstraint on its child that is a multiple (typically less than 1.0) of the\nmaximum constraint it received from its parent on that axis. If the factor\nfor a given axis is null, then the constraints from the parent are just\npassed through instead.\n\nIt then tries to size itself to the size of its child. Where this is not\npossible (e.g. if the constraints from the parent are themselves tight), the\nchild is aligned according to [alignment].", "detail": "", "kind": 7, "label": "RenderFractionallySizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIntrinsicHeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this render object can result in a layout that is O(N²) in the\ndepth of the tree.", "detail": "", "kind": 7, "label": "RenderIntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridRegularTileLayout", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [SliverGridLayout] that uses equally sized and spaced tiles.\n\nRather that providing a grid with a [SliverGridLayout] directly, you instead\nprovide the grid a [SliverGridDelegate], which can compute a\n[SliverGridLayout] given the current [SliverConstraints].\n\nThis layout is used by [SliverGridDelegateWithFixedCrossAxisCount] and\n[SliverGridDelegateWithMaxCrossAxisExtent].\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which uses this layout.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which uses this layout.\n * [SliverGridLayout], which represents an arbitrary tile layout.\n * [SliverGridGeometry], which represents the size and position of a single\n tile in a grid.\n * [SliverGridDelegate.getLayout], which returns this object to describe the\n delegate's layout.\n * [RenderSliverGrid], which uses this class during its\n [RenderSliverGrid.performLayout] method.", "detail": "", "kind": 7, "label": "SliverGridRegularTileLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsHintOverrides", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides hint values which override the default hints on supported\nplatforms.\n\nOn iOS, these values are always ignored.", "detail": "", "kind": 7, "label": "SemanticsHintOverrides" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerParentDataMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data to support a doubly-linked list of children.", "detail": "", "kind": 7, "label": "ContainerParentDataMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderLimitedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Constrains the child's [BoxConstraints.maxWidth] and\n[BoxConstraints.maxHeight] if they're otherwise unconstrained.\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).", "detail": "", "kind": 7, "label": "RenderLimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderCustomPaint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [RenderCustomPaint] first asks its [painter] to paint\non the current canvas, then it paints its child, and then, after painting\nits child, it asks its [foregroundPainter] to paint. The coordinate system of\nthe canvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing or implementing [CustomPainter].\n\nBecause custom paint calls its painters during paint, you cannot mark the\ntree as needing a new layout during the callback (the layout for this frame\nhas already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [preferredSize], which\ndefaults to [Size.zero].\n\nSee also:\n\n * [CustomPainter], the class that custom painter delegates should extend.\n * [Canvas], the API provided to custom painter delegates.", "detail": "", "kind": 7, "label": "RenderCustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFlow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements the flow layout algorithm.\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow.\n\nThe most efficient way to trigger a repaint of the flow is to supply a\nrepaint argument to the constructor of the [FlowDelegate]. The flow will\nlisten to this animation and repaint whenever the animation ticks, avoiding\nboth the build and layout phases of the pipeline.\n\nSee also:\n\n * [FlowDelegate]\n * [RenderStack]", "detail": "", "kind": 7, "label": "RenderFlow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Layer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer.\n\nDuring painting, the render tree generates a tree of composited layers that\nare uploaded into the engine and displayed by the compositor. This class is\nthe base class for all composited layers.\n\nMost layers can have their properties mutated, and layers can be moved to\ndifferent parents. The scene must be explicitly recomposited after such\nchanges are made; the layer tree does not maintain its own dirty state.\n\nTo composite the tree, create a [SceneBuilder] object, pass it to the\nroot [Layer] object's [addToScene] method, and then call\n[SceneBuilder.build] to obtain a [Scene]. A [Scene] can then be painted\nusing [Window.render].\n\nSee also:\n\n * [RenderView.compositeFrame], which implements this recomposition protocol\n for painting [RenderObject] trees on the display.", "detail": "", "kind": 7, "label": "Layer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFittedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].", "detail": "", "kind": 7, "label": "RenderFittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderFlow].\n\nThe [offset] property is ignored by [RenderFlow] and is always set to\n[Offset.zero]. Children of a [RenderFlow] are positioned using a\ntransformation matrix, which is private to the [RenderFlow]. To set the\nmatrix, use the [FlowPaintingContext.paintChild] function from an override\nof the [FlowDelegate.paintChildren] function.", "detail": "", "kind": 7, "label": "FlowParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapSemanticEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers tap semantic feedback.\n\nCurrently only honored on Android. Triggers a tap specific sound when\nTalkBack is enabled.", "detail": "", "kind": 7, "label": "TapSemanticEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegionLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer which annotates its children with a value.\n\nThese values can be retrieved using [Layer.find] with a given [Offset]. If\na [Size] is provided to this layer, then find will check if the provided\noffset is within the bounds of the layer.", "detail": "", "kind": 7, "label": "AnnotatedRegionLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextureLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that maps a backend texture to a rectangle.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture layer refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nOnce inserted into the layer tree, texture layers are repainted autonomously\nas dictated by the backend (e.g. on arrival of a video frame). Such\nrepainting generally does not involve executing Dart code.\n\nTexture layers are always leaves in the layer tree.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "TextureLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property describing a [double] [value] with an optional [unit] of measurement.\n\nNumeric formatting is optimized for debug message readability.", "detail": "", "kind": 7, "label": "DoubleProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CaretChangedHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the caret location changes.\n\nUsed by [RenderEditable.onCaretChanged].", "detail": "(Rect caretRect) → void", "kind": 7, "label": "CaretChangedHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderUnconstrainedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Renders a box, imposing no constraints on its child, allowing the child to\nrender at its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This box will then attempt to\nadopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the box, a warning will be printed on\nthe console, and black and yellow striped areas will appear where the\noverflow occurs.\n\nSee also:\n\n * [RenderConstrainedBox], which renders a box which imposes constraints\n on its child.\n * [RenderConstrainedOverflowBox], which renders a box that imposes different\n constraints on its child than it gets from its parent, possibly allowing\n the child to overflow the parent.\n * [RenderSizedOverflowBox], a render object that is a specific size but\n passes its original constraints through to its child, which it allows to\n overflow.", "detail": "", "kind": 7, "label": "RenderUnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBackdropFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a filter to the existing painted content and then paints [child].\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.", "detail": "", "kind": 7, "label": "RenderBackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSemanticsAnnotations", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Add annotations to the [SemanticsNode] for this subtree.", "detail": "", "kind": 7, "label": "RenderSemanticsAnnotations" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridLayout", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The size and position of all the tiles in a [RenderSliverGrid].\n\nRather that providing a grid with a [SliverGridLayout] directly, you instead\nprovide the grid a [SliverGridDelegate], which can compute a\n[SliverGridLayout] given the current [SliverConstraints].\n\nThe tiles can be placed arbitrarily, but it is more efficient to place tiles\nin roughly in order by scroll offset because grids reify a contiguous\nsequence of children.\n\nSee also:\n\n * [SliverGridRegularTileLayout], which represents a layout that uses\n equally sized and spaced tiles.\n * [SliverGridGeometry], which represents the size and position of a single\n tile in a grid.\n * [SliverGridDelegate.getLayout], which returns this object to describe the\n delegate's layout.\n * [RenderSliverGrid], which uses this class during its\n [RenderSliverGrid.performLayout] method.", "detail": "", "kind": 7, "label": "SliverGridLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFlex", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays its children in a one-dimensional array.\n\n## Layout algorithm\n\n_This section describes how the framework causes [RenderFlex] to position\nits children._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [RenderFlex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor with unbounded main axis\n constraints and the incoming cross axis constraints. If the\n [crossAxisAlignment] is [CrossAxisAlignment.stretch], instead use tight\n cross axis constraints that match the incoming max extent in the cross\n axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors according to their flex factor. For example, a child with a\n flex factor of 2.0 will receive twice the amount of main axis space as a\n child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [RenderFlex] is the maximum cross axis\n extent of the children (which will always satisfy the incoming\n constraints).\n5. The main axis extent of the [RenderFlex] is determined by the\n [mainAxisSize] property. If the [mainAxisSize] property is\n [MainAxisSize.max], then the main axis extent of the [RenderFlex] is the\n max extent of the incoming main axis constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the main axis extent of the [Flex]\n is the sum of the main axis extents of the children (subject to the\n incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Flex], the widget equivalent.\n * [Row] and [Column], direction-specific variants of [Flex].", "detail": "", "kind": 7, "label": "RenderFlex" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPhysicalContainerParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for slivers that have multiple children and that position their\nchildren using absolute coordinates.", "detail": "", "kind": 7, "label": "SliverPhysicalContainerParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerSignalEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerSignalEvent event) → void", "kind": 7, "label": "PointerSignalEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Constraints", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract set of layout constraints.\n\nConcrete layout models (such as box) will create concrete subclasses to\ncommunicate layout constraints between parents and children.\n\n## Writing a Constraints subclass\n\nWhen creating a new [RenderObject] subclass with a new layout protocol, one\nwill usually need to create a new [Constraints] subclass to express the\ninput to the layout algorithms.\n\nA [Constraints] subclass should be immutable (all fields final). There are\nseveral members to implement, in addition to whatever fields, constructors,\nand helper methods one may find useful for a particular layout protocol:\n\n* The [isTight] getter, which should return true if the object represents a\n case where the [RenderObject] class has no choice for how to lay itself\n out. For example, [BoxConstraints] returns true for [isTight] when both\n the minimum and maximum widths and the minimum and maximum heights are\n equal.\n\n* The [isNormalized] getter, which should return true if the object\n represents its data in its canonical form. Sometimes, it is possible for\n fields to be redundant with each other, such that several different\n representations have the same implications. For example, a\n [BoxConstraints] instance with its minimum width greater than its maximum\n width is equivalent to one where the maximum width is set to that minimum\n width (`2<w<1` is equivalent to `2<w<2`, since minimum constraints have\n priority). This getter is used by the default implementation of\n [debugAssertIsValid].\n\n* The [debugAssertIsValid] method, which should assert if there's anything\n wrong with the constraints object. (We use this approach rather than\n asserting in constructors so that our constructors can be `const` and so\n that it is possible to create invalid constraints temporarily while\n building valid ones.) See the implementation of\n [BoxConstraints.debugAssertIsValid] for an example of the detailed checks\n that can be made.\n\n* The [==] operator and the [hashCode] getter, so that constraints can be\n compared for equality. If a render object is given constraints that are\n equal, then the rendering library will avoid laying the object out again\n if it is not dirty.\n\n* The [toString] method, which should describe the constraints so that they\n appear in a usefully readable form in the output of [debugDumpRenderTree].", "detail": "", "kind": 7, "label": "Constraints" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPathLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composite layer that clips its children using a path.\n\nWhen debugging, setting [debugDisableClipLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "ClipPathLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderViewportBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for render objects that are bigger on the inside.\n\nThis render object provides the shared code for render objects that host\n[RenderSliver] render objects inside a [RenderBox]. The viewport establishes\nan [axisDirection], which orients the sliver's coordinate system, which is\nbased on scroll offsets rather than Cartesian coordinates.\n\nThe viewport also listens to an [offset], which determines the\n[SliverConstraints.scrollOffset] input to the sliver layout protocol.\n\nSubclasses typically override [performLayout] and call\n[layoutChildSequence], perhaps multiple times.\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which allows a [RenderBox] object to be\n placed inside a [RenderSliver] (the opposite of this class).", "detail": "", "kind": 7, "label": "RenderViewportBase" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProfilePaintCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugOnProfilePaint] implementations.", "detail": "(RenderObject renderObject) → void", "kind": 7, "label": "ProfilePaintCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An int valued property with an optional unit the value is measured in.\n\nExamples of units include 'px' and 'ms'.", "detail": "", "kind": 7, "label": "IntProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The layout constraints for the root render object.", "detail": "", "kind": 7, "label": "ViewConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlayOption", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The options that control whether the performance overlay displays certain\naspects of the compositor.", "detail": "", "kind": 13, "label": "PerformanceOverlayOption" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines diagnostics data for a [value].\n\n[DiagnosticsNode] provides a high quality multi-line string dump via\n[toStringDeep]. The core members are the [name], [toDescription],\n[getProperties], [value], and [getChildren]. All other members exist\ntypically to provide hints for how [toStringDeep] and debugging tools should\nformat output.", "detail": "", "kind": 7, "label": "DiagnosticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMaskLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a shader to its children.", "detail": "", "kind": 7, "label": "ShaderMaskLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPhysicalParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by parents of slivers that position their\nchildren using absolute coordinates.\n\nFor example, used by [RenderViewport].\n\nThis data structure is optimized for fast painting, at the cost of requiring\nadditional work during layout when the children change their offsets. It is\nbest used by parents that expect to have few children, especially if those\nchildren will themselves be very tall relative to the parent.", "detail": "", "kind": 7, "label": "SliverPhysicalParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for data associated with a [RenderObject] by its parent.\n\nSome render objects wish to store data on their children, such as their\ninput parameters to the parent's layout algorithm or their position relative\nto other children.", "detail": "", "kind": 7, "label": "ParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionPoint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents the coordinates of the point in a selection, and the text\ndirection at that point, relative to top left of the [RenderEditable] that\nholds the selection.", "detail": "", "kind": 7, "label": "TextSelectionPoint" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the placement of a child in a [RenderSliverGrid].\n\nSee also:\n\n * [SliverGridLayout], which represents the geometry of all the tiles in a\n grid.\n * [SliverGridLayout.getGeometryForChildIndex], which returns this object\n to describe the child's placement.\n * [RenderSliverGrid], which uses this class during its\n [RenderSliverGrid.performLayout] method.", "detail": "", "kind": 7, "label": "SliverGridGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the semantics layer and the Flutter engine.", "detail": "", "kind": 7, "label": "SemanticsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAbstractViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for render objects that are bigger on the inside.\n\nSome render objects, such as [RenderViewport], present a portion of their\ncontent, which can be controlled by a [ViewportOffset]. This interface lets\nthe framework recognize such render objects and interact with them without\nhaving specific knowledge of all the various types of viewports.", "detail": "", "kind": 7, "label": "RenderAbstractViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPositionedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Positions its child using an [AlignmentGeometry].\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\nBy default, sizes to be as big as possible in both axes. If either axis is\nunconstrained, then in that direction it will be sized to fit the child's\ndimensions. Using widthFactor and heightFactor you can force this latter\nbehavior in all cases.", "detail": "", "kind": 7, "label": "RenderPositionedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderCustomMultiChildLayoutBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defers the layout of multiple children to a delegate.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.", "detail": "", "kind": 7, "label": "RenderCustomMultiChildLayoutBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetSelectionHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [SemanticsAction.setSelection] handlers to change the\ntext selection (or re-position the cursor) to `selection`.", "detail": "(TextSelection selection) → void", "kind": 7, "label": "SetSelectionHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressSemanticsEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers long press semantic feedback.\n\nCurrently only honored on Android. Triggers a long-press specific sound\nwhen TalkBack is enabled.", "detail": "", "kind": 7, "label": "LongPressSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which encloses its string [value] in quotes.\n\nSee also:\n\n * [MessageProperty], which is a better fit for showing a message\n instead of describing a property with a string value.", "detail": "", "kind": 7, "label": "StringProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportOffset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Which part of the content inside the viewport should be visible.\n\nThe [pixels] value determines the scroll offset that the viewport uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\nSee also:\n\n * [ScrollPosition], which is a commonly used concrete subclass.\n * [RenderViewportBase], which is a render object that uses viewport\n offsets.", "detail": "", "kind": 7, "label": "ViewportOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFillRemaining", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[RenderSliverFillRemaining] sizes its child to fill the viewport in the\ncross axis and to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [RenderSliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [RenderSliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "RenderSliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverLogicalContainerParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for slivers that have multiple children and that position their\nchildren using layout offsets.", "detail": "", "kind": 7, "label": "SliverLogicalContainerParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFixedExtentBoxAdaptor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains multiple box children that have the same extent in\nthe main axis.\n\n[RenderSliverFixedExtentBoxAdaptor] places its children in a linear array\nalong the main axis. Each child is forced to have the [itemExtent] in the\nmain axis and the [SliverConstraints.crossAxisExtent] in the cross axis.\n\nSubclasses should override [itemExtent] to control the size of the children\nin the main axis. For a concrete subclass with a configurable [itemExtent],\nsee [RenderSliverFixedExtentList].\n\n[RenderSliverFixedExtentBoxAdaptor] is more efficient than\n[RenderSliverList] because [RenderSliverFixedExtentBoxAdaptor] does not need\nto perform layout on its children to obtain their extent in the main axis.\n\nSee also:\n\n * [RenderSliverFixedExtentList], which has a configurable [itemExtent].\n * [RenderSliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [RenderSliverFillRemaining], which determines the [itemExtent] based on\n [SliverConstraints.remainingPaintExtent].\n * [RenderSliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "RenderSliverFixedExtentBoxAdaptor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnimatedSize", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that animates its size to its child's size over a given\n[duration] and with a given [curve]. If the child's size itself animates\n(i.e. if it changes size two frames in a row, as opposed to abruptly\nchanging size in one frame then remaining that size in subsequent frames),\nthis render object sizes itself to fit the child instead of animating\nitself.\n\nWhen the child overflows the current animated size of this render object, it\nis clipped.", "detail": "", "kind": 7, "label": "RenderAnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverMultiBoxAdaptor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with multiple box children.\n\n[RenderSliverMultiBoxAdaptor] is a base class for slivers that have multiple\nbox children. The children are managed by a [RenderSliverBoxChildManager],\nwhich lets subclasses create children lazily during layout. Typically\nsubclasses will create only those children that are actually needed to fill\nthe [SliverConstraints.remainingPaintExtent].\n\nThe contract for adding and removing children from this render object is\nmore strict than for normal render objects:\n\n* Children can be removed except during a layout pass if they have already\n been laid out during that layout pass.\n* Children cannot be added except during a call to [childManager], and\n then only if there is no child corresponding to that index (or the child\n child corresponding to that index was first removed).\n\nSee also:\n\n * [RenderSliverToBoxAdapter], which has a single box child.\n * [RenderSliverList], which places its children in a linear\n array.\n * [RenderSliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [RenderSliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "RenderSliverMultiBoxAdaptor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverBoxChildManager", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate used by [RenderSliverMultiBoxAdaptor] to manage its children.\n\n[RenderSliverMultiBoxAdaptor] objects reify their children lazily to avoid\nspending resources on children that are not visible in the viewport. This\ndelegate lets these objects create and remove children as well as estimate\nthe total scroll offset extent occupied by the full child list.", "detail": "", "kind": 7, "label": "RenderSliverBoxChildManager" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderTransform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a transformation before painting its child.", "detail": "", "kind": 7, "label": "RenderTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OffsetLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A layer that is displayed at an offset from its parent layer.\n\nOffset layers are key to efficient repainting because they are created by\nrepaint boundaries in the [RenderObject] tree (see\n[RenderObject.isRepaintBoundary]). When a render object that is a repaint\nboundary is asked to paint at given offset in a [PaintingContext], the\nrender object first checks whether it needs to repaint itself. If not, it\nreuses its existing [OffsetLayer] (and its entire subtree) by mutating its\n[offset] property, cutting off the paint walk.", "detail": "", "kind": 7, "label": "OffsetLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the semantic information associated with the owning\n[RenderObject].\n\nThe information provided in the configuration is used to generate the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderShiftedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Abstract class for one-child-layout render boxes that provide control over\nthe child's position.", "detail": "", "kind": 7, "label": "RenderShiftedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The root of the render tree.\n\nThe view represents the total output surface of the render tree and handles\nbootstrapping the rendering pipeline. The view has a unique child\n[RenderBox], which is required to fill the entire output surface.", "detail": "", "kind": 7, "label": "RenderView" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingHeaderSnapConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Specifies how a floating header is to be \"snapped\" (animated) into or out\nof view.\n\nSee also:\n\n * [RenderSliverFloatingPersistentHeader.maybeStartSnapAnimation] and\n [RenderSliverFloatingPersistentHeader.maybeStopSnapAnimation], which\n start or stop the floating header's animation.\n * [SliverAppBar], which creates a header that can be pinned, floating,\n and snapped into view via the corresponding parameters.", "detail": "", "kind": 7, "label": "FloatingHeaderSnapConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeaderLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that can be followed by a [FollowerLayer].\n\nThis layer collapses the accumulated offset into a transform and passes\n[Offset.zero] to its child layers in the [addToScene]/[addChildrenToScene]\nmethods, so that [applyTransform] will work reliably.", "detail": "", "kind": 7, "label": "LeaderLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipOval", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].", "detail": "", "kind": 7, "label": "RenderClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderWrap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays its children in multiple horizontal or vertical runs.\n\nA [RenderWrap] lays out each child and attempts to place the child adjacent\nto the previous child in the main axis, given by [direction], leaving\n[spacing] space in between. If there is not enough space to fit the child,\n[RenderWrap] creates a new _run_ adjacent to the existing children in the\ncross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].", "detail": "", "kind": 7, "label": "RenderWrap" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverPadding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Inset a [RenderSliver], applying padding on each side.\n\nA [RenderSliverPadding] object wraps the [SliverGeometry.layoutExtent] of\nits child. Any incoming [SliverConstraints.overlap] is ignored and not\npassed on to the child.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a\n[RenderSliverPinnedPersistentHeader] will cause the app bar to overlap\nearlier slivers (contrary to the normal behavior of pinned app bars), and\nwhile the app bar is pinned, the padding will scroll away.", "detail": "", "kind": 7, "label": "RenderSliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using a rectangle.\n\nBy default, [RenderClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].", "detail": "", "kind": 7, "label": "RenderClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderFlex].", "detail": "", "kind": 7, "label": "FlexParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by [RenderSliverGrid].", "detail": "", "kind": 7, "label": "SliverGridParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModelLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that uses a physical model to producing lighting effects.\n\nFor example, the layer casts a shadow according to its geometry and the\nrelative position of lights and other physically modelled objects in the\nscene.\n\nWhen debugging, setting [debugDisablePhysicalShapeLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "PhysicalModelLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildManager", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate used by [RenderListWheelViewport] to manage its children.\n\n[RenderListWheelViewport] during layout will ask the delegate to create\nchildren that are visible in the viewport and remove those that are not.", "detail": "", "kind": 7, "label": "ListWheelChildManager" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderParagraph", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that displays a paragraph of text", "detail": "", "kind": 7, "label": "RenderParagraph" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A layer that shows an embedded [UIView](https://developer.apple.com/documentation/uikit/uiview)\non iOS.", "detail": "", "kind": 7, "label": "PlatformViewLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that has a list of children.\n\nA [ContainerLayer] instance merely takes a list of children and inserts them\ninto the composited rendering in order. There are subclasses of\n[ContainerLayer] which apply more elaborate effects in the process.", "detail": "", "kind": 7, "label": "ContainerLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFractionalTranslation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as an [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[RenderFractionalTranslation], even if the contents are offset such that\nthey overflow.", "detail": "", "kind": 7, "label": "RenderFractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRectLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composite layer that clips its children using a rounded rectangle.\n\nWhen debugging, setting [debugDisableClipLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "ClipRRectLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverPersistentHeader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for slivers that have a [RenderBox] child which scrolls\nnormally, except that when it hits the leading edge (typically the top) of\nthe viewport, it shrinks to a minimum size ([minExtent]).\n\nThis class primarily provides helpers for managing the child, in particular:\n\n * [layoutChild], which applies min and max extents and a scroll offset to\n lay out the child. This is normally called from [performLayout].\n\n * [childExtent], to convert the child's box layout dimensions to the sliver\n geometry model.\n\n * hit testing, painting, and other details of the sliver protocol.\n\nSubclasses must implement [performLayout], [minExtent], and [maxExtent], and\ntypically also will implement [updateChild].", "detail": "", "kind": 7, "label": "RenderSliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveParentDataMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by [RenderSliverWithKeepAliveMixin].", "detail": "", "kind": 7, "label": "KeepAliveParentDataMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticPropertiesBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builder to accumulate properties and configuration used to assemble a\n[DiagnosticsNode] from a [Diagnosticable] object.", "detail": "", "kind": 7, "label": "DiagnosticPropertiesBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverSingleBoxAdapter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract class for [RenderSliver]s that contains a single [RenderBox].\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which extends this class to size the child\n according to its preferred size.\n * [RenderSliverFillRemaining], which extends this class to size the child\n to fill the remaining space in the viewport.", "detail": "", "kind": 7, "label": "RenderSliverSingleBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlayLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A layer that indicates to the compositor that it should display\ncertain performance statistics within it.\n\nPerformance overlay layers are always leaves in the layer tree.", "detail": "", "kind": 7, "label": "PerformanceOverlayLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderViewport", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is bigger on the inside.\n\n[RenderViewport] is the visual workhorse of the scrolling machinery. It\ndisplays a subset of its children according to its own dimensions and the\ngiven [offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[RenderViewport] hosts a bidirectional list of slivers, anchored on a\n[center] sliver, which is placed at the zero scroll offset. The center\nwidget is displayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[RenderViewport] cannot contain [RenderBox] children directly. Instead, use\na [RenderSliverList], [RenderSliverFixedExtentList], [RenderSliverGrid], or\na [RenderSliverToBoxAdapter], for example.\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which allows a [RenderBox] object to be\n placed inside a [RenderSliver] (the opposite of this class).\n * [RenderShrinkWrappingViewport], a variant of [RenderViewport] that\n shrink-wraps its contents along the main axis.", "detail": "", "kind": 7, "label": "RenderViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderMergeSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Causes the semantics of all descendants to be merged into this\nnode such that the entire subtree becomes a single leaf in the\nsemantics tree.\n\nUseful for combining the semantics of multiple render objects that\nform part of a single conceptual widget, e.g. a checkbox, a label,\nand the gesture detector that goes with them.", "detail": "", "kind": 7, "label": "RenderMergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPadding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.", "detail": "", "kind": 7, "label": "RenderPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverConstraints", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderSliver] layout.\n\nThe [SliverConstraints] describe the current scroll state of the viewport\nfrom the point of view of the sliver receiving the constraints. For example,\na [scrollOffset] of zero means that the leading edge of the sliver is\nvisible in the viewport, not that the viewport itself has a zero scroll\noffset.", "detail": "", "kind": 7, "label": "SliverConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction of a scroll, relative to the positive scroll offset axis given\nby an [AxisDirection] and a [GrowthDirection].\n\nThis contrasts to [GrowthDirection] in that it has a third value, [idle],\nfor the case where no scroll is occurring.\n\nThis is used by [RenderSliverFloatingPersistentHeader] to only expand when\nthe user is scrolling in the same direction as the detected scroll offset\nchange.", "detail": "", "kind": 13, "label": "ScrollDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBlockSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Causes the semantics of all earlier render objects below the same semantic\nboundary to be dropped.\n\nThis is useful in a stack where an opaque mask should prevent interactions\nwith the render objects painted below the mask.", "detail": "", "kind": 7, "label": "RenderBlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBoxContainerDefaultsMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that provides useful default behaviors for boxes with children\nmanaged by the [ContainerRenderObjectMixin] mixin.\n\nBy convention, this class doesn't override any members of the superclass.\nInstead, it provides helpful functions that subclasses can call as\nappropriate.", "detail": "", "kind": 7, "label": "RenderBoxContainerDefaultsMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBodyParentData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderListBody].", "detail": "", "kind": 7, "label": "ListBodyParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugSemanticsDumpOrder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Used by [debugDumpSemanticsTree] to specify the order in which child nodes\nare printed.", "detail": "", "kind": 13, "label": "DebugSemanticsDumpOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlagProperty", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property where the description is either [ifTrue] or [ifFalse] depending on\nwhether [value] is true or false.\n\nUsing [FlagProperty] instead of [DiagnosticsProperty<bool>] can make\ndiagnostics display more polished. For example, given a property named\n`visible` that is typically true, the following code will return 'hidden'\nwhen `visible` is false and nothing when visible is true, in contrast to\n`visible: true` or `visible: false`.\n\n\n```dart\nFlagProperty(\n 'visible',\n value: true,\n ifFalse: 'hidden',\n)\n```\n\n[FlagProperty] should also be used instead of [DiagnosticsProperty<bool>]\nif showing the bool value would not clearly indicate the meaning of the\nproperty value.\n\n```dart\nFlagProperty(\n 'inherit',\n value: inherit,\n ifTrue: '<all styles inherited>',\n ifFalse: '<no style specified>',\n)\n```\n\nSee also:\n\n * [ObjectFlagProperty], which provides similar behavior describing whether\n a [value] is null.", "detail": "", "kind": 7, "label": "FlagProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event sent by the application to notify interested listeners that\nsomething happened to the user interface (e.g. a view scrolled).\n\nThese events are usually interpreted by assistive technologies to give the\nuser additional clues about the current state of the UI.", "detail": "", "kind": 7, "label": "SemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderDecoratedBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints a [Decoration] either before or after its child paints.", "detail": "", "kind": 7, "label": "RenderDecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsProperties", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties used by assistive technologies to make the application\nmore accessible.\n\nThe properties of this class are used to generate a [SemanticsNode]s in the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsProperties" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderExcludeSemantics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Excludes this subtree from the semantic tree.\n\nWhen [excluding] is true, this render object (and its subtree) is excluded\nfrom the semantic tree.\n\nUseful e.g. for hiding text that is redundant with other text next\nto it (e.g. text included only for the visual effect).", "detail": "", "kind": 7, "label": "RenderExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRectLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composite layer that clips its children using a rectangle.\n\nWhen debugging, setting [debugDisableClipLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "ClipRectLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsService", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows access to the platform's accessibility services.\n\nEvents sent by this service are handled by the platform-specific\naccessibility bridge in Flutter's engine.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "SemanticsService" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[RenderSliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [RenderSliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children. If this dead\nreckoning results in a logical inconsistency (e.g., attempting to place the\nzeroth child at a scroll offset other than zero), the [RenderSliverList]\ngenerates a [SliverGeometry.scrollOffsetCorrection] to restore consistency.\n\nIf the children have a fixed extent in the main axis, consider using\n[RenderSliverFixedExtentList] rather than [RenderSliverList] because\n[RenderSliverFixedExtentList] does not need to perform layout on its\nchildren to obtain their extent in the main axis and is therefore more\nefficient.\n\nSee also:\n\n * [RenderSliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [RenderSliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "RenderSliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InformationCollector", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [FlutterErrorDetails.informationCollector] callback\nand other callbacks that collect information into a string buffer.", "detail": "(StringBuffer information) → void", "kind": 7, "label": "InformationCollector" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsSortKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for all sort keys for [Semantics] accessibility traversal order\nsorting.\n\nOnly keys of the same type and having matching [name]s are compared. If a\nlist of sibling [SemanticsNode]s contains keys that are not comparable with\neach other the list is first sorted using the default sorting algorithm.\nThen the nodes are broken down into groups by moving comparable nodes\ntowards the _earliest_ node in the group. Finally each group is sorted by\nsort key and the resulting list is made by concatenating the sorted groups\nback.\n\nFor example, let's take nodes (C, D, B, E, A, F). Let's assign node A key 1,\nnode B key 2, node C key 3. Let's also assume that the default sort order\nleaves the original list intact. Because nodes A, B, and C, have comparable\nsort key, they will form a group by pulling all nodes towards the earliest\nnode, which is C. The result is group (C, B, A). The remaining nodes D, E,\nF, form a second group with sort key being `null`. The first group is sorted\nusing their sort keys becoming (A, B, C). The second group is left as is\nbecause it does not specify sort keys. Then we concatenate the two groups -\n(A, B, C) and (D, E, F) - into the final (A, B, C, D, E, F).\n\nBecause of the complexity introduced by incomparable sort keys among sibling\nnodes, it is recommended to either use comparable keys for all nodes, or\nuse null for all of them, leaving the sort order to the default algorithm.\n\nSee Also:\n\n * [OrdinalSortKey] for a sort key that sorts using an ordinal.", "detail": "", "kind": 7, "label": "SemanticsSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderEditable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays some text in a scrollable container with a potentially blinking\ncursor and with gesture recognizers.\n\nThis is the renderer for an editable text field. It does not directly\nprovide affordances for editing the text, but it does handle text selection\nand manipulation of the text cursor.\n\nThe [text] is displayed, scrolled by the given [offset], aligned according\nto [textAlign]. The [maxLines] property controls whether the text displays\non one line or many. The [selection], if it is not collapsed, is painted in\nthe [selectionColor]. If it _is_ collapsed, then it represents the cursor\nposition. The cursor is shown while [showCursor] is true. It is painted in\nthe [cursorColor].\n\nIf, when the render object paints, the caret is found to have changed\nlocation, [onCaretChanged] is called.\n\nThe user may interact with the render object by tapping or long-pressing.\nWhen the user does so, the selection is updated, and [onSelectionChanged] is\ncalled.\n\nKeyboard handling, IME handling, scrolling, toggling the [showCursor] value\nto actually blink the cursor, and other features not mentioned above are the\nresponsibility of higher layers and not handled by this object.", "detail": "", "kind": 7, "label": "RenderEditable" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderProxyBoxWithHitTestBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A RenderProxyBox subclass that allows you to customize the\nhit-testing behavior.", "detail": "", "kind": 7, "label": "RenderProxyBoxWithHitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderMetaData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "RenderMetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PictureLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer containing a [Picture].\n\nPicture layers are always leaves in the layer tree.", "detail": "", "kind": 7, "label": "PictureLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverGrid", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[RenderSliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nSee also:\n\n * [RenderSliverList], which places its children in a linear\n array.\n * [RenderSliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.", "detail": "", "kind": 7, "label": "RenderSliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called during layout.\n\nUsed by [RenderObject.invokeLayoutCallback].", "detail": "(T constraints) → void", "kind": 7, "label": "LayoutCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback passed to the [Ticker] class's constructor.\n\nThe argument is the time that the object had spent enabled so far\nat the time of the callback being called.", "detail": "(Duration elapsed) → void", "kind": 7, "label": "TickerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SchedulingStrategy", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [SchedulerBinding.schedulingStrategy] callback. Called\nwhenever the system needs to decide whether a task at a given\npriority needs to be run.\n\nReturn true if a task with the given priority should be executed\nat this time, false otherwise.\n\nSee also [defaultSchedulingStrategy].", "detail": "({int priority, SchedulerBinding scheduler}) → bool", "kind": 7, "label": "SchedulingStrategy" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrameCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for frame-related callbacks from the scheduler.\n\nThe `timeStamp` is the number of milliseconds since the beginning of the\nscheduler's epoch. Use timeStamp to determine how far to advance animation\ntimelines so that all the animations in the system are synchronized to a\ncommon time base.", "detail": "(Duration timeStamp) → void", "kind": 7, "label": "FrameCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SchedulerBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scheduler for running the following:\n\n* _Transient callbacks_, triggered by the system's [Window.onBeginFrame]\n callback, for synchronizing the application's behavior to the system's\n display. For example, [Ticker]s and [AnimationController]s trigger from\n these.\n\n* _Persistent callbacks_, triggered by the system's [Window.onDrawFrame]\n callback, for updating the system's display after transient callbacks have\n executed. For example, the rendering layer uses this to drive its\n rendering pipeline.\n\n* _Post-frame callbacks_, which are run after persistent callbacks, just\n before returning from the [Window.onDrawFrame] callback.\n\n* Non-rendering tasks, to be run between frames. These are given a\n priority and are executed in priority order according to a\n [schedulingStrategy].", "detail": "", "kind": 7, "label": "SchedulerBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TaskCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [Scheduler.scheduleTask] callbacks.\n\nThe type argument `T` is the task's return value. Consider [void] if the\ntask does not return a value.", "detail": "() → T", "kind": 7, "label": "TaskCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Ticker", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Calls its callback once per animation frame.\n\nWhen created, a ticker is initially disabled. Call [start] to\nenable the ticker.\n\nA [Ticker] can be silenced by setting [muted] to true. While silenced, time\nstill elapses, and [start] and [stop] can still be called, but no callbacks\nare called.\n\nBy convention, the [start] and [stop] methods are used by the ticker's\nconsumer, and the [muted] property is controlled by the [TickerProvider]\nthat created the ticker.\n\nTickers are driven by the [SchedulerBinding]. See\n[SchedulerBinding.scheduleFrameCallback].", "detail": "", "kind": 7, "label": "Ticker" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SchedulerPhase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various phases that a [SchedulerBinding] goes through during\n[SchedulerBinding.handleBeginFrame].\n\nThis is exposed by [SchedulerBinding.schedulerPhase].\n\nThe values of this enum are ordered in the same order as the phases occur,\nso their relative index values can be compared to each other.\n\nSee also the discussion at [WidgetsBinding.drawFrame].", "detail": "", "kind": 13, "label": "SchedulerPhase" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Priority", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A task priority, as passed to [SchedulerBinding.scheduleTask].", "detail": "", "kind": 7, "label": "Priority" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HapticFeedback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Allows access to the haptic feedback interface on the device.\n\nThis API is intentionally terse since it calls default platform behavior. It\nis not suitable for precise control of the system's haptic feedback module.", "detail": "", "kind": 7, "label": "HapticFeedback" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitViewController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls an iOS UIView.\n\nTypically created with [PlatformViewsService.initUiKitView].", "detail": "", "kind": 7, "label": "UiKitViewController" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] with UTF-8 encoded String messages.\n\nOn Android, messages will be represented using `java.util.String`.\nOn iOS, messages will be represented using `NSString`.", "detail": "", "kind": 7, "label": "StringCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewsRegistry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A registry responsible for generating unique identifier for platform views.\n\nA Flutter application has a single [PlatformViewsRegistry] which can be accesses\nthrough the [platformViewsRegistry] getter.\n\nSee also:\n\n * [PlatformView], a widget that shows a platform view.", "detail": "", "kind": 7, "label": "PlatformViewsRegistry" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An action the user has requested the text input control to perform.\n\nEach action represents a logical meaning, and also configures the soft\nkeyboard to display a certain kind of action button. The visual appearance\nof the action button might differ between versions of the same OS.\n\nDespite the logical meaning of each action, choosing a particular\n[TextInputAction] does not necessarily cause any specific behavior to\nhappen. It is up to the developer to ensure that the behavior that occurs\nwhen an action button is pressed is appropriate for the action button chosen.\n\nFor example: If the user presses the keyboard action button on iOS when it\nreads \"Emergency Call\", the result should not be a focus change to the next\nTextField. This behavior is not logically appropriate for a button that says\n\"Emergency Call\".\n\nSee [EditableText] for more information about customizing action button\nbehavior.\n\nMost [TextInputAction]s are supported equally by both Android and iOS.\nHowever, there is not a complete, direct mapping between Android's IME input\ntypes and iOS's keyboard return types. Therefore, some [TextInputAction]s\nare inappropriate for one of the platforms. If a developer chooses an\ninappropriate [TextInputAction] when running in debug mode, an error will be\nthrown. If the same thing is done in release mode, then instead of sending\nthe inappropriate value, Android will use \"unspecified\" on the platform\nside and iOS will use \"default\" on the platform side.\n\nSee also:\n\n * [TextInput], which configures the platform's keyboard setup.\n * [EditableText], which invokes callbacks when the action button is pressed.", "detail": "", "kind": 13, "label": "TextInputAction" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MethodCall", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An command object representing the invocation of a named method.", "detail": "", "kind": 7, "label": "MethodCall" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInput", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface to the system's text input control.", "detail": "", "kind": 7, "label": "TextInput" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LogicalKeyboardKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class with static values that describe the keys that are returned from\n[RawKeyEvent.logicalKey].\n\nThese represent *logical* keys, which are keys which are interpreted in the\ncontext of any modifiers, modes, or keyboard layouts which may be in effect.\n\nThis is contrast to [PhysicalKeyboardKey], which represents a physical key\nin a particular location on the keyboard, without regard for the modifier\nstate, mode, or keyboard layout.\n\nAs an example, if you wanted to implement an app where the \"Q\" key \"quit\"\nsomething, you'd want to look at the logical key to detect this, since you\nwould like to have it match the key with \"Q\" on it, instead of always\nlooking for \"the key next next to the TAB key\", since on a French keyboard,\nthe key next to the TAB key has an \"A\" on it.\n\nConversely, if you wanted a game where the key next to the CAPS LOCK (the\n\"A\" key on a QWERTY keyboard) moved the player to the left, you'd want to\nlook at the physical key to make sure that regardless of the character the\nkey produces, you got the key that is in that location on the keyboard.\n\nThis example shows how to detect if the user has selected the logical \"Q\"\nkey.\n\n```dart\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/services.dart';\n```\n\n```dart\n// The node used to request the keyboard focus.\nfinal FocusNode _focusNode = FocusNode();\n// The message to display.\nString _message;\n\n// Focus nodes need to be disposed.\n@override\nvoid dispose() {\n _focusNode.dispose();\n super.dispose();\n}\n\n// Handles the key events from the RawKeyboardListener and update the\n// _message.\nvoid _handleKeyEvent(RawKeyEvent event) {\n setState(() {\n if (event.logicalKey == LogicalKeyboardKey.keyQ) {\n _message = 'Pressed the \"Q\" key!';\n } else {\n if (kReleaseMode) {\n _message = 'Not a Q: Key label is \"${event.logicalKey.keyLabel ?? '<none>'}\"';\n } else {\n // This will only print useful information in debug mode.\n _message = 'Not a Q: Pressed ${event.logicalKey.debugName}';\n }\n }\n });\n}\n\n@override\nWidget build(BuildContext context) {\n final TextTheme textTheme = Theme.of(context).textTheme;\n return Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: DefaultTextStyle(\n style: textTheme.display1,\n child: RawKeyboardListener(\n focusNode: _focusNode,\n onKey: _handleKeyEvent,\n child: AnimatedBuilder(\n animation: _focusNode,\n builder: (BuildContext context, Widget child) {\n if (!_focusNode.hasFocus) {\n return GestureDetector(\n onTap: () {\n FocusScope.of(context).requestFocus(_focusNode);\n },\n child: Text('Tap to focus'),\n );\n }\n return Text(_message ?? 'Press a key');\n },\n ),\n ),\n ),\n );\n}\n```\nSee also:\n\n * [RawKeyEvent], the keyboard event object received by widgets that listen\n to keyboard events.\n * [RawKeyboardListener], a widget used to listen to and supply handlers for\n keyboard events.", "detail": "", "kind": 7, "label": "LogicalKeyboardKey" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemSoundType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sound provided by the system.", "detail": "", "kind": 13, "label": "SystemSoundType" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataLinux", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for Linux.\n\nDifferent window toolkit implementations can map to different key codes. This class\nwill use the correct mapping depending on the [toolkit] provided.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataLinux" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BinaryCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] with unencoded binary messages represented using [ByteData].\n\nOn Android, messages will be represented using `java.nio.ByteBuffer`.\nOn iOS, messages will be represented using `NSData`.\n\nWhen sending outgoing messages from Android, be sure to use direct `ByteBuffer`\nas opposed to indirect. The `wrap()` API provides indirect buffers by default\nand you will get empty `ByteData` objects in Dart.", "detail": "", "kind": 7, "label": "BinaryCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidPointerProperties", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Properties of an Android pointer.\n\nA Dart version of Android's [MotionEvent.PointerProperties](https://developer.android.com/reference/android/view/MotionEvent.PointerProperties).", "detail": "", "kind": 7, "label": "AndroidPointerProperties" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ApplicationSwitcherDescription", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a description of the application that is pertinent to the\nembedder's application switcher (also known as \"recent tasks\") user\ninterface.\n\nUsed by [SystemChrome.setApplicationSwitcherDescription].", "detail": "", "kind": 7, "label": "ApplicationSwitcherDescription" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LengthLimitingTextInputFormatter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] that prevents the insertion of more characters\n(currently defined as Unicode scalar values) than allowed.\n\nSince this formatter only prevents new characters from being added to the\ntext, it preserves the existing [TextEditingValue.selection].\n\n * [maxLength], which discusses the precise meaning of \"number of\n characters\" and how it may differ from the intuitive meaning.", "detail": "", "kind": 7, "label": "LengthLimitingTextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for platform-specific key event data.\n\nThis base class exists to have a common type to use for each of the\ntarget platform's key event data structures.\n\nSee also:\n\n * [RawKeyEventDataAndroid], a specialization for Android.\n * [RawKeyEventDataFuchsia], a specialization for Fuchsia.\n * [RawKeyDownEvent] and [RawKeyUpEvent], the classes that hold the\n reference to [RawKeyEventData] subclasses.\n * [RawKeyboard], which uses these interfaces to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventData" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidViewController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls an Android view.\n\nTypically created with [PlatformViewsService.initAndroidView].", "detail": "", "kind": 7, "label": "AndroidViewController" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MissingPluginException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Thrown to indicate that a platform interaction failed to find a handling\nplugin.\n\nSee also:\n\n * [MethodChannel.invokeMethod], which completes the returned future\n with a [MissingPluginException], if no plugin handler for the method call\n was found.\n * [OptionalMethodChannel.invokeMethod], which completes the returned future\n with null, if no plugin handler for the method call was found.", "detail": "", "kind": 7, "label": "MissingPluginException" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkAssetBundle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [AssetBundle] that loads resources over the network.\n\nThis asset bundle does not cache any resources, though the underlying\nnetwork stack may implement some level of caching itself.", "detail": "", "kind": 7, "label": "NetworkAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputConfiguration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls the visual appearance of the text input control.\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\ntext input is attached. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\nSee also:\n\n * [TextInput.attach]\n * [TextInputAction]", "detail": "", "kind": 7, "label": "TextInputConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipboardData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Data stored on the system clipboard.\n\nThe system clipboard can contain data of various media types. This data\nstructure currently supports only plain text data, in the [text] property.", "detail": "", "kind": 7, "label": "ClipboardData" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyHelper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Abstract class for window-specific key mappings.\n\nGiven that there might be multiple window toolkit implementations (GLFW,\nGTK, QT, etc), this creates a common interface for each of the\ndifferent toolkits.", "detail": "", "kind": 7, "label": "KeyHelper" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewCreatedCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for when a platform view was created.\n\n`id` is the platform view's unique identifier.", "detail": "(int id) → void", "kind": 7, "label": "PlatformViewCreatedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WhitelistingTextInputFormatter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] that allows only the insertion of whitelisted\ncharacters patterns.\n\nSince this formatter only removes characters from the text, it attempts to\npreserve the existing [TextEditingValue.selection] to values it would now\nfall at with the removed characters.\n\nSee also:\n\n * [BlacklistingTextInputFormatter], which uses a blacklist instead of a\n whitelist.", "detail": "", "kind": 7, "label": "WhitelistingTextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CachingAssetBundle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [AssetBundle] that permanently caches string and structured resources\nthat have been fetched.\n\nStrings (for [loadString] and [loadStructuredData]) are decoded as UTF-8.\nData that is cached is cached for the lifetime of the asset bundle\n(typically the lifetime of the application).\n\nBinary resources (from [load]) are not cached.", "detail": "", "kind": 7, "label": "CachingAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GLFWKeyHelper", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Helper class that uses GLFW-specific key mappings.", "detail": "", "kind": 7, "label": "GLFWKeyHelper" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemUiOverlayStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a preference for the style of the system overlays.\n\nUsed by [SystemChrome.setSystemUIOverlayStyle].", "detail": "", "kind": 7, "label": "SystemUiOverlayStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingCursorDragState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A floating cursor state the user has induced by force pressing an iOS\nkeyboard.", "detail": "", "kind": 13, "label": "FloatingCursorDragState" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewsService", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides access to the platform views service.\n\nThis service allows creating and controlling Android views.\n\nSee also: [PlatformView].", "detail": "", "kind": 7, "label": "PlatformViewsService" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemSound", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides access to the library of short system specific sounds for common\ntasks.", "detail": "", "kind": 7, "label": "SystemSound" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputConnection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for interacting with a text input control.\n\nSee also:\n\n * [TextInput.attach]", "detail": "", "kind": 7, "label": "TextInputConnection" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StandardMessageCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] using the Flutter standard binary encoding.\n\nSupported messages are acyclic values of these forms:\n\n * null\n * [bool]s\n * [num]s\n * [String]s\n * [Uint8List]s, [Int32List]s, [Int64List]s, [Float64List]s\n * [List]s of supported values\n * [Map]s from supported values to supported values\n\nDecoded values will use `List<dynamic>` and `Map<dynamic, dynamic>`\nirrespective of content.\n\nOn Android, messages are represented as follows:\n\n * null: null\n * [bool]\\: `java.lang.Boolean`\n * [int]\\: `java.lang.Integer` for values that are representable using 32-bit\n two's complement; `java.lang.Long` otherwise\n * [double]\\: `java.lang.Double`\n * [String]\\: `java.lang.String`\n * [Uint8List]\\: `byte[]`\n * [Int32List]\\: `int[]`\n * [Int64List]\\: `long[]`\n * [Float64List]\\: `double[]`\n * [List]\\: `java.util.ArrayList`\n * [Map]\\: `java.util.HashMap`\n\nOn iOS, messages are represented as follows:\n\n * null: nil\n * [bool]\\: `NSNumber numberWithBool:`\n * [int]\\: `NSNumber numberWithInt:` for values that are representable using\n 32-bit two's complement; `NSNumber numberWithLong:` otherwise\n * [double]\\: `NSNumber numberWithDouble:`\n * [String]\\: `NSString`\n * [Uint8List], [Int32List], [Int64List], [Float64List]\\:\n `FlutterStandardTypedData`\n * [List]\\: `NSArray`\n * [Map]\\: `NSDictionary`\n\nWhen sending a `java.math.BigInteger` from Java, it is converted into a\n[String] with the hexadecimal representation of the integer. (The value is\ntagged as being a big integer; subclasses of this class could be made to\nsupport it natively; see the discussion at [writeValue].) This codec does\nnot support sending big integers from Dart.\n\nThe codec is extensible by subclasses overriding [writeValue] and\n[readValueOfType].", "detail": "", "kind": 7, "label": "StandardMessageCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EventChannel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A named channel for communicating with platform plugins using event streams.\n\nStream setup requests are encoded into binary before being sent,\nand binary events and errors received are decoded into Dart values.\nThe [MethodCodec] used must be compatible with the one used by the platform\nplugin. This can be achieved by creating an `EventChannel` counterpart of\nthis channel on the platform side. The Dart type of events sent and received\nis `dynamic`, but only values supported by the specified [MethodCodec] can\nbe used.\n\nThe logical identity of the channel is given by its name. Identically named\nchannels will interfere with each other's communication.\n\nSee: <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "EventChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemUiOverlay", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a system overlay at a particular location.\n\nUsed by [SystemChrome.setEnabledSystemUIOverlays].", "detail": "", "kind": 13, "label": "SystemUiOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformAssetBundle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [AssetBundle] that loads resources using platform messages.", "detail": "", "kind": 7, "label": "PlatformAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModifierKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An enum describing the type of modifier key that is being pressed.\n\nSee also:\n\n * [RawKeyEventData.isModifierPressed], which accepts this enum as an\n argument.", "detail": "", "kind": 13, "label": "ModifierKey" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StandardMethodCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MethodCodec] using the Flutter standard binary encoding.\n\nThe standard codec is guaranteed to be compatible with the corresponding\nstandard codec for FlutterMethodChannels on the host platform. These parts\nof the Flutter SDK are evolved synchronously.\n\nValues supported as method arguments and result payloads are those supported\nby [StandardMessageCodec].", "detail": "", "kind": 7, "label": "StandardMethodCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MethodChannel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A named channel for communicating with platform plugins using asynchronous\nmethod calls.\n\nMethod calls are encoded into binary before being sent, and binary results\nreceived are decoded into Dart values. The [MethodCodec] used must be\ncompatible with the one used by the platform plugin. This can be achieved\nby creating a method channel counterpart of this channel on the\nplatform side. The Dart type of arguments and results is `dynamic`,\nbut only values supported by the specified [MethodCodec] can be used.\nThe use of unsupported values should be considered programming errors, and\nwill result in exceptions being thrown. The null value is supported\nfor all codecs.\n\nThe logical identity of the channel is given by its name. Identically named\nchannels will interfere with each other's communication.\n\nSee: <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "MethodChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataFuchsia", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for Fuchsia.\n\nThis object contains information about key events obtained from Fuchsia's\n`KeyData` interface.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataFuchsia" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MethodCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A codec for method calls and enveloped results.\n\nAll operations throw an exception, if conversion fails.\n\nSee also:\n\n * [MethodChannel], which use [MethodCodec]s for communication\n between Flutter and platform plugins.\n * [EventChannel], which use [MethodCodec]s for communication\n between Flutter and platform plugins.", "detail": "", "kind": 7, "label": "MethodCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontLoader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that enables the dynamic loading of fonts at runtime.\n\nThe [FontLoader] class provides a builder pattern, where the caller builds\nup the assets that make up a font family, then calls [load] to load the\nentire font family into a running Flutter application.", "detail": "", "kind": 7, "label": "FontLoader" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BasicMessageChannel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A named channel for communicating with platform plugins using asynchronous\nmessage passing.\n\nMessages are encoded into binary before being sent, and binary messages\nreceived are decoded into Dart values. The [MessageCodec] used must be\ncompatible with the one used by the platform plugin. This can be achieved\nby creating a basic message channel counterpart of this channel on the\nplatform side. The Dart type of messages sent and received is [T],\nbut only the values supported by the specified [MessageCodec] can be used.\nThe use of unsupported values should be considered programming errors, and\nwill result in exceptions being thrown. The null message is supported\nfor all codecs.\n\nThe logical identity of the channel is given by its name. Identically named\nchannels will interfere with each other's communication.\n\nSee: <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "BasicMessageChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputFormatFunction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Function signature expected for creating custom [TextInputFormatter]\nshorthands via [TextInputFormatter.withFunction];", "detail": "(TextEditingValue oldValue, TextEditingValue newValue) → TextEditingValue", "kind": 7, "label": "TextInputFormatFunction" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputClient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface to receive information from [TextInput].\n\nSee also:\n\n * [TextInput.attach]", "detail": "", "kind": 7, "label": "TextInputClient" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MessageCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A message encoding/decoding mechanism.\n\nBoth operations throw an exception, if conversion fails. Such situations\nshould be treated as programming errors.\n\nSee also:\n\n * [BasicMessageChannel], which use [MessageCodec]s for communication\n between Flutter and platform plugins.", "detail": "", "kind": 7, "label": "MessageCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyboardSide", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An enum describing the side of the keyboard that a key is on, to allow\ndiscrimination between which key is pressed (e.g. the left or right SHIFT\nkey).\n\nSee also:\n\n * [RawKeyEventData.isModifierPressed], which accepts this enum as an\n argument.", "detail": "", "kind": 13, "label": "KeyboardSide" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServicesBinding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Listens for platform messages and directs them to [BinaryMessages].\n\nThe [ServicesBinding] also registers a [LicenseEntryCollector] that exposes\nthe licenses found in the `LICENSE` file stored at the root of the asset\nbundle, and implements the `ext.flutter.evict` service extension (see\n[evict]).", "detail": "", "kind": 7, "label": "ServicesBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JSONMethodCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MethodCodec] with UTF-8 encoded JSON method calls and result envelopes.\n\nValues supported as method arguments and result payloads are those supported\nby [JSONMessageCodec].", "detail": "", "kind": 7, "label": "JSONMethodCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlacklistingTextInputFormatter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] that prevents the insertion of blacklisted\ncharacters patterns.\n\nInstances of blacklisted characters found in the new [TextEditingValue]s\nwill be replaced with the [replacementString] which defaults to the empty\nstring.\n\nSince this formatter only removes characters from the text, it attempts to\npreserve the existing [TextEditingValue.selection] to values it would now\nfall at with the removed characters.\n\nSee also:\n\n * [WhitelistingTextInputFormatter], which uses a whitelist instead of a\n blacklist.", "detail": "", "kind": 7, "label": "BlacklistingTextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Thrown to indicate that a platform interaction failed in the platform\nplugin.\n\nSee also:\n\n * [MethodCodec], which throws a [PlatformException], if a received result\n envelope represents an error.\n * [MethodChannel.invokeMethod], which completes the returned future\n with a [PlatformException], if invoking the platform plugin method\n results in an error envelope.\n * [EventChannel.receiveBroadcastStream], which emits\n [PlatformException]s as error events, whenever an event received from the\n platform plugin is wrapped in an error envelope.", "detail": "", "kind": 7, "label": "PlatformException" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemChannels", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform channels used by the Flutter system.", "detail": "", "kind": 7, "label": "SystemChannels" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeviceOrientation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a particular device orientation.\n\nTo determine which values correspond to which orientations, first position\nthe device in its default orientation (this is the orientation that the\nsystem first uses for its boot logo, or the orientation in which the\nhardware logos or markings are upright, or the orientation in which the\ncameras are at the top). If this is a portrait orientation, then this is\n[portraitUp]. Otherwise, it's [landscapeLeft]. As you rotate the device by\n90 degrees in a counter-clockwise direction around the axis that pierces the\nscreen, you step through each value in this enum in the order given.\n\nFor a device with a landscape default orientation, the orientation obtained\nby rotating the device 90 degrees clockwise from its default orientation is\n[portraitUp].\n\nUsed by [SystemChrome.setPreferredOrientations].", "detail": "", "kind": 13, "label": "DeviceOrientation" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A collection of resources used by the application.\n\nAsset bundles contain resources, such as images and strings, that can be\nused by an application. Access to these resources is asynchronous so that\nthey can be transparently loaded over a network (e.g., from a\n[NetworkAssetBundle]) or from the local file system without blocking the\napplication's user interface.\n\nApplications have a [rootBundle], which contains the resources that were\npackaged with the application when it was built. To add resources to the\n[rootBundle] for your application, add them to the `assets` subsection of\nthe `flutter` section of your application's `pubspec.yaml` manifest.\n\nFor example:\n\n```yaml\nname: my_awesome_application\nflutter:\n assets:\n - images/hamilton.jpeg\n - images/lafayette.jpeg\n```\n\nRather than accessing the [rootBundle] global static directly, consider\nobtaining the [AssetBundle] for the current [BuildContext] using\n[DefaultAssetBundle.of]. This layer of indirection lets ancestor widgets\nsubstitute a different [AssetBundle] (e.g., for testing or localization) at\nruntime rather than directly replying upon the [rootBundle] created at build\ntime. For convenience, the [WidgetsApp] or [MaterialApp] widget at the top\nof the widget hierarchy configures the [DefaultAssetBundle] to be the\n[rootBundle].\n\nSee also:\n\n * [DefaultAssetBundle]\n * [NetworkAssetBundle]\n * [rootBundle]", "detail": "", "kind": 7, "label": "AssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataAndroid", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for Android.\n\nThis object contains information about key events obtained from Android's\n`KeyEvent` interface.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataAndroid" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemChrome", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls specific aspects of the operating system's graphical interface and\nhow it interacts with the application.", "detail": "", "kind": 7, "label": "SystemChrome" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JSONMessageCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] with UTF-8 encoded JSON messages.\n\nSupported messages are acyclic values of these forms:\n\n * null\n * [bool]s\n * [num]s\n * [String]s\n * [List]s of supported values\n * [Map]s from strings to supported values\n\nOn Android, messages are decoded using the `org.json` library.\nOn iOS, messages are decoded using the `NSJSONSerialization` library.\nIn both cases, the use of top-level simple messages (null, [bool], [num],\nand [String]) is supported (by the Flutter SDK). The decoded value will be\nnull/nil for null, and identical to what would result from decoding a\nsingleton JSON array with a Boolean, number, or string value, and then\nextracting its single element.", "detail": "", "kind": 7, "label": "JSONMessageCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A fixed-length, random-access sequence of bytes that also provides random\nand unaligned access to the fixed-width integers and floating point\nnumbers represented by those bytes.\n\n`ByteData` may be used to pack and unpack data from external sources\n(such as networks or files systems), and to process large quantities\nof numerical data more efficiently than would be possible\nwith ordinary [List] implementations.\n`ByteData` can save space, by eliminating the need for object headers,\nand time, by eliminating the need for data copies.\nFinally, `ByteData` may be used to intentionally reinterpret the bytes\nrepresenting one arithmetic type as another.\nFor example this code fragment determine what 32-bit signed integer\nis represented by the bytes of a 32-bit floating point number:\n\n var buffer = new Uint8List(8).buffer;\n var bdata = new ByteData.view(buffer);\n bdata.setFloat32(0, 3.04);\n int huh = bdata.getInt32(0);", "detail": "", "kind": 7, "label": "ByteData" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clipboard", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Utility methods for interacting with the system's clipboard.", "detail": "", "kind": 7, "label": "Clipboard" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidMotionEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A Dart version of Android's [MotionEvent](https://developer.android.com/reference/android/view/MotionEvent).", "detail": "", "kind": 7, "label": "AndroidMotionEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataMacOs", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for macOS.\n\nThis object contains information about key events obtained from macOS's\n`NSEvent` interface.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataMacOs" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboard", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for listening to raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which makes them provide a high level of\nfidelity but a low level of portability.\n\nA [RawKeyboard] is useful for listening to raw key events and hardware\nbuttons that are represented as keys. Typically used by games and other apps\nthat use keyboards for purposes other than text entry.\n\nSee also:\n\n * [RawKeyDownEvent] and [RawKeyUpEvent], the classes used to describe\n specific raw key events.\n * [RawKeyboardListener], a widget that listens for raw key events.\n * [SystemChannels.keyEvent], the low-level channel used for receiving\n events from the system.", "detail": "", "kind": 7, "label": "RawKeyboard" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyDownEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The user has pressed a key on the keyboard.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OptionalMethodChannel", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [MethodChannel] that ignores missing platform plugins.\n\nWhen [invokeMethod] fails to find the platform plugin, it returns null\ninstead of throwing an exception.", "detail": "", "kind": 7, "label": "OptionalMethodChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawFloatingCursorPoint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current state and position of the floating cursor.", "detail": "", "kind": 7, "label": "RawFloatingCursorPoint" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextCapitalization", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures how the platform keyboard will select an uppercase or\nlowercase keyboard.\n\nOnly supports text keyboards, other keyboard types will ignore this\nconfiguration. Capitalization is locale-aware.", "detail": "", "kind": 13, "label": "TextCapitalization" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalKeyboardKey", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class with static values that describe the keys that are returned from\n[RawKeyEvent.physicalKey].\n\nThese represent *physical* keys, which are keys which represent a particular\nkey location on a QWERTY keyboard. It ignores any modifiers, modes, or\nkeyboard layouts which may be in effect. This is contrast to\n[LogicalKeyboardKey], which represents a logical key interpreted in the\ncontext of modifiers, modes, and/or keyboard layouts.\n\nAs an example, if you wanted a game where the key next to the CAPS LOCK (the\n\"A\" key on a QWERTY keyboard) moved the player to the left, you'd want to\nlook at the physical key to make sure that regardless of the character the\nkey produces, you got the key that is in that location on the keyboard.\n\nConversely, if you wanted to implement an app where the \"Q\" key \"quit\"\nsomething, you'd want to look at the logical key to detect this, since you\nwould like to have it match the key with \"Q\" on it, instead of always\nlooking for \"the key next next to the TAB key\", since on a French keyboard,\nthe key next to the TAB key has an \"A\" on it.\n\nThis example shows how to detect if the user has selected the physical key\nto the right of the CAPS LOCK key.\n\n```dart\nimport 'package:flutter/services.dart';\n```\n\n```dart\n// The node used to request the keyboard focus.\nfinal FocusNode _focusNode = FocusNode();\n// The message to display.\nString _message;\n\n// Focus nodes need to be disposed.\n@override\nvoid dispose() {\n _focusNode.dispose();\n super.dispose();\n}\n\n// Handles the key events from the RawKeyboardListener and update the\n// _message.\nvoid _handleKeyEvent(RawKeyEvent event) {\n setState(() {\n if (event.physicalKey == PhysicalKeyboardKey.keyA) {\n _message = 'Pressed the key next to CAPS LOCK!';\n } else {\n _message = 'Wrong key.';\n }\n });\n}\n\n@override\nWidget build(BuildContext context) {\n final TextTheme textTheme = Theme.of(context).textTheme;\n return Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: DefaultTextStyle(\n style: textTheme.display1,\n child: RawKeyboardListener(\n focusNode: _focusNode,\n onKey: _handleKeyEvent,\n child: AnimatedBuilder(\n animation: _focusNode,\n builder: (BuildContext context, Widget child) {\n if (!_focusNode.hasFocus) {\n return GestureDetector(\n onTap: () {\n FocusScope.of(context).requestFocus(_focusNode);\n },\n child: Text('Tap to focus'),\n );\n }\n return Text(_message ?? 'Press a key');\n },\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [RawKeyEvent], the keyboard event object received by widgets that listen\n to keyboard events.\n * [RawKeyboardListener], a widget used to listen to and supply handlers for\n keyboard events.", "detail": "", "kind": 7, "label": "PhysicalKeyboardKey" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BinaryMessages", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sends binary messages to and receives binary messages from platform plugins.\n\nSee also:\n\n * [BasicMessageChannel], which provides basic messaging services similar to\n `BinaryMessages`, but with pluggable message codecs in support of sending\n strings or semi-structured messages.\n * [MethodChannel], which provides platform communication using asynchronous\n method calls.\n * [EventChannel], which provides platform communication using event streams.\n * <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "BinaryMessages" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidPointerCoords", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Position information for an Android pointer.\n\nA Dart version of Android's [MotionEvent.PointerCoords](https://developer.android.com/reference/android/view/MotionEvent.PointerCoords).", "detail": "", "kind": 7, "label": "AndroidPointerCoords" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputFormatter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] can be optionally injected into an [EditableText]\nto provide as-you-type validation and formatting of the text being edited.\n\nText modification should only be applied when text is being committed by the\nIME and not on text under composition (i.e., only when\n[TextEditingValue.composing] is collapsed).\n\nConcrete implementations [BlacklistingTextInputFormatter], which removes\nblacklisted characters upon edit commit, and\n[WhitelistingTextInputFormatter], which only allows entries of whitelisted\ncharacters, are provided.\n\nTo create custom formatters, extend the [TextInputFormatter] class and\nimplement the [formatEditUpdate] method.\n\nSee also:\n\n * [EditableText] on which the formatting apply.\n * [BlacklistingTextInputFormatter], a provided formatter for blacklisting\n characters.\n * [WhitelistingTextInputFormatter], a provided formatter for whitelisting\n characters.", "detail": "", "kind": 7, "label": "TextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemNavigator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls specific aspects of the system navigation stack.", "detail": "", "kind": 7, "label": "SystemNavigator" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyUpEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The user has released a key on the keyboard.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyUpEvent" }, { "data": { "autoImportDisplayUri": "package:http/browser_client.dart", "libraryId": 290, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BrowserClient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A `dart:html`-based HTTP client that runs in the browser and is backed by\nXMLHttpRequests.\n\nThis client inherits some of the limitations of XMLHttpRequest. It ignores\nthe [BaseRequest.contentLength], [BaseRequest.persistentConnection],\n[BaseRequest.followRedirects], and [BaseRequest.maxRedirects] fields. It is\nalso unable to stream requests or responses; a request will only be sent and\na response will only be returned once all the data is available.", "detail": "", "kind": 7, "label": "BrowserClient" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Request", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP request where the entire request body is known in advance.", "detail": "", "kind": 7, "label": "Request" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BaseClient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The abstract base class for an HTTP client. This is a mixin-style class;\nsubclasses only need to implement [send] and maybe [close], and then they\nget various convenience methods for free.", "detail": "", "kind": 7, "label": "BaseClient" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Client", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The interface for HTTP clients that take care of maintaining persistent\nconnections across multiple requests to the same server. If you only need to\nsend a single request, it's usually easier to use [head], [get], [post],\n[put], [patch], or [delete] instead.\n\nWhen creating an HTTP client class with additional functionality, you must\nextend [BaseClient] rather than [Client]. In most cases, you can wrap\nanother instance of [Client] and add functionality on top of that. This\nallows all classes implementing [Client] to be mutually composable.", "detail": "", "kind": 7, "label": "Client" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultipartFile", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A file to be uploaded as part of a [MultipartRequest]. This doesn't need to\ncorrespond to a physical file.", "detail": "", "kind": 7, "label": "MultipartFile" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BaseResponse", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base class for HTTP responses.\n\nSubclasses of [BaseResponse] are usually not constructed manually; instead,\nthey're returned by [BaseClient.send] or other HTTP client methods.", "detail": "", "kind": 7, "label": "BaseResponse" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Response", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP response where the entire response body is known in advance.", "detail": "", "kind": 7, "label": "Response" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamedRequest", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP request where the request body is sent asynchronously after the\nconnection has been established and the headers have been sent.\n\nWhen the request is sent via [BaseClient.send], only the headers and\nwhatever data has already been written to [StreamedRequest.stream] will be\nsent immediately. More data will be sent as soon as it's written to\n[StreamedRequest.sink], and when the sink is closed the request will end.", "detail": "", "kind": 7, "label": "StreamedRequest" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamedResponse", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP response where the response body is received asynchronously after\nthe headers have been received.", "detail": "", "kind": 7, "label": "StreamedResponse" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClientException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An exception caused by an error in a pkg/http client.", "detail": "", "kind": 7, "label": "ClientException" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BaseRequest", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base class for HTTP requests.\n\nSubclasses of [BaseRequest] can be constructed manually and passed to\n[BaseClient.send], which allows the user to provide fine-grained control\nover the request properties. However, usually it's easier to use convenience\nmethods like [get] or [BaseClient.get].", "detail": "", "kind": 7, "label": "BaseRequest" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteStream", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A stream of chunks of bytes representing a single piece of data.", "detail": "", "kind": 7, "label": "ByteStream" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultipartRequest", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A `multipart/form-data` request. Such a request has both string [fields],\nwhich function as normal form fields, and (potentially streamed) binary\n[files].\n\nThis request automatically sets the Content-Type header to\n`multipart/form-data`. This value will override any value set by the user.\n\n var uri = Uri.parse(\"http://pub.dartlang.org/packages/create\");\n var request = new http.MultipartRequest(\"POST\", uri);\n request.fields['user'] = 'nweiz@google.com';\n request.files.add(new http.MultipartFile.fromFile(\n 'package',\n new File('build/package.tar.gz'),\n contentType: new MediaType('application', 'x-tar'));\n request.send().then((response) {\n if (response.statusCode == 200) print(\"Uploaded!\");\n });", "detail": "", "kind": 7, "label": "MultipartRequest" }, { "data": { "autoImportDisplayUri": "package:http/io_client.dart", "libraryId": 275, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOClient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A `dart:io`-based HTTP client.\n\nThis is the default client when running on the command line.", "detail": "", "kind": 7, "label": "IOClient" }, { "data": { "autoImportDisplayUri": "package:http/testing.dart", "libraryId": 273, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MockClient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mock HTTP client designed for use when testing code that uses\n[BaseClient]. This client allows you to define a handler callback for all\nrequests that are made through it so that you can mock a server without\nhaving to send real HTTP requests.", "detail": "", "kind": 7, "label": "MockClient" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterStroke", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorArtboard", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorArtboard" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorImage", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorImage" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterGradientFill", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterGradientFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterFill", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorShape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorShape" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActorNode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ActorNode" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorEllipse", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorEllipse" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterPath", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterPath" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterColorStroke", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterColorStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActor" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterPathPointsPath", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterPathPointsPath" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PropertyAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "PropertyAnimation" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterGradientStroke", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterGradientStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorTriangle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorTriangle" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterRadialStroke", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterRadialStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterRadialFill", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterRadialFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEventArgs", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "AnimationEventArgs" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorRectangle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorRectangle" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActorClip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ActorClip" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActorAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ActorAnimation" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentAnimation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ComponentAnimation" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorDrawable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorDrawable" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterColorFill", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterColorFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorPolygon", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorPolygon" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorStar", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorStar" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorPath", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorPath" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_controller.dart", "libraryId": 268, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[FlareController] is a general-purpose interface for customizing\nthe behavior of a Flare animation at runtime.\n\nIt provides three methods\n- [initialize()] is called at initialization time.\n- [setViewTransform()] and [advance()] are called every frame.\n\n[FlareController]s can be attached to [FlareActor] widgets\nas an optional parameter.\ne.g.:\n```\nFlareActor(\n \"flare_file.flr\",\n controller: _myCustomController\n)\n```\n\nA basic implementation can be found in [FlareControls].", "detail": "", "kind": 7, "label": "FlareController" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_actor.dart", "libraryId": 267, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareActor", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlareActor" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_actor.dart", "libraryId": 267, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareAnimationLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlareAnimationLayer" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_actor.dart", "libraryId": 267, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareActorRenderObject", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlareActorRenderObject" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_controls.dart", "libraryId": 266, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareControls", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[FlareControls] is a concrete implementation of the [FlareController].\n\nThis controller will provide some basic functionality, such as\nplaying an animation, and advancing every frame. If multiple animations are\nplaying at the same time, this controller will mix them.", "detail": "", "kind": 7, "label": "FlareControls" }, { "data": { "autoImportDisplayUri": "package:sensors/sensors.dart", "libraryId": 265, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserAccelerometerEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "UserAccelerometerEvent" }, { "data": { "autoImportDisplayUri": "package:sensors/sensors.dart", "libraryId": 265, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GyroscopeEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "GyroscopeEvent" }, { "data": { "autoImportDisplayUri": "package:sensors/sensors.dart", "libraryId": 265, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccelerometerEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "AccelerometerEvent" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Wrapper around a class that implements [Map] that only exposes `Map`\nmembers.\n\nA simple wrapper that delegates all `Map` members to the map provided in the\nconstructor.\n\nBase for delegating map implementations like [UnmodifiableMapView].", "detail": "", "kind": 7, "label": "MapView" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedListEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An object that can be an element in a [LinkedList].\n\nAll elements of a `LinkedList` must extend this class.\nThe class provides the internal links that link elements together\nin the `LinkedList`, and a reference to the linked list itself\nthat an element is currently part of.\n\nAn entry can be in at most one linked list at a time.\nWhile an entry is in a linked list, the [list] property points to that\nlinked list, and otherwise the `list` property is `null`.\n\nWhen created, an entry is not in any linked list.", "detail": "", "kind": 7, "label": "LinkedListEntry" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableMapView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Map] that disallow modifying the map.\n\nA wrapper around a `Map` that forwards all members to the map provided in\nthe constructor, except for operations that modify the map.\nModifying operations throw instead.", "detail": "", "kind": 7, "label": "UnmodifiableMapView" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base implementation of [Set].\n\nThis class provides a base implementation of a `Set` that depends only\non the abstract members: [add], [contains], [lookup], [remove],\n[iterator], [length] and [toSet].\n\nSome of the methods assume that `toSet` creates a modifiable set.\nIf using this base class for an unmodifiable set,\nwhere `toSet` should return an unmodifiable set,\nit's necessary to reimplement\n[retainAll], [union], [intersection] and [difference].\n\nImplementations of `Set` using this base should consider also implementing\n`clear` in constant time. The default implementation works by removing every\nelement.", "detail": "", "kind": 7, "label": "SetBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableMapBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Basic implementation of an unmodifiable [Map].\n\nThis class has a basic implementation of all but two of the members of\nan umodifiable [Map].\nA simple unmodifiable `Map` class can be implemented by extending this\nclass and implementing `keys` and `operator[]`.\n\nModifying operations throw when used.\nThe remaining non-modifying operations are implemented in terms of `keys`\nand `operator[]`.\n\nThe `keys` iterable should have efficient [Iterable.length] and\n[Iterable.contains] operations, and it should catch concurrent modifications\nof the keys while iterating.\n\nA more efficient implementation is usually possible by overriding\nsome of the other members as well.", "detail": "", "kind": 7, "label": "UnmodifiableMapBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleLinkedQueueEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An entry in a doubly linked list. It contains a pointer to the next\nentry, the previous entry, and the boxed element.", "detail": "", "kind": 7, "label": "DoubleLinkedQueueEntry" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for implementing a [Map].\n\nThis class has a basic implementation of all but five of the members of\n[Map].\nA basic `Map` class can be implemented by extending this class and\nimplementing `keys`, `operator[]`, `operator[]=`, `remove` and `clear`.\nThe remaining operations are implemented in terms of these five.\n\nThe `keys` iterable should have efficient [Iterable.length] and\n[Iterable.contains] operations, and it should catch concurrent modifications\nof the keys while iterating.\n\nA more efficient implementation is usually possible by overriding\nsome of the other members as well.", "detail": "", "kind": 7, "label": "MapBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HashSet", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An unordered hash-table based [Set] implementation.\n\nThe elements of a `HashSet` must have consistent equality\nand hashCode implementations. This means that the equals operation\nmust define a stable equivalence relation on the elements (reflexive,\nsymmetric, transitive, and consistent over time), and that the hashCode\nmust consistent with equality, so that the same for objects that are\nconsidered equal.\n\nThe set allows `null` as an element.\n\nMost simple operations on `HashSet` are done in (potentially amortized)\nconstant time: [add], [contains], [remove], and [length], provided the hash\ncodes of objects are well distributed.\n\nThe iteration order of the set is not specified and depends on\nthe hashcodes of the provided elements. However, the order is stable:\nmultiple iterations over the same set produce the same order, as long as\nthe set is not modified.", "detail": "", "kind": 7, "label": "HashSet" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListQueue", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "List based [Queue].\n\nKeeps a cyclic buffer of elements, and grows to a larger buffer when\nit fills up. This guarantees constant time peek and remove operations, and\namortized constant time add operations.\n\nThe structure is efficient for any queue or stack usage.", "detail": "", "kind": 7, "label": "ListQueue" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Abstract implementation of a list.\n\n`ListBase` can be used as a base class for implementing the `List`\ninterface.\n\nAll operations are defined in terms of `length`, `operator[]`,\n`operator[]=` and `length=`, which need to be implemented.\n\n*NOTICE*: Forwarding just these four operations to a normal growable [List]\n(as created by `new List()`) will give very bad performance for `add` and\n`addAll` operations of `ListBase`. These operations are implemented by\nincreasing the length of the list by one for each `add` operation, and\nrepeatedly increasing the length of a growable list is not efficient.\nTo avoid this, either override 'add' and 'addAll' to also forward directly\nto the growable list, or, preferably, use `DelegatingList` from\n\"package:collection/wrappers.dart\" instead.", "detail": "", "kind": 7, "label": "ListBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HashMap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A hash-table based implementation of [Map].\n\nThe keys of a `HashMap` must have consistent [Object.==]\nand [Object.hashCode] implementations. This means that the `==` operator\nmust define a stable equivalence relation on the keys (reflexive,\nsymmetric, transitive, and consistent over time), and that `hashCode`\nmust be the same for objects that are considered equal by `==`.\n\nThe map allows `null` as a key.\n\nIterating the map's keys, values or entries (through [forEach])\nmay happen in any order.\nThe iteration order only changes when the map is modified.\nValues are iterated in the same order as their associated keys,\nso iterating the [keys] and [values] in parallel\nwill give matching key and value pairs.", "detail": "", "kind": 7, "label": "HashMap" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "This [Iterable] mixin implements all [Iterable] members except `iterator`.\n\nAll other methods are implemented in terms of `iterator`.", "detail": "", "kind": 7, "label": "IterableMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base implementation of a [List] class.\n\n`ListMixin` can be used as a mixin to make a class implement\nthe `List` interface.\n\nThis implements all read operations using only the `length` and\n`operator[]` members. It implements write operations using those and\n`length=` and `operator[]=`\n\n*NOTICE*: Forwarding just these four operations to a normal growable [List]\n(as created by `new List()`) will give very bad performance for `add` and\n`addAll` operations of `ListBase`. These operations are implemented by\nincreasing the length of the list by one for each `add` operation, and\nrepeatedly increasing the length of a growable list is not efficient.\nTo avoid this, either override 'add' and 'addAll' to also forward directly\nto the growable list, or, if possible, use `DelegatingList` from\n\"package:collection/wrappers.dart\" instead.", "detail": "", "kind": 7, "label": "ListMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedHashSet", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [LinkedHashSet] is a hash-table based [Set] implementation.\n\nThe `LinkedHashSet` also keep track of the order that elements were inserted\nin, and iteration happens in first-to-last insertion order.\n\nThe elements of a `LinkedHashSet` must have consistent [Object.==]\nand [Object.hashCode] implementations. This means that the `==` operator\nmust define a stable equivalence relation on the elements (reflexive,\nsymmetric, transitive, and consistent over time), and that `hashCode`\nmust be the same for objects that are considered equal by `==`.\n\nThe set allows `null` as an element.\n\nIteration of elements is done in element insertion order.\nAn element that was added after another will occur later in the iteration.\nAdding an element that is already in the set\ndoes not change its position in the iteration order,\nbut removing an element and adding it again,\nwill make it the last element of an iteration.\n\nMost simple operations on `HashSet` are done in (potentially amortized)\nconstant time: [add], [contains], [remove], and [length], provided the hash\ncodes of objects are well distributed..", "detail": "", "kind": 7, "label": "LinkedHashSet" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An unmodifiable [List] view of another List.\n\nThe source of the elements may be a [List] or any [Iterable] with\nefficient [Iterable.length] and [Iterable.elementAt].", "detail": "", "kind": 7, "label": "UnmodifiableListView" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleLinkedQueue", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Queue] implementation based on a double-linked list.\n\nAllows constant time add, remove-at-ends and peek operations.", "detail": "", "kind": 7, "label": "DoubleLinkedQueue" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedHashMap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A hash-table based implementation of [Map].\n\nThe insertion order of keys is remembered,\nand keys are iterated in the order they were inserted into the map.\nValues are iterated in their corresponding key's order.\nChanging a key's value, when the key is already in the map,\ndoes not change the iteration order,\nbut removing the key and adding it again\nwill make it be last in the iteration order.\n\nThe keys of a `LinkedHashMap` must have consistent [Object.==]\nand [Object.hashCode] implementations. This means that the `==` operator\nmust define a stable equivalence relation on the keys (reflexive,\nsymmetric, transitive, and consistent over time), and that `hashCode`\nmust be the same for objects that are considered equal by `==`.\n\nThe map allows `null` as a key.", "detail": "", "kind": 7, "label": "LinkedHashMap" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Queue", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Queue] is a collection that can be manipulated at both ends. One\ncan iterate over the elements of a queue through [forEach] or with\nan [Iterator].\n\nIt is generally not allowed to modify the queue (add or remove entries)\nwhile an operation on the queue is being performed, for example during a\ncall to [forEach].\nModifying the queue while it is being iterated will most likely break the\niteration.\nThis goes both for using the [iterator] directly, or for iterating an\n`Iterable` returned by a method like [map] or [where].", "detail": "", "kind": 7, "label": "Queue" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Mixin implementing a [Map].\n\nThis mixin has a basic implementation of all but five of the members of\n[Map].\nA basic `Map` class can be implemented by mixin in this class and\nimplementing `keys`, `operator[]`, `operator[]=`, `remove` and `clear`.\nThe remaining operations are implemented in terms of these five.\n\nThe `keys` iterable should have efficient [Iterable.length] and\n[Iterable.contains] operations, and it should catch concurrent modifications\nof the keys while iterating.\n\nA more efficient implementation is usually possible by overriding\nsome of the other members as well.", "detail": "", "kind": 7, "label": "MapMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SplayTreeSet", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Set] of objects that can be ordered relative to each other.\n\nThe set is based on a self-balancing binary tree. It allows most operations\nin amortized logarithmic time.\n\nElements of the set are compared using the `compare` function passed in\nthe constructor, both for ordering and for equality.\nIf the set contains only an object `a`, then `set.contains(b)`\nwill return `true` if and only if `compare(a, b) == 0`,\nand the value of `a == b` is not even checked.\nIf the compare function is omitted, the objects are assumed to be\n[Comparable], and are compared using their [Comparable.compareTo] method.\nNon-comparable objects (including `null`) will not work as an element\nin that case.", "detail": "", "kind": 7, "label": "SplayTreeSet" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Mixin implementation of [Set].\n\nThis class provides a base implementation of a `Set` that depends only\non the abstract members: [add], [contains], [lookup], [remove],\n[iterator], [length] and [toSet].\n\nSome of the methods assume that `toSet` creates a modifiable set.\nIf using this mixin for an unmodifiable set,\nwhere `toSet` should return an unmodifiable set,\nit's necessary to reimplement\n[retainAll], [union], [intersection] and [difference].\n\nImplementations of `Set` using this mixin should consider also implementing\n`clear` in constant time. The default implementation works by removing every\nelement.", "detail": "", "kind": 7, "label": "SetMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A specialized double-linked list of elements that extends [LinkedListEntry].\n\nThis is not a generic data structure. It only accepts elements that extend\nthe [LinkedListEntry] class. See the [Queue] implementations for generic\ncollections that allow constant time adding and removing at the ends.\n\nThis is not a [List] implementation. Despite its name, this class does not\nimplement the [List] interface. It does not allow constant time lookup by\nindex.\n\nBecause the elements themselves contain the links of this linked list,\neach element can be in only one list at a time. To add an element to another\nlist, it must first be removed from its current list (if any).\n\nIn return, each element knows its own place in the linked list, as well as\nwhich list it is in. This allows constant time\n[LinkedListEntry.insertAfter], [LinkedListEntry.insertBefore] and\n[LinkedListEntry.unlink] operations when all you have is the element.\n\nA `LinkedList` also allows constant time adding and removing at either end,\nand a constant time length getter.", "detail": "", "kind": 7, "label": "LinkedList" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HasNextIterator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [HasNextIterator] class wraps an [Iterator] and provides methods to\niterate over an object using `hasNext` and `next`.\n\nAn [HasNextIterator] does not implement the [Iterator] interface.", "detail": "", "kind": 7, "label": "HasNextIterator" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for implementing [Iterable].\n\nThis class implements all methods of [Iterable], except [Iterable.iterator],\nin terms of `iterator`.", "detail": "", "kind": 7, "label": "IterableBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SplayTreeMap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Map] of objects that can be ordered relative to each other.\n\nThe map is based on a self-balancing binary tree. It allows most operations\nin amortized logarithmic time.\n\nKeys of the map are compared using the `compare` function passed in\nthe constructor, both for ordering and for equality.\nIf the map contains only the key `a`, then `map.containsKey(b)`\nwill return `true` if and only if `compare(a, b) == 0`,\nand the value of `a == b` is not even checked.\nIf the compare function is omitted, the objects are assumed to be\n[Comparable], and are compared using their [Comparable.compareTo] method.\nNon-comparable objects (including `null`) will not work as keys\nin that case.\n\nTo allow calling [operator []], [remove] or [containsKey] with objects\nthat are not supported by the `compare` function, an extra `isValidKey`\npredicate function can be supplied. This function is tested before\nusing the `compare` function on an argument value that may not be a [K]\nvalue. If omitted, the `isValidKey` function defaults to testing if the\nvalue is a [K].", "detail": "", "kind": 7, "label": "SplayTreeMap" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimelineSyncFunction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A typedef for the function argument to [Timeline.timeSync].", "detail": "() → T", "kind": 7, "label": "TimelineSyncFunction" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Metrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "Metrics" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Service", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Access information about the service protocol and control the web server\nthat provides access to the services provided by the Dart VM for\ndebugging and inspecting Dart programs.", "detail": "", "kind": 7, "label": "Service" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A class to represent Flow events.\n\n[Flow] objects are used to thread flow events between timeline slices,\nfor example, those created with the [Timeline] class below. Adding\n[Flow] objects cause arrows to be drawn between slices in Chrome's trace\nviewer. The arrows start at e.g [Timeline] events that are passed a\n[Flow.begin] object, go through [Timeline] events that are passed a\n[Flow.step] object, and end at [Timeline] events that are passed a\n[Flow.end] object, all having the same [Flow.id]. For example:\n\n```dart\nvar flow = Flow.begin();\nTimeline.timeSync('flow_test', () {\n doSomething();\n}, flow: flow);\n\nTimeline.timeSync('flow_test', () {\n doSomething();\n}, flow: Flow.step(flow.id));\n\nTimeline.timeSync('flow_test', () {\n doSomething();\n}, flow: Flow.end(flow.id));\n```", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Counter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A changing value. Initial value is 0.0.", "detail": "", "kind": 7, "label": "Counter" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserTag", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A UserTag can be used to group samples in the Observatory profiler.", "detail": "", "kind": 7, "label": "UserTag" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServiceProtocolInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Service protocol is the protocol that a client like the Observatory\ncould use to access the services provided by the Dart VM for\ndebugging and inspecting Dart programs. This class encapsulates the\nversion number and Uri for accessing this service.", "detail": "", "kind": 7, "label": "ServiceProtocolInfo" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimelineTask", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An asynchronous task on the timeline. An asynchronous task can have many\n(nested) synchronous operations. Synchronous operations can live longer than\nthe current isolate event. To pass a [TimelineTask] to another isolate,\nyou must first call [pass] to get the task id and then construct a new\n[TimelineTask] in the other isolate.", "detail": "", "kind": 7, "label": "TimelineTask" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gauge", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A measured value with a min and max. Initial value is min. Value will\nbe clamped to the interval [min, max].", "detail": "", "kind": 7, "label": "Gauge" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Metric", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Abstract [Metric] class. Metric names must be unique, are hierarchical,\nand use periods as separators. For example, 'a.b.c'. Uniqueness is only\nenforced when a Metric is registered. The name of a metric cannot contain\nthe slash ('/') character.", "detail": "", "kind": 7, "label": "Metric" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServiceExtensionResponse", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A response to a service protocol extension RPC.\n\nIf the RPC was successful, use [ServiceExtensionResponse.result], otherwise\nuse [ServiceExtensionResponse.error].", "detail": "", "kind": 7, "label": "ServiceExtensionResponse" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Timeline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Add to the timeline.\n\n[Timeline]'s methods add synchronous events to the timeline. When\ngenerating a timeline in Chrome's tracing format, using [Timeline] generates\n\"Complete\" events. [Timeline]'s [startSync] and [finishSync] can be used\nexplicitly, or implicitly by wrapping a closure in [timeSync]. For example:\n\n```dart\nTimeline.startSync(\"Doing Something\");\ndoSomething();\nTimeline.finishSync();\n```\n\nOr:\n\n```dart\nTimeline.timeSync(\"Doing Something\", () {\n doSomething();\n});\n```", "detail": "", "kind": 7, "label": "Timeline" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stdout", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[Stdout] represents the [IOSink] for either `stdout` or `stderr`.\n\nIt provides a *blocking* `IOSink`, so using this to write will block until\nthe output is written.\n\nIn some situations this blocking behavior is undesirable as it does not\nprovide the same non-blocking behavior as dart:io in general exposes.\nUse the property [nonBlocking] to get an `IOSink` which has the non-blocking\nbehavior.\n\nThis class can also be used to check whether `stdout` or `stderr` is\nconnected to a terminal and query some terminal properties.\n\nThe [addError] API is inherited from [StreamSink] and calling it will result\nin an unhandled asynchronous error unless there is an error handler on\n[done].", "detail": "", "kind": 7, "label": "Stdout" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpOverrides", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "This class facilitates overriding [HttpClient] with a mock implementation.\nIt should be extended by another class in client code with overrides\nthat construct a mock implementation. The implementation in this base class\ndefaults to the actual [HttpClient] implementation. For example:\n\n```\nclass MyHttpClient implements HttpClient {\n ...\n // An implementation of the HttpClient interface\n ...\n}\n\nmain() {\n HttpOverrides.runZoned(() {\n ...\n // Operations will use MyHttpClient instead of the real HttpClient\n // implementation whenever HttpClient is used.\n ...\n }, createHttpClient: (SecurityContext c) => new MyHttpClient(c));\n}\n```", "detail": "", "kind": 7, "label": "HttpOverrides" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContentType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Representation of a content type. An instance of [ContentType] is\nimmutable.", "detail": "", "kind": 7, "label": "ContentType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSecureSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "RawSecureSocket provides a secure (SSL or TLS) network connection.\nClient connections to a server are provided by calling\nRawSecureSocket.connect. A secure server, created with\n[RawSecureServerSocket], also returns RawSecureSocket objects representing\nthe server end of a secure connection.\nThe certificate provided by the server is checked\nusing the trusted certificates set in the SecurityContext object.\nThe default [SecurityContext] object contains a built-in set of trusted\nroot certificates for well-known certificate authorities.", "detail": "", "kind": 7, "label": "RawSecureSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpSession", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "HttpSession" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpStatus", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "HTTP status codes. Exported in dart:io and dart:html.", "detail": "", "kind": 7, "label": "HttpStatus" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpRequest", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A server-side object\nthat contains the content of and information about an HTTP request.\n\n__Note__: Check out the\n[http_server](https://pub.dartlang.org/packages/http_server)\npackage, which makes working with the low-level\ndart:io HTTP server subsystem easier.\n\n`HttpRequest` objects are generated by an [HttpServer],\nwhich listens for HTTP requests on a specific host and port.\nFor each request received, the HttpServer, which is a [Stream],\ngenerates an `HttpRequest` object and adds it to the stream.\n\nAn `HttpRequest` object delivers the body content of the request\nas a stream of byte lists.\nThe object also contains information about the request,\nsuch as the method, URI, and headers.\n\nIn the following code, an HttpServer listens\nfor HTTP requests. When the server receives a request,\nit uses the HttpRequest object's `method` property to dispatch requests.\n\n final HOST = InternetAddress.loopbackIPv4;\n final PORT = 80;\n\n HttpServer.bind(HOST, PORT).then((_server) {\n _server.listen((HttpRequest request) {\n switch (request.method) {\n case 'GET':\n handleGetRequest(request);\n break;\n case 'POST':\n ...\n }\n },\n onError: handleError); // listen() failed.\n }).catchError(handleError);\n\nAn HttpRequest object provides access to the associated [HttpResponse]\nobject through the response property.\nThe server writes its response to the body of the HttpResponse object.\nFor example, here's a function that responds to a request:\n\n void handleGetRequest(HttpRequest req) {\n HttpResponse res = req.response;\n res.write('Received request ${req.method}: ${req.uri.path}');\n res.close();\n }", "detail": "", "kind": 7, "label": "HttpRequest" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SocketDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [SocketDirection] is used as a parameter to [Socket.close] and\n[RawSocket.close] to close a socket in the specified direction(s).", "detail": "", "kind": 7, "label": "SocketDirection" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibEncoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [ZLibEncoder] encoder is used by [ZLibCodec] and [GZipCodec] to compress\ndata.", "detail": "", "kind": 7, "label": "ZLibEncoder" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RedirectException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "RedirectException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientDigestCredentials", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Represents credentials for digest authentication. Digest\nauthentication is only supported for servers using the MD5\nalgorithm and quality of protection (qop) of either \"none\" or\n\"auth\".", "detail": "", "kind": 7, "label": "HttpClientDigestCredentials" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InternetAddress", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An internet address.\n\nThis object holds an internet address. If this internet address\nis the result of a DNS lookup, the address also holds the hostname\nused to make the lookup.\nAn Internet address combined with a port number represents an\nendpoint to which a socket can connect or a listening socket can\nbind.", "detail": "", "kind": 7, "label": "InternetAddress" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SecurityContext", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The object containing the certificates to trust when making\na secure client connection, and the certificate chain and\nprivate key to serve from a secure server.\n\nThe [SecureSocket] and [SecureServerSocket] classes take a SecurityContext\nas an argument to their connect and bind methods.\n\nCertificates and keys can be added to a SecurityContext from either PEM\nor PKCS12 containers.\n\niOS note: Some methods to add, remove, and inspect certificates are not yet\nimplemented. However, the platform's built-in trusted certificates can\nbe used, by way of [SecurityContext.defaultContext].", "detail": "", "kind": 7, "label": "SecurityContext" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionTask", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Returned by the `startConnect` methods on client-side socket types `S`,\n`ConnectionTask<S>` allows cancelling an attempt to connect to a host.", "detail": "", "kind": 7, "label": "ConnectionTask" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for all IO related exceptions.", "detail": "", "kind": 7, "label": "IOException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A two-way HTTP communication object for client or server applications.\n\nThe stream exposes the messages received. A text message will be of type\n`String` and a binary message will be of type `List<int>`.", "detail": "", "kind": 7, "label": "WebSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[ProcessInfo] provides methods for retrieving information about the\ncurrent process.", "detail": "", "kind": 7, "label": "ProcessInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Socket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A high-level class for communicating over a TCP socket.\n\nThe [Socket] exposes both a [Stream] and a [IOSink] interface, making it\nideal for using together with other [Stream]s.", "detail": "", "kind": 7, "label": "Socket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServerSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [ServerSocket] represents a listening socket, and provides a\nstream of [Socket] objects, one for each connection made to the\nlistening socket.\n\nSee [Socket] for more info.", "detail": "", "kind": 7, "label": "ServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawDatagramSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawDatagramSocket] is a low-level interface to an UDP socket,\nexposing the raw events signaled by the system. It's a [Stream] of\n[RawSocketEvent]s.\n\nNote that the event [RawSocketEvent.readClosed] will never be\nreceived as an UDP socket cannot be closed by a remote peer.", "detail": "", "kind": 7, "label": "RawDatagramSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemCreateEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for newly created file system objects.", "detail": "", "kind": 7, "label": "FileSystemCreateEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A client that receives content, such as web pages, from\na server using the HTTP protocol.\n\nHttpClient contains a number of methods to send an [HttpClientRequest]\nto an Http server and receive an [HttpClientResponse] back.\nFor example, you can use the [get], [getUrl], [post], and [postUrl] methods\nfor GET and POST requests, respectively.\n\n## Making a simple GET request: an example\n\nA `getUrl` request is a two-step process, triggered by two [Future]s.\nWhen the first future completes with a [HttpClientRequest], the underlying\nnetwork connection has been established, but no data has been sent.\nIn the callback function for the first future, the HTTP headers and body\ncan be set on the request. Either the first write to the request object\nor a call to [close] sends the request to the server.\n\nWhen the HTTP response is received from the server,\nthe second future, which is returned by close,\ncompletes with an [HttpClientResponse] object.\nThis object provides access to the headers and body of the response.\nThe body is available as a stream implemented by HttpClientResponse.\nIf a body is present, it must be read. Otherwise, it leads to resource\nleaks. Consider using [HttpClientResponse.drain] if the body is unused.\n\n HttpClient client = new HttpClient();\n client.getUrl(Uri.parse(\"http://www.example.com/\"))\n .then((HttpClientRequest request) {\n // Optionally set up headers...\n // Optionally write to the request object...\n // Then call close.\n ...\n return request.close();\n })\n .then((HttpClientResponse response) {\n // Process the response.\n ...\n });\n\nThe future for [HttpClientRequest] is created by methods such as\n[getUrl] and [open].\n\n## HTTPS connections\n\nAn HttpClient can make HTTPS requests, connecting to a server using\nthe TLS (SSL) secure networking protocol. Calling [getUrl] with an\nhttps: scheme will work automatically, if the server's certificate is\nsigned by a root CA (certificate authority) on the default list of\nwell-known trusted CAs, compiled by Mozilla.\n\nTo add a custom trusted certificate authority, or to send a client\ncertificate to servers that request one, pass a [SecurityContext] object\nas the optional `context` argument to the `HttpClient` constructor.\nThe desired security options can be set on the [SecurityContext] object.\n\n## Headers\n\nAll HttpClient requests set the following header by default:\n\n Accept-Encoding: gzip\n\nThis allows the HTTP server to use gzip compression for the body if\npossible. If this behavior is not desired set the\n`Accept-Encoding` header to something else.\nTo turn off gzip compression of the response, clear this header:\n\n request.headers.removeAll(HttpHeaders.acceptEncodingHeader)\n\n## Closing the HttpClient\n\nThe HttpClient supports persistent connections and caches network\nconnections to reuse them for multiple requests whenever\npossible. This means that network connections can be kept open for\nsome time after a request has completed. Use HttpClient.close\nto force the HttpClient object to shut down and to close the idle\nnetwork connections.\n\n## Turning proxies on and off\n\nBy default the HttpClient uses the proxy configuration available\nfrom the environment, see [findProxyFromEnvironment]. To turn off\nthe use of proxies set the [findProxy] property to\n[:null:].\n\n HttpClient client = new HttpClient();\n client.findProxy = null;", "detail": "", "kind": 7, "label": "HttpClient" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base event class emitted by [FileSystemEntity.watch].", "detail": "", "kind": 7, "label": "FileSystemEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocketStatus", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "WebSocket status codes used when closing a WebSocket connection.", "detail": "", "kind": 7, "label": "WebSocketStatus" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OSError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An [OSError] object holds information about an error from the\noperating system.", "detail": "", "kind": 7, "label": "OSError" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileStat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A FileStat object represents the result of calling the POSIX stat() function\non a file system object. It is an immutable object, representing the\nsnapshotted values returned by the stat() call.", "detail": "", "kind": 7, "label": "FileStat" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RandomAccessFile", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "`RandomAccessFile` provides random access to the data in a\nfile.\n\n`RandomAccessFile` objects are obtained by calling the\n`open` method on a [File] object.\n\nA `RandomAccessFile` have both asynchronous and synchronous\nmethods. The asynchronous methods all return a `Future`\nwhereas the synchronous methods will return the result directly,\nand block the current isolate until the result is ready.\n\nAt most one asynchronous method can be pending on a given `RandomAccessFile`\ninstance at the time. If an asynchronous method is called when one is\nalready in progress a [FileSystemException] is thrown.\n\nIf an asynchronous method is pending it is also not possible to call any\nsynchronous methods. This will also throw a [FileSystemException].", "detail": "", "kind": 7, "label": "RandomAccessFile" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSocketEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Events for the [RawSocket].", "detail": "", "kind": 7, "label": "RawSocketEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "File", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A reference to a file on the file system.\n\nA File instance is an object that holds a [path] on which operations can\nbe performed.\nYou can get the parent directory of the file using the getter [parent],\na property inherited from [FileSystemEntity].\n\nCreate a new File object with a pathname to access the specified file on the\nfile system from your program.\n\n var myFile = new File('file.txt');\n\nThe File class contains methods for manipulating files and their contents.\nUsing methods in this class, you can open and close files, read to and write\nfrom them, create and delete them, and check for their existence.\n\nWhen reading or writing a file, you can use streams (with [openRead]),\nrandom access operations (with [open]),\nor convenience methods such as [readAsString],\n\nMost methods in this class occur in synchronous and asynchronous pairs,\nfor example, [readAsString] and [readAsStringSync].\nUnless you have a specific reason for using the synchronous version\nof a method, prefer the asynchronous version to avoid blocking your program.\n\n## If path is a link\n\nIf [path] is a symbolic link, rather than a file,\nthen the methods of File operate on the ultimate target of the\nlink, except for [delete] and [deleteSync], which operate on\nthe link.\n\n## Read from a file\n\nThe following code sample reads the entire contents from a file as a string\nusing the asynchronous [readAsString] method:\n\n import 'dart:async';\n import 'dart:io';\n\n void main() {\n new File('file.txt').readAsString().then((String contents) {\n print(contents);\n });\n }\n\nA more flexible and useful way to read a file is with a [Stream].\nOpen the file with [openRead], which returns a stream that\nprovides the data in the file as chunks of bytes.\nListen to the stream for data and process as needed.\nYou can use various transformers in succession to manipulate the\ndata into the required format or to prepare it for output.\n\nYou might want to use a stream to read large files,\nto manipulate the data with transformers,\nor for compatibility with another API, such as [WebSocket]s.\n\n import 'dart:io';\n import 'dart:convert';\n import 'dart:async';\n\n main() {\n final file = new File('file.txt');\n Stream<List<int>> inputStream = file.openRead();\n\n inputStream\n .transform(utf8.decoder) // Decode bytes to UTF-8.\n .transform(new LineSplitter()) // Convert stream to individual lines.\n .listen((String line) { // Process results.\n print('$line: ${line.length} bytes');\n },\n onDone: () { print('File is now closed.'); },\n onError: (e) { print(e.toString()); });\n }\n\n## Write to a file\n\nTo write a string to a file, use the [writeAsString] method:\n\n import 'dart:io';\n\n void main() {\n final filename = 'file.txt';\n new File(filename).writeAsString('some content')\n .then((File file) {\n // Do something with the file.\n });\n }\n\nYou can also write to a file using a [Stream]. Open the file with\n[openWrite], which returns an [IOSink] to which you can write data.\nBe sure to close the sink with the [IOSink.close] method.\n\n import 'dart:io';\n\n void main() {\n var file = new File('file.txt');\n var sink = file.openWrite();\n sink.write('FILE ACCESSED ${new DateTime.now()}\\n');\n\n // Close the IOSink to free system resources.\n sink.close();\n }\n\n## The use of Futures\n\nTo avoid unintentional blocking of the program,\nseveral methods use a [Future] to return a value. For example,\nthe [length] method, which gets the length of a file, returns a Future.\nUse `then` to register a callback function, which is called when\nthe value is ready.\n\n import 'dart:io';\n\n main() {\n final file = new File('file.txt');\n\n file.length().then((len) {\n print(len);\n });\n }\n\nIn addition to length, the [exists], [lastModified], [stat], and\nother methods, return Futures.\n\n## Other resources\n\n* [Dart by Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)\n provides additional task-oriented code samples that show how to use\n various API from the Directory class and the related [File] class.\n\n* [I/O for Command-Line\n Apps](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartio---io-for-command-line-apps)\n a section from _A Tour of the Dart Libraries_ covers files and directories.\n\n* [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),\n a tutorial about writing command-line apps, includes information about\n files and directories.", "detail": "", "kind": 7, "label": "File" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stdin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[Stdin] allows both synchronous and asynchronous reads from the standard\ninput stream.\n\nMixing synchronous and asynchronous reads is undefined.", "detail": "", "kind": 7, "label": "Stdin" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientCredentials", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "HttpClientCredentials" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompressionOptions", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [CompressionOptions] class allows you to control\nthe options of WebSocket compression.", "detail": "", "kind": 7, "label": "CompressionOptions" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Datagram", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Datagram package. Data send to and received from datagram sockets\ncontains the internet address and port of the destination or source\ntogeter with the data.", "detail": "", "kind": 7, "label": "Datagram" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemDeleteEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for deletion of file system objects.", "detail": "", "kind": 7, "label": "FileSystemDeleteEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeaderValue", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Representation of a header value in the form:\n\n [:value; parameter1=value1; parameter2=value2:]\n\n[HeaderValue] can be used to conveniently build and parse header\nvalues on this form.\n\nTo build an [:accepts:] header with the value\n\n text/plain; q=0.3, text/html\n\nuse code like this:\n\n HttpClientRequest request = ...;\n var v = new HeaderValue(\"text/plain\", {\"q\": \"0.3\"});\n request.headers.add(HttpHeaders.acceptHeader, v);\n request.headers.add(HttpHeaders.acceptHeader, \"text/html\");\n\nTo parse the header values use the [:parse:] static method.\n\n HttpRequest request = ...;\n List<String> values = request.headers[HttpHeaders.acceptHeader];\n values.forEach((value) {\n HeaderValue v = HeaderValue.parse(value);\n // Use v.value and v.parameters\n });\n\nAn instance of [HeaderValue] is immutable.", "detail": "", "kind": 7, "label": "HeaderValue" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkInterface", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [NetworkInterface] represents an active network interface on the current\nsystem. It contains a list of [InternetAddress]es that are bound to the\ninterface.", "detail": "", "kind": 7, "label": "NetworkInterface" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibDecoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [ZLibDecoder] is used by [ZLibCodec] and [GZipCodec] to decompress data.", "detail": "", "kind": 7, "label": "ZLibDecoder" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpServer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A server that delivers content, such as web pages, using the HTTP protocol.\n\nThe HttpServer is a [Stream] that provides [HttpRequest] objects. Each\nHttpRequest has an associated [HttpResponse] object.\nThe server responds to a request by writing to that HttpResponse object.\nThe following example shows how to bind an HttpServer to an IPv6\n[InternetAddress] on port 80 (the standard port for HTTP servers)\nand how to listen for requests.\nPort 80 is the default HTTP port. However, on most systems accessing\nthis requires super-user privileges. For local testing consider\nusing a non-reserved port (1024 and above).\n\n import 'dart:io';\n\n main() {\n HttpServer\n .bind(InternetAddress.anyIPv6, 80)\n .then((server) {\n server.listen((HttpRequest request) {\n request.response.write('Hello, world!');\n request.response.close();\n });\n });\n }\n\nIncomplete requests, in which all or part of the header is missing, are\nignored, and no exceptions or HttpRequest objects are generated for them.\nLikewise, when writing to an HttpResponse, any [Socket] exceptions are\nignored and any future writes are ignored.\n\nThe HttpRequest exposes the request headers and provides the request body,\nif it exists, as a Stream of data. If the body is unread, it is drained\nwhen the server writes to the HttpResponse or closes it.\n\n## Bind with a secure HTTPS connection\n\nUse [bindSecure] to create an HTTPS server.\n\nThe server presents a certificate to the client. The certificate\nchain and the private key are set in the [SecurityContext]\nobject that is passed to [bindSecure].\n\n import 'dart:io';\n import \"dart:isolate\";\n\n main() {\n SecurityContext context = new SecurityContext();\n var chain =\n Platform.script.resolve('certificates/server_chain.pem')\n .toFilePath();\n var key =\n Platform.script.resolve('certificates/server_key.pem')\n .toFilePath();\n context.useCertificateChain(chain);\n context.usePrivateKey(key, password: 'dartdart');\n\n HttpServer\n .bindSecure(InternetAddress.anyIPv6,\n 443,\n context)\n .then((server) {\n server.listen((HttpRequest request) {\n request.response.write('Hello, world!');\n request.response.close();\n });\n });\n }\n\n The certificates and keys are PEM files, which can be created and\n managed with the tools in OpenSSL.\n\n## Connect to a server socket\n\nYou can use the [listenOn] constructor to attach an HTTP server to\na [ServerSocket].\n\n import 'dart:io';\n\n main() {\n ServerSocket.bind(InternetAddress.anyIPv6, 80)\n .then((serverSocket) {\n HttpServer httpserver = new HttpServer.listenOn(serverSocket);\n serverSocket.listen((Socket socket) {\n socket.write('Hello, client.');\n });\n });\n }\n\n## Other resources\n\n* HttpServer is a Stream. Refer to the [Stream] class for information\nabout the streaming qualities of an HttpServer.\nPausing the subscription of the stream, pauses at the OS level.\n\n* The [shelf](https://pub.dartlang.org/packages/shelf)\npackage on pub.dartlang.org contains a set of high-level classes that,\ntogether with this class, makes it easy to provide content through HTTP\nservers.", "detail": "", "kind": 7, "label": "HttpServer" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemMoveEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for moving of file system objects.", "detail": "", "kind": 7, "label": "FileSystemMoveEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessResult", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[ProcessResult] represents the result of running a non-interactive\nprocess started with [Process.run] or [Process.runSync].", "detail": "", "kind": 7, "label": "ProcessResult" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HandshakeException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An exception that happens in the handshake phase of establishing\na secure network connection.", "detail": "", "kind": 7, "label": "HandshakeException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientBasicCredentials", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Represents credentials for basic authentication.", "detail": "", "kind": 7, "label": "HttpClientBasicCredentials" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CertificateException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An exception that happens in the handshake phase of establishing\na secure network connection, when looking up or verifying a\ncertificate.", "detail": "", "kind": 7, "label": "CertificateException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TlsException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A secure networking exception caused by a failure in the\n TLS/SSL protocol.", "detail": "", "kind": 7, "label": "TlsException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocketException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "WebSocketException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cookie", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Representation of a cookie. For cookies received by the server as\nCookie header values only [:name:] and [:value:] fields will be\nset. When building a cookie for the 'set-cookie' header in the server\nand when receiving cookies in the client as 'set-cookie' headers all\nfields can be used.", "detail": "", "kind": 7, "label": "Cookie" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibOption", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Exposes ZLib options for input parameters.\n\nSee http://www.zlib.net/manual.html for more documentation.", "detail": "", "kind": 7, "label": "ZLibOption" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpHeaders", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Headers for HTTP requests and responses.\n\nIn some situations, headers are immutable:\n\n* HttpRequest and HttpClientResponse always have immutable headers.\n\n* HttpResponse and HttpClientRequest have immutable headers\n from the moment the body is written to.\n\nIn these situations, the mutating methods throw exceptions.\n\nFor all operations on HTTP headers the header name is\ncase-insensitive.\n\nTo set the value of a header use the `set()` method:\n\n request.headers.set(HttpHeaders.cacheControlHeader,\n 'max-age=3600, must-revalidate');\n\nTo retrieve the value of a header use the `value()` method:\n\n print(request.headers.value(HttpHeaders.userAgentHeader));\n\nAn HttpHeaders object holds a list of values for each name\nas the standard allows. In most cases a name holds only a single value,\nThe most common mode of operation is to use `set()` for setting a value,\nand `value()` for retrieving a value.", "detail": "", "kind": 7, "label": "HttpHeaders" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DetachedSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "When detaching a socket from either the [:HttpServer:] or the\n[:HttpClient:] due to a HTTP connection upgrade there might be\nunparsed data already read from the socket. This unparsed data\ntogether with the detached socket is returned in an instance of\nthis class.", "detail": "", "kind": 7, "label": "DetachedSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessSignal", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "On Posix systems, [ProcessSignal] is used to send a specific signal\nto a child process, see [:Process.kill:].\n\nSome [ProcessSignal]s can also be watched, as a way to intercept the default\nsignal handler and implement another. See [ProcessSignal.watch] for more\ninformation.", "detail": "", "kind": 7, "label": "ProcessSignal" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SignalException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "SignalException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BytesBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Builds a list of bytes, allowing bytes and lists of bytes to be added at the\nend.\n\nUsed to efficiently collect bytes and lists of bytes.", "detail": "", "kind": 7, "label": "BytesBuilder" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOSink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A combined byte and text output.\n\nAn [IOSink] combines a [StreamSink] of bytes with a [StringSink],\nand allows easy output of both bytes and text.\n\nWriting text ([write]) and adding bytes ([add]) may be interleaved freely.\n\nWhile a stream is being added using [addStream], any further attempts\nto add or write to the [IOSink] will fail until the [addStream] completes.\n\nIt is an error to add data to the [IOSink] after the sink is closed.", "detail": "", "kind": 7, "label": "IOSink" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RedirectInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Redirect information.", "detail": "", "kind": 7, "label": "RedirectInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpConnectionInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information about an [HttpRequest], [HttpResponse], [HttpClientRequest], or\n[HttpClientResponse] connection.", "detail": "", "kind": 7, "label": "HttpConnectionInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemEncoding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The system encoding is the current code page on Windows and UTF-8 on Linux\nand Mac.", "detail": "", "kind": 7, "label": "SystemEncoding" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directory", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A reference to a directory (or _folder_) on the file system.\n\nA Directory instance is an object holding a [path] on which operations can\nbe performed. The path to the directory can be [absolute] or relative.\nYou can get the parent directory using the getter [parent],\na property inherited from [FileSystemEntity].\n\nIn addition to being used as an instance to access the file system,\nDirectory has a number of static properties, such as [systemTemp],\nwhich gets the system's temporary directory, and the getter and setter\n[current], which you can use to access or change the current directory.\n\nCreate a new Directory object with a pathname to access the specified\ndirectory on the file system from your program.\n\n var myDir = new Directory('myDir');\n\nMost methods in this class occur in synchronous and asynchronous pairs,\nfor example, [create] and [createSync].\nUnless you have a specific reason for using the synchronous version\nof a method, prefer the asynchronous version to avoid blocking your program.\n\n## Create a directory\n\nThe following code sample creates a directory using the [create] method.\nBy setting the `recursive` parameter to true, you can create the\nnamed directory and all its necessary parent directories,\nif they do not already exist.\n\n import 'dart:io';\n\n void main() {\n // Creates dir/ and dir/subdir/.\n new Directory('dir/subdir').create(recursive: true)\n // The created directory is returned as a Future.\n .then((Directory directory) {\n print(directory.path);\n });\n }\n\n## List a directory\n\nUse the [list] or [listSync] methods to get the files and directories\ncontained by a directory.\nSet `recursive` to true to recursively list all subdirectories.\nSet `followLinks` to true to follow symbolic links.\nThe list method returns a [Stream] that provides FileSystemEntity\nobjects. Use the listen callback function to process each object\nas it become available.\n\n import 'dart:io';\n\n void main() {\n // Get the system temp directory.\n var systemTempDir = Directory.systemTemp;\n\n // List directory contents, recursing into sub-directories,\n // but not following symbolic links.\n systemTempDir.list(recursive: true, followLinks: false)\n .listen((FileSystemEntity entity) {\n print(entity.path);\n });\n }\n\n## The use of Futures\n\nI/O operations can block a program for some period of time while it waits for\nthe operation to complete. To avoid this, all\nmethods involving I/O have an asynchronous variant which returns a [Future].\nThis future completes when the I/O operation finishes. While the I/O\noperation is in progress, the Dart program is not blocked,\nand can perform other operations.\n\nFor example,\nthe [exists] method, which determines whether the directory exists,\nreturns a boolean value using a Future.\nUse `then` to register a callback function, which is called when\nthe value is ready.\n\n import 'dart:io';\n\n main() {\n final myDir = new Directory('dir');\n myDir.exists().then((isThere) {\n isThere ? print('exists') : print('non-existent');\n });\n }\n\n\nIn addition to exists, the [stat], [rename], and\nother methods, return Futures.\n\n## Other resources\n\n* [Dart by Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)\n provides additional task-oriented code samples that show how to use\n various API from the Directory class and the related [File] class.\n\n* [I/O for Command-Line\n Apps](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartio---io-for-command-line-apps)\n a section from _A Tour of the Dart Libraries_ covers files and directories.\n\n* [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),\n a tutorial about writing command-line apps, includes information about\n files and directories.", "detail": "", "kind": 7, "label": "Directory" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessStartMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Modes for running a new process.", "detail": "", "kind": 7, "label": "ProcessStartMode" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOOverrides", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "This class facilitates overriding various APIs of dart:io with mock\nimplementations.\n\nThis abstract base class should be extended with overrides for the\noperations needed to construct mocks. The implementations in this base class\ndefault to the actual dart:io implementation. For example:\n\n```\nclass MyDirectory implements Directory {\n ...\n // An implementation of the Directory interface\n ...\n}\n\nmain() {\n IOOverrides.runZoned(() {\n ...\n // Operations will use MyDirectory instead of dart:io's Directory\n // implementation whenever Directory is used.\n ...\n }, createDirectory: (String path) => new MyDirectory(path));\n}\n```", "detail": "", "kind": 7, "label": "IOOverrides" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InternetAddressType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[InternetAddressType] is the type an [InternetAddress]. Currently,\nIP version 4 (IPv4) and IP version 6 (IPv6) are supported.", "detail": "", "kind": 7, "label": "InternetAddressType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSecureServerSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The RawSecureServerSocket is a server socket, providing a stream of low-level\n[RawSecureSocket]s.\n\nSee [RawSecureSocket] for more info.", "detail": "", "kind": 7, "label": "RawSecureServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemModifyEvent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for modifications of file system objects.", "detail": "", "kind": 7, "label": "FileSystemModifyEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GZipCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [GZipCodec] encodes raw bytes to GZip compressed bytes and decodes GZip\ncompressed bytes to raw bytes.\n\nThe difference between [ZLibCodec] and [GZipCodec] is that the [GZipCodec]\nwraps the `ZLib` compressed bytes in `GZip` frames.", "detail": "", "kind": 7, "label": "GZipCodec" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "HttpException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StdoutException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "StdoutException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSocketOption", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawSocketOption] is used as a parameter to [Socket.setRawOption] and\n[RawSocket.setRawOption] to set customize the behaviour of the underlying\nsocket.\n\nIt allows for fine grained control of the socket options, and its values will\nbe passed to the underlying platform's implementation of setsockopt and\ngetsockopt.", "detail": "", "kind": 7, "label": "RawSocketOption" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Link", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[Link] objects are references to filesystem links.\n", "detail": "", "kind": 7, "label": "Link" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemEntityType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The type of an entity on the file system, such as a file, directory, or link.\n\nThese constants are used by the [FileSystemEntity] class\nto indicate the object's type.\n", "detail": "", "kind": 7, "label": "FileSystemEntityType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientResponse", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "HTTP response for a client connection.\n\nThe body of a [HttpClientResponse] object is a\n[Stream] of data from the server. Listen to the body to handle\nthe data and be notified when the entire body is received.\n\n new HttpClient().get('localhost', 80, '/file.txt')\n .then((HttpClientRequest request) => request.close())\n .then((HttpClientResponse response) {\n response.transform(utf8.decoder).listen((contents) {\n // handle data\n });\n });", "detail": "", "kind": 7, "label": "HttpClientResponse" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawSocket] is a low-level interface to a socket, exposing the raw\nevents signaled by the system. It's a [Stream] of [RawSocketEvent]s.", "detail": "", "kind": 7, "label": "RawSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawServerSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [RawServerSocket] represents a listening socket, and provides a\nstream of low-level [RawSocket] objects, one for each connection\nmade to the listening socket.\n\nSee [RawSocket] for more info.", "detail": "", "kind": 7, "label": "RawServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpConnectionsInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Summary statistics about an [HttpServer]s current socket connections.", "detail": "", "kind": 7, "label": "HttpConnectionsInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Exception thrown when a file operation fails.", "detail": "", "kind": 7, "label": "FileSystemException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SecureSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A high-level class for communicating securely over a TCP socket, using\nTLS and SSL. The [SecureSocket] exposes both a [Stream] and an\n[IOSink] interface, making it ideal for using together with\nother [Stream]s.", "detail": "", "kind": 7, "label": "SecureSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SocketOption", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [SocketOption] is used as a parameter to [Socket.setOption] and\n[RawSocket.setOption] to set customize the behaviour of the underlying\nsocket.", "detail": "", "kind": 7, "label": "SocketOption" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpDate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Utility functions for working with dates with HTTP specific date\nformats.", "detail": "", "kind": 7, "label": "HttpDate" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientRequest", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "HTTP request for a client connection.\n\nTo set up a request, set the headers using the headers property\nprovided in this class and write the data to the body of the request.\nHttpClientRequest is an [IOSink]. Use the methods from IOSink,\nsuch as writeCharCode(), to write the body of the HTTP\nrequest. When one of the IOSink methods is used for the first\ntime, the request header is sent. Calling any methods that\nchange the header after it is sent throws an exception.\n\nWhen writing string data through the [IOSink] the\nencoding used is determined from the \"charset\" parameter of\nthe \"Content-Type\" header.\n\n HttpClientRequest request = ...\n request.headers.contentType\n = new ContentType(\"application\", \"json\", charset: \"utf-8\");\n request.write(...); // Strings written will be UTF-8 encoded.\n\nIf no charset is provided the default of ISO-8859-1 (Latin 1) is\nbe used.\n\n HttpClientRequest request = ...\n request.headers.add(HttpHeaders.contentTypeHeader, \"text/plain\");\n request.write(...); // Strings written will be ISO-8859-1 encoded.\n\nAn exception is thrown if you use an unsupported encoding and the\n`write()` method being used takes a string parameter.", "detail": "", "kind": 7, "label": "HttpClientRequest" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Platform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information about the environment in which the current program is running.\n\nPlatform provides information such as the operating system,\nthe hostname of the computer, the value of environment variables,\nthe path to the running program,\nand so on.\n\n## Get the URI to the current Dart script\n\nUse the [script] getter to get the URI to the currently running\nDart script.\n\n import 'dart:io' show Platform;\n\n void main() {\n // Get the URI of the script being run.\n var uri = Platform.script;\n // Convert the URI to a path.\n var path = uri.toFilePath();\n }\n\n## Get the value of an environment variable\n\nThe [environment] getter returns a the names and values of environment\nvariables in a [Map] that contains key-value pairs of strings. The Map is\nunmodifiable. This sample shows how to get the value of the `PATH`\nenvironment variable.\n\n import 'dart:io' show Platform;\n\n void main() {\n Map<String, String> envVars = Platform.environment;\n print(envVars['PATH']);\n }\n\n## Determine the OS\n\nYou can get the name of the operating system as a string with the\n[operatingSystem] getter. You can also use one of the static boolean\ngetters: [isMacOS], [isLinux], and [isWindows].\n\n import 'dart:io' show Platform, stdout;\n\n void main() {\n // Get the operating system as a string.\n String os = Platform.operatingSystem;\n // Or, use a predicate getter.\n if (Platform.isMacOS) {\n print('is a Mac');\n } else {\n print('is not a Mac');\n }\n }\n\n## Other resources\n\n[Dart by Example](https://www.dartlang.org/dart-by-example/#dart-io-and-command-line-apps)\nprovides additional task-oriented code samples that show how to use\nvarious API from the [dart:io] library.", "detail": "", "kind": 7, "label": "Platform" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemEntity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The common super class for [File], [Directory], and [Link] objects.\n\n[FileSystemEntity] objects are returned from directory listing\noperations. To determine if a FileSystemEntity is a [File], a\n[Directory], or a [Link] perform a type check:\n\n if (entity is File) (entity as File).readAsStringSync();\n\nYou can also use the [type] or [typeSync] methods to determine\nthe type of a file system object.\n\nMost methods in this class occur in synchronous and asynchronous pairs,\nfor example, [exists] and [existsSync].\nUnless you have a specific reason for using the synchronous version\nof a method, prefer the asynchronous version to avoid blocking your program.\n\nHere's the exists method in action:\n\n entity.exists().then((isThere) {\n isThere ? print('exists') : print('non-existent');\n });\n\n\n## Other resources\n\n* [Dart by\n Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)\n provides additional task-oriented code samples that show how to use various\n API from the [Directory] class and the [File] class, both subclasses of\n FileSystemEntity.\n\n* [I/O for Command-Line\n Apps](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartio---io-for-command-line-apps),\n a section from _A Tour of the Dart Libraries_ covers files and directories.\n\n* [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),\n a tutorial about writing command-line apps, includes information about\n files and directories.", "detail": "", "kind": 7, "label": "FileSystemEntity" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpResponse", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An HTTP response, which returns the headers and data\nfrom the server to the client in response to an HTTP request.\n\nEvery HttpRequest object provides access to the associated [HttpResponse]\nobject through the `response` property.\nThe server sends its response to the client by writing to the\nHttpResponse object.\n\n## Writing the response\n\nThis class implements [IOSink].\nAfter the header has been set up, the methods\nfrom IOSink, such as `writeln()`, can be used to write\nthe body of the HTTP response.\nUse the `close()` method to close the response and send it to the client.\n\n server.listen((HttpRequest request) {\n request.response.write('Hello, world!');\n request.response.close();\n });\n\nWhen one of the IOSink methods is used for the\nfirst time, the request header is sent. Calling any methods that\nchange the header after it is sent throws an exception.\n\n## Setting the headers\n\nThe HttpResponse object has a number of properties for setting up\nthe HTTP headers of the response.\nWhen writing string data through the IOSink, the encoding used\nis determined from the \"charset\" parameter of the\n\"Content-Type\" header.\n\n HttpResponse response = ...\n response.headers.contentType\n = new ContentType(\"application\", \"json\", charset: \"utf-8\");\n response.write(...); // Strings written will be UTF-8 encoded.\n\nIf no charset is provided the default of ISO-8859-1 (Latin 1) will\nbe used.\n\n HttpResponse response = ...\n response.headers.add(HttpHeaders.contentTypeHeader, \"text/plain\");\n response.write(...); // Strings written will be ISO-8859-1 encoded.\n\nAn exception is thrown if you use the `write()` method\nwhile an unsupported content-type is set.", "detail": "", "kind": 7, "label": "HttpResponse" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSynchronousSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A low-level class for communicating synchronously over a TCP socket.\n\nWarning: [RawSynchronousSocket] should probably only be used to connect to\n'localhost'. The operations below will block the calling thread to wait for\na response from the network. The thread can process no other events while\nwaiting for these operations to complete. [RawSynchronousSocket] is not\nsuitable for applications that require high performance or asynchronous I/O\nsuch as a server. Instead such applications should use the non-blocking\nsockets and asynchronous operations in the Socket or RawSocket classes.", "detail": "", "kind": 7, "label": "RawSynchronousSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "X509Certificate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "X509Certificate represents an SSL certificate, with accessors to\nget the fields of the certificate.", "detail": "", "kind": 7, "label": "X509Certificate" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Process", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The means to execute a program.\n\nUse the static [start] and [run] methods to start a new process.\nThe run method executes the process non-interactively to completion.\nIn contrast, the start method allows your code to interact with the\nrunning process.\n\n## Start a process with the run method\n\nThe following code sample uses the run method to create a process\nthat runs the UNIX command `ls`, which lists the contents of a directory.\nThe run method completes with a [ProcessResult] object when the process\nterminates. This provides access to the output and exit code from the\nprocess. The run method does not return a Process object; this prevents your\ncode from interacting with the running process.\n\n import 'dart:io';\n\n main() {\n // List all files in the current directory in UNIX-like systems.\n Process.run('ls', ['-l']).then((ProcessResult results) {\n print(results.stdout);\n });\n }\n\n## Start a process with the start method\n\nThe following example uses start to create the process.\nThe start method returns a [Future] for a Process object.\nWhen the future completes the process is started and\nyour code can interact with the\nProcess: writing to stdin, listening to stdout, and so on.\n\nThe following sample starts the UNIX `cat` utility, which when given no\ncommand-line arguments, echos its input.\nThe program writes to the process's standard input stream\nand prints data from its standard output stream.\n\n import 'dart:io';\n import 'dart:convert';\n\n main() {\n Process.start('cat', []).then((Process process) {\n process.stdout\n .transform(utf8.decoder)\n .listen((data) { print(data); });\n process.stdin.writeln('Hello, world!');\n process.stdin.writeln('Hello, galaxy!');\n process.stdin.writeln('Hello, universe!');\n });\n }\n\n## Standard I/O streams\n\nAs seen in the previous code sample, you can interact with the Process's\nstandard output stream through the getter [stdout],\nand you can interact with the Process's standard input stream through\nthe getter [stdin].\nIn addition, Process provides a getter [stderr] for using the Process's\nstandard error stream.\n\nA Process's streams are distinct from the top-level streams\nfor the current program.\n\n## Exit codes\n\nCall the [exitCode] method to get the exit code of the process.\nThe exit code indicates whether the program terminated successfully\n(usually indicated with an exit code of 0) or with an error.\n\nIf the start method is used, the exitCode is available through a future\non the Process object (as shown in the example below).\nIf the run method is used, the exitCode is available\nthrough a getter on the ProcessResult instance.\n\n import 'dart:io';\n\n main() {\n Process.start('ls', ['-l']).then((process) {\n // Get the exit code from the new process.\n process.exitCode.then((exitCode) {\n print('exit code: $exitCode');\n });\n });\n }\n\n## Other resources\n\n[Dart by Example](https://www.dartlang.org/dart-by-example/#dart-io-and-command-line-apps)\nprovides additional task-oriented code samples that show how to use\nvarious API from the [dart:io] library.", "detail": "", "kind": 7, "label": "Process" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocketTransformer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [WebSocketTransformer] provides the ability to upgrade a\n[HttpRequest] to a [WebSocket] connection. It supports both\nupgrading a single [HttpRequest] and upgrading a stream of\n[HttpRequest]s.\n\nTo upgrade a single [HttpRequest] use the static [upgrade] method.\n\n HttpServer server;\n server.listen((request) {\n if (...) {\n WebSocketTransformer.upgrade(request).then((websocket) {\n ...\n });\n } else {\n // Do normal HTTP request processing.\n }\n });\n\nTo transform a stream of [HttpRequest] events as it implements a\nstream transformer that transforms a stream of HttpRequest into a\nstream of WebSockets by upgrading each HttpRequest from the HTTP or\nHTTPS server, to the WebSocket protocol.\n\n server.transform(new WebSocketTransformer()).listen((webSocket) => ...);\n\nThis transformer strives to implement WebSockets as specified by RFC6455.", "detail": "", "kind": 7, "label": "WebSocketTransformer" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "ProcessException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StdinException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "StdinException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StdioType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The type of object a standard IO stream is attached to.", "detail": "", "kind": 7, "label": "StdioType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The modes in which a File can be opened.", "detail": "", "kind": 7, "label": "FileMode" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileLock", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Type of lock when requesting a lock on a file.", "detail": "", "kind": 7, "label": "FileLock" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SocketException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "SocketException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SecureServerSocket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [SecureServerSocket] is a server socket, providing a stream of high-level\n[Socket]s.\n\nSee [SecureSocket] for more info.", "detail": "", "kind": 7, "label": "SecureServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawZLibFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawZLibFilter] class provides a low-level interface to zlib.", "detail": "", "kind": 7, "label": "RawZLibFilter" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [ZLibCodec] encodes raw bytes to ZLib compressed bytes and decodes ZLib\ncompressed bytes to raw bytes.", "detail": "", "kind": 7, "label": "ZLibCodec" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Capability", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An unforgeable object that comes back as equal when passed through other\nisolates.\n\nSending a capability object to another isolate, and getting it back,\nwill produce an object that is equal to the original.\nThere is no other way to create objects equal to a capability object.\n\nCapabilities can be used as access guards: A remote isolate can send\na request for an operation, but it is only allowed if the request contains\nthe correct capability object.\n\nThis allows exposing the same interface to multiple clients,\nbut restricting some operations to only those clients\nthat have also been given the corresponding capability.\n\nCapabilities can be used inside a single isolate,\nbut they have no advantage over\njust using `new Object` to create a unique object,\nand it offers no real security against other code\nrunning in the same isolate.", "detail": "", "kind": 7, "label": "Capability" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Isolate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An isolated Dart execution context.\n\nAll Dart code runs in an isolate, and code can access classes and values\nonly from the same isolate. Different isolates can communicate by sending\nvalues through ports (see [ReceivePort], [SendPort]).\n\nAn `Isolate` object is a reference to an isolate, usually different from\nthe current isolate.\nIt represents, and can be used to control, the other isolate.\n\nWhen spawning a new isolate, the spawning isolate receives an `Isolate`\nobject representing the new isolate when the spawn operation succeeds.\n\nIsolates run code in its own event loop, and each event may run smaller tasks\nin a nested microtask queue.\n\nAn `Isolate` object allows other isolates to control the event loop\nof the isolate that it represents, and to inspect the isolate,\nfor example by pausing the isolate or by getting events when the isolate\nhas an uncaught error.\n\nThe [controlPort] identifies and gives access to controlling the isolate,\nand the [pauseCapability] and [terminateCapability] guard access\nto some control operations.\nFor example, calling [pause] on an `Isolate` object created without a\n[pauseCapability], has no effect.\n\nThe `Isolate` object provided by a spawn operation will have the\ncontrol port and capabilities needed to control the isolate.\nNew isolate objects can be created without some of these capabilities\nif necessary, using the [Isolate.Isolate] constructor.\n\nAn `Isolate` object cannot be sent over a `SendPort`, but the control port\nand capabilities can be sent, and can be used to create a new functioning\n`Isolate` object in the receiving port's isolate.", "detail": "", "kind": 7, "label": "Isolate" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawReceivePort", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "RawReceivePort" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReceivePort", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Together with [SendPort], the only means of communication between isolates.\n\n[ReceivePort]s have a `sendPort` getter which returns a [SendPort].\nAny message that is sent through this [SendPort]\nis delivered to the [ReceivePort] it has been created from. There, the\nmessage is dispatched to the `ReceivePort`'s listener.\n\nA [ReceivePort] is a non-broadcast stream. This means that it buffers\nincoming messages until a listener is registered. Only one listener can\nreceive messages. See [Stream.asBroadcastStream] for transforming the port\nto a broadcast stream.\n\nA [ReceivePort] may have many [SendPort]s.", "detail": "", "kind": 7, "label": "ReceivePort" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IsolateSpawnException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Thrown when an isolate cannot be created.", "detail": "", "kind": 7, "label": "IsolateSpawnException" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RemoteError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Description of an error from another isolate.\n\nThis error has the same `toString()` and `stackTrace.toString()` behavior\nas the original error, but has no other features of the original error.", "detail": "", "kind": 7, "label": "RemoteError" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SendPort", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Sends messages to its [ReceivePort]s.\n\n[SendPort]s are created from [ReceivePort]s. Any message sent through\na [SendPort] is delivered to its corresponding [ReceivePort]. There might be\nmany [SendPort]s for the same [ReceivePort].\n\n[SendPort]s can be transmitted to other isolates, and they preserve equality\nwhen sent.", "detail": "", "kind": 7, "label": "SendPort" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Codec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Codec] encodes and (if supported) decodes data.\n\nCodecs can be fused. For example fusing [json] and [utf8] produces\nan encoder that can convert Json objects directly to bytes, or can decode\nbytes directly to json objects.\n\nFused codecs generally attempt to optimize the operations and can be faster\nthan executing each step of an encoding separately.", "detail": "", "kind": 7, "label": "Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Utf8Encoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts strings to their UTF-8 code units (a list of\nunsigned 8-bit integers).", "detail": "", "kind": 7, "label": "Utf8Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonUnsupportedObjectError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by JSON serialization if an object cannot be serialized.\n\nThe [unsupportedObject] field holds that object that failed to be serialized.\n\nIf an object isn't directly serializable, the serializer calls the `toJson`\nmethod on the object. If that call fails, the error will be stored in the\n[cause] field. If the call returns an object that isn't directly\nserializable, the [cause] is null.", "detail": "", "kind": 7, "label": "JsonUnsupportedObjectError" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Base64Codec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [base64](https://tools.ietf.org/html/rfc4648) encoder and decoder.\n\nA [Base64Codec] allows base64 encoding bytes into ASCII strings and\ndecoding valid encodings back to bytes.\n\nThis implementation only handles the simplest RFC 4648 base64 and base64url\nencodings.\nIt does not allow invalid characters when decoding and it requires,\nand generates, padding so that the input is always a multiple of four\ncharacters.", "detail": "", "kind": 7, "label": "Base64Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringConversionSinkMixin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides a mixin for converters that need to accept String\ninputs.", "detail": "", "kind": 7, "label": "StringConversionSinkMixin" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonCyclicError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Reports that an object could not be stringified due to cyclic references.\n\nAn object that references itself cannot be serialized by\n[JsonCodec.encode]/[JsonEncoder.convert].\nWhen the cycle is detected, a [JsonCyclicError] is thrown.", "detail": "", "kind": 7, "label": "JsonCyclicError" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteConversionSinkBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides a base-class for converters that need to accept byte\ninputs.", "detail": "", "kind": 7, "label": "ByteConversionSinkBase" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Base64Decoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Decoder for base64 encoded data.\n\nThis decoder accepts both base64 and base64url (\"url-safe\") encodings.\n\nThe encoding is required to be properly padded.", "detail": "", "kind": 7, "label": "Base64Decoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringConversionSink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides an interface for converters to\nefficiently transmit String data.\n\nInstead of limiting the interface to one non-chunked String it accepts\npartial strings or can be transformed into a byte sink that\naccepts UTF-8 code units.\n\nThis abstract class will likely get more methods over time. Implementers are\nurged to extend [StringConversionSinkBase] or to mix in\n[StringConversionSinkMixin], to ensure that their class covers the newly\nadded methods.", "detail": "", "kind": 7, "label": "StringConversionSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsciiCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An [AsciiCodec] allows encoding strings as ASCII bytes\nand decoding ASCII bytes to strings.", "detail": "", "kind": 7, "label": "AsciiCodec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonDecoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class parses JSON strings and builds the corresponding objects.", "detail": "", "kind": 7, "label": "JsonDecoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Converter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Converter] converts data from one representation into another.\n\nIt is recommended that implementations of `Converter` extend this class,\nto inherit any further methods that may be added to the class.", "detail": "", "kind": 7, "label": "Converter" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonEncoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts JSON objects to strings.", "detail": "", "kind": 7, "label": "JsonEncoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Base64Encoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Base64 and base64url encoding converter.\n\nEncodes lists of bytes using base64 or base64url encoding.\n\nThe results are ASCII strings using a restricted alphabet.", "detail": "", "kind": 7, "label": "Base64Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsciiEncoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts strings of only ASCII characters to bytes.", "detail": "", "kind": 7, "label": "AsciiEncoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringConversionSinkBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides a base-class for converters that need to accept String\ninputs.", "detail": "", "kind": 7, "label": "StringConversionSinkBase" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonCodec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [JsonCodec] encodes JSON objects to strings and decodes strings to\nJSON objects.\n\nExamples:\n\n var encoded = json.encode([1, 2, { \"a\": null }]);\n var decoded = json.decode('[\"foo\", { \"bar\": 499 }]');", "detail": "", "kind": 7, "label": "JsonCodec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Latin1Decoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts Latin-1 bytes (lists of unsigned 8-bit integers)\nto a string.", "detail": "", "kind": 7, "label": "Latin1Decoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Utf8Codec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Utf8Codec] encodes strings to utf-8 code units (bytes) and decodes\nUTF-8 code units to strings.", "detail": "", "kind": 7, "label": "Utf8Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Encoding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Open-ended Encoding enum.", "detail": "", "kind": 7, "label": "Encoding" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Latin1Encoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts strings of only ISO Latin-1 characters to bytes.", "detail": "", "kind": 7, "label": "Latin1Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClosableStringSink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [ClosableStringSink] extends the [StringSink] interface by adding a\n`close` method.", "detail": "", "kind": 7, "label": "ClosableStringSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LineSplitter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [StreamTransformer] that splits a [String] into individual lines.\n\nA line is terminated by either a CR (U+000D), a LF (U+000A), a\nCR+LF sequence (DOS line ending),\nand a final non-empty line can be ended by the end of the string.\n\nThe returned lines do not contain the line terminators.", "detail": "", "kind": 7, "label": "LineSplitter" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HtmlEscapeMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "HTML escape modes.\n\nAllows specifying a mode for HTML escaping that depend on the context\nwhere the escaped result is going to be used.\nThe relevant contexts are:\n\n* as text content of an HTML element.\n* as value of a (single- or double-) quoted attribute value.\n\nAll modes require escaping of `&` (ampersand) characters, and may\nenable escaping of more characters.\n\nCustom escape modes can be created using the [HtmlEscapeMode.HtmlEscapeMode]\nconstructor.", "detail": "", "kind": 7, "label": "HtmlEscapeMode" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteConversionSink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The [ByteConversionSink] provides an interface for converters to\nefficiently transmit byte data.\n\nInstead of limiting the interface to one non-chunked list of bytes it\naccepts its input in chunks (themselves being lists of bytes).\n\nThis abstract class will likely get more methods over time. Implementers are\nurged to extend or mix in [ByteConversionSinkBase] to ensure that their\nclass covers the newly added methods.", "detail": "", "kind": 7, "label": "ByteConversionSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChunkedConversionSink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [ChunkedConversionSink] is used to transmit data more efficiently between\ntwo converters during chunked conversions.\n\nThe basic `ChunkedConversionSink` is just a [Sink], and converters should\nwork with a plain `Sink`, but may work more efficiently with certain\nspecialized types of `ChunkedConversionSink`.\n\nIt is recommended that implementations of `ChunkedConversionSink` extend\nthis class, to inherit any further methods that may be added to the class.", "detail": "", "kind": 7, "label": "ChunkedConversionSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonUtf8Encoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Encoder that encodes a single object as a UTF-8 encoded JSON string.\n\nThis encoder works equivalently to first converting the object to\na JSON string, and then UTF-8 encoding the string, but without\ncreating an intermediate string.", "detail": "", "kind": 7, "label": "JsonUtf8Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HtmlEscape", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Converter which escapes characters with special meaning in HTML.\n\nThe converter finds characters that are significant in HTML source and\nreplaces them with corresponding HTML entities.\n\nThe characters that need escaping in HTML are:\n\n* `&` (ampersand) always need to be escaped.\n* `<` (less than) and '>' (greater than) when inside an element.\n* `\"` (quote) when inside a double-quoted attribute value.\n* `'` (apostrophe) when inside a single-quoted attribute value.\n Apostrophe is escaped as `'` instead of `'` since\n not all browsers understand `'`.\n* `/` (slash) is recommended to be escaped because it may be used\n to terminate an element in some HTML dialects.\n\nEscaping `>` (greater than) isn't necessary, but the result is often\nfound to be easier to read if greater-than is also escaped whenever\nless-than is.", "detail": "", "kind": 7, "label": "HtmlEscape" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Utf8Decoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts UTF-8 code units (lists of unsigned 8-bit integers)\nto a string.", "detail": "", "kind": 7, "label": "Utf8Decoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Latin1Codec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Latin1Codec] encodes strings to ISO Latin-1 (aka ISO-8859-1) bytes\nand decodes Latin-1 bytes to strings.", "detail": "", "kind": 7, "label": "Latin1Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsciiDecoder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "AsciiDecoder" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EventSink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Sink] that supports adding errors.\n\nThis makes it suitable for capturing the results of asynchronous\ncomputations, which can complete with a value or an error.\n\nThe [EventSink] has been designed to handle asynchronous events from\n[Stream]s. See, for example, [Stream.eventTransformed] which uses\n`EventSink`s to transform events.", "detail": "", "kind": 7, "label": "EventSink" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureOr", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A type representing values that are either `Future<T>` or `T`.\n\nThis class declaration is a public stand-in for an internal\nfuture-or-value generic type. References to this class are resolved to the\ninternal type.\n\nIt is a compile-time error for any class to extend, mix in or implement\n`FutureOr`.\n\nNote: the `FutureOr<T>` type is interpreted as `dynamic` in non strong-mode.\n\n# Examples\n``` dart\n// The `Future<T>.then` function takes a callback [f] that returns either\n// an `S` or a `Future<S>`.\nFuture<S> then<S>(FutureOr<S> f(T x), ...);\n\n// `Completer<T>.complete` takes either a `T` or `Future<T>`.\nvoid complete(FutureOr<T> value);\n```\n\n# Advanced\nThe `FutureOr<int>` type is actually the \"type union\" of the types `int` and\n`Future<int>`. This type union is defined in such a way that\n`FutureOr<Object>` is both a super- and sub-type of `Object` (sub-type\nbecause `Object` is one of the types of the union, super-type because\n`Object` is a super-type of both of the types of the union). Together it\nmeans that `FutureOr<Object>` is equivalent to `Object`.\n\nAs a corollary, `FutureOr<Object>` is equivalent to\n`FutureOr<FutureOr<Object>>`, `FutureOr<Future<Object>>` is equivalent to\n`Future<Object>`.", "detail": "", "kind": 7, "label": "FutureOr" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A controller with the stream it controls.\n\nThis controller allows sending data, error and done events on\nits [stream].\nThis class can be used to create a simple stream that others\ncan listen on, and to push events to that stream.\n\nIt's possible to check whether the stream is paused or not, and whether\nit has subscribers or not, as well as getting a callback when either of\nthese change.", "detail": "", "kind": 7, "label": "StreamController" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamTransformer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Transforms a Stream.\n\nWhen a stream's [Stream.transform] method is invoked with a\n[StreamTransformer], the stream calls the [bind] method on the provided\ntransformer. The resulting stream is then returned from the\n[Stream.transform] method.\n\nConceptually, a transformer is simply a function from [Stream] to [Stream]\nthat is encapsulated into a class.\n\nIt is good practice to write transformers that can be used multiple times.\n\nAll other transforming methods on [Stream], such as [Stream.map],\n[Stream.where] or [Stream.expand] can be implemented using\n[Stream.transform]. A [StreamTransformer] is thus very powerful but often\nalso a bit more complicated to use.", "detail": "", "kind": 7, "label": "StreamTransformer" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RunUnaryHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T arg) f, T arg) → R", "kind": 7, "label": "RunUnaryHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegisterBinaryCallbackHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T1 arg1, T2 arg2) f) → ZoneBinaryCallback<R, T1, T2>", "kind": 7, "label": "RegisterBinaryCallbackHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Future", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An object representing a delayed computation.\n\nA [Future] is used to represent a potential value, or error,\nthat will be available at some time in the future.\nReceivers of a [Future] can register callbacks\nthat handle the value or error once it is available.\nFor example:\n\n Future<int> future = getFuture();\n future.then((value) => handleValue(value))\n .catchError((error) => handleError(error));\n\nA [Future] can be completed in two ways:\nwith a value (\"the future succeeds\")\nor with an error (\"the future fails\").\nUsers can install callbacks for each case.\n\nIn some cases we say that a future is completed with another future.\nThis is a short way of stating that the future is completed in the same way,\nwith the same value or error,\nas the other future once that completes.\nWhenever a function in the core library may complete a future\n(for example [Completer.complete] or [new Future.value]),\nthen it also accepts another future and does this work for the developer.\n\nThe result of registering a pair of callbacks is a new Future (the\n\"successor\") which in turn is completed with the result of invoking the\ncorresponding callback.\nThe successor is completed with an error if the invoked callback throws.\nFor example:\n```\nFuture<int> successor = future.then((int value) {\n // Invoked when the future is completed with a value.\n return 42; // The successor is completed with the value 42.\n },\n onError: (e) {\n // Invoked when the future is completed with an error.\n if (canHandle(e)) {\n return 499; // The successor is completed with the value 499.\n } else {\n throw e; // The successor is completed with the error e.\n }\n });\n```\n\nIf a future does not have a successor when it completes with an error,\nit forwards the error message to the global error-handler.\nThis behavior makes sure that no error is silently dropped.\nHowever, it also means that error handlers should be installed early,\nso that they are present as soon as a future is completed with an error.\nThe following example demonstrates this potential bug:\n```\nvar future = getFuture();\nnew Timer(new Duration(milliseconds: 5), () {\n // The error-handler is not attached until 5 ms after the future has\n // been received. If the future fails before that, the error is\n // forwarded to the global error-handler, even though there is code\n // (just below) to eventually handle the error.\n future.then((value) { useValue(value); },\n onError: (e) { handleError(e); });\n});\n```\n\nWhen registering callbacks, it's often more readable to register the two\ncallbacks separately, by first using [then] with one argument\n(the value handler) and using a second [catchError] for handling errors.\nEach of these will forward the result that they don't handle\nto their successors, and together they handle both value and error result.\nIt also has the additional benefit of the [catchError] handling errors in the\n[then] value callback too.\nUsing sequential handlers instead of parallel ones often leads to code that\nis easier to reason about.\nIt also makes asynchronous code very similar to synchronous code:\n```\n// Synchronous code.\ntry {\n int value = foo();\n return bar(value);\n} catch (e) {\n return 499;\n}\n```\n\nEquivalent asynchronous code, based on futures:\n```\nFuture<int> future = new Future(foo); // Result of foo() as a future.\nfuture.then((int value) => bar(value))\n .catchError((e) => 499);\n```\n\nSimilar to the synchronous code, the error handler (registered with\n[catchError]) is handling any errors thrown by either `foo` or `bar`.\nIf the error-handler had been registered as the `onError` parameter of\nthe `then` call, it would not catch errors from the `bar` call.\n\nFutures can have more than one callback-pair registered. Each successor is\ntreated independently and is handled as if it was the only successor.\n\nA future may also fail to ever complete. In that case, no callbacks are\ncalled.", "detail": "", "kind": 7, "label": "Future" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamConsumer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Abstract interface for a \"sink\" accepting multiple entire streams.\n\nA consumer can accept a number of consecutive streams using [addStream],\nand when no further data need to be added, the [close] method tells the\nconsumer to complete its work and shut down.\n\nThe [Stream.pipe] accepts a `StreamConsumer` and will pass the stream\nto the consumer's [addStream] method. When that completes, it will\ncall [close] and then complete its own returned future.", "detail": "", "kind": 7, "label": "StreamConsumer" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamIterator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An [Iterator] like interface for the values of a [Stream].\n\nThis wraps a [Stream] and a subscription on the stream. It listens\non the stream, and completes the future returned by [moveNext] when the\nnext value becomes available.\n\nThe stream may be paused between calls to [moveNext].", "detail": "", "kind": 7, "label": "StreamIterator" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZoneSpecification", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides the specification for a forked zone.\n\nWhen forking a new zone (see [Zone.fork]) one can override the default\nbehavior of the zone by providing callbacks. These callbacks must be\ngiven in an instance of this class.\n\nHandlers have the same signature as the same-named methods on [Zone] but\nreceive three additional arguments:\n\n 1. the zone the handlers are attached to (the \"self\" zone).\n 2. a [ZoneDelegate] to the parent zone.\n 3. the zone that first received the request (before the request was\n bubbled up).\n\nHandlers can either stop propagation the request (by simply not calling the\nparent handler), or forward to the parent zone, potentially modifying the\narguments on the way.", "detail": "", "kind": 7, "label": "ZoneSpecification" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "[Stream] wrapper that only exposes the [Stream] interface.", "detail": "", "kind": 7, "label": "StreamView" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamSink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A object that accepts stream events both synchronously and asynchronously.\n\nA [StreamSink] combines the methods from [StreamConsumer] and [EventSink].\n\nThe [EventSink] methods can't be used while the [addStream] is called.\nAs soon as the [addStream]'s [Future] completes with a value, the\n[EventSink] methods can be used again.\n\nIf [addStream] is called after any of the [EventSink] methods, it'll\nbe delayed until the underlying system has consumed the data added by the\n[EventSink] methods.\n\nWhen [EventSink] methods are used, the [done] [Future] can be used to\ncatch any errors.\n\nWhen [close] is called, it will return the [done] [Future].", "detail": "", "kind": 7, "label": "StreamSink" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Timer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A count-down timer that can be configured to fire once or repeatedly.\n\nThe timer counts down from the specified duration to 0.\nWhen the timer reaches 0, the timer invokes the specified callback function.\nUse a periodic timer to repeatedly count down the same interval.\n\nA negative duration is treated the same as a duration of 0.\nIf the duration is statically known to be 0, consider using [run].\n\nFrequently the duration is either a constant or computed as in the\nfollowing example (taking advantage of the multiplication operator of\nthe [Duration] class):\n```dart\nconst timeout = const Duration(seconds: 3);\nconst ms = const Duration(milliseconds: 1);\n\nstartTimeout([int milliseconds]) {\n var duration = milliseconds == null ? timeout : ms * milliseconds;\n return new Timer(duration, handleTimeout);\n}\n...\nvoid handleTimeout() { // callback function\n ...\n}\n```\nNote: If Dart code using Timer is compiled to JavaScript, the finest\ngranularity available in the browser is 4 milliseconds.\n\nSee [Stopwatch] for measuring elapsed time.", "detail": "", "kind": 7, "label": "Timer" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stream", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A source of asynchronous data events.\n\nA Stream provides a way to receive a sequence of events.\nEach event is either a data event, also called an *element* of the stream,\nor an error event, which is a notification that something has failed.\nWhen a stream has emitted all its event,\na single \"done\" event will notify the listener that the end has been reached.\n\nYou [listen] on a stream to make it start generating events,\nand to set up listeners that receive the events.\nWhen you listen, you receive a [StreamSubscription] object\nwhich is the active object providing the events,\nand which can be used to stop listening again,\nor to temporarily pause events from the subscription.\n\nThere are two kinds of streams: \"Single-subscription\" streams and\n\"broadcast\" streams.\n\n*A single-subscription stream* allows only a single listener during the whole\nlifetime of the stream.\nIt doesn't start generating events until it has a listener,\nand it stops sending events when the listener is unsubscribed,\neven if the source of events could still provide more.\n\nListening twice on a single-subscription stream is not allowed, even after\nthe first subscription has been canceled.\n\nSingle-subscription streams are generally used for streaming chunks of\nlarger contiguous data like file I/O.\n\n*A broadcast stream* allows any number of listeners, and it fires\nits events when they are ready, whether there are listeners or not.\n\nBroadcast streams are used for independent events/observers.\n\nIf several listeners want to listen to a single subscription stream,\nuse [asBroadcastStream] to create a broadcast stream on top of the\nnon-broadcast stream.\n\nOn either kind of stream, stream transformations, such as [where] and\n[skip], return the same type of stream as the one the method was called on,\nunless otherwise noted.\n\nWhen an event is fired, the listener(s) at that time will receive the event.\nIf a listener is added to a broadcast stream while an event is being fired,\nthat listener will not receive the event currently being fired.\nIf a listener is canceled, it immediately stops receiving events.\nListening on a broadcast stream can be treated as listening on a new stream\ncontaining only the events that have not yet been emitted when the [listen]\ncall occurs.\nFor example, the [first] getter listens to the stream, then returns the first\nevent that listener receives.\nThis is not necessarily the first even emitted by the stream, but the first\nof the *remaining* events of the broadcast stream.\n\nWhen the \"done\" event is fired, subscribers are unsubscribed before\nreceiving the event. After the event has been sent, the stream has no\nsubscribers. Adding new subscribers to a broadcast stream after this point\nis allowed, but they will just receive a new \"done\" event as soon\nas possible.\n\nStream subscriptions always respect \"pause\" requests. If necessary they need\nto buffer their input, but often, and preferably, they can simply request\ntheir input to pause too.\n\nThe default implementation of [isBroadcast] returns false.\nA broadcast stream inheriting from [Stream] must override [isBroadcast]\nto return `true`.", "detail": "", "kind": 7, "label": "Stream" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HandleUncaughtErrorHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, Object error, StackTrace stackTrace) → void", "kind": 7, "label": "HandleUncaughtErrorHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZoneDelegate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An adapted view of the parent zone.\n\nThis class allows the implementation of a zone method to invoke methods on\nthe parent zone while retaining knowledge of the originating zone.\n\nCustom zones (created through [Zone.fork] or [runZoned]) can provide\nimplementations of most methods of zones. This is similar to overriding\nmethods on [Zone], except that this mechanism doesn't require subclassing.\n\nA custom zone function (provided through a [ZoneSpecification]) typically\nrecords or wraps its parameters and then delegates the operation to its\nparent zone using the provided [ZoneDelegate].\n\nWhile zones have access to their parent zone (through [Zone.parent]) it is\nrecommended to call the methods on the provided parent delegate for two\nreasons:\n1. the delegate methods take an additional `zone` argument which is the\n zone the action has been initiated in.\n2. delegate calls are more efficient, since the implementation knows how\n to skip zones that would just delegate to their parents.", "detail": "", "kind": 7, "label": "ZoneDelegate" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamTransformerBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Base class for implementing [StreamTransformer].\n\nContains default implementations of every method except [bind].", "detail": "", "kind": 7, "label": "StreamTransformerBase" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SynchronousStreamController", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A stream controller that delivers its events synchronously.\n\nA synchronous stream controller is intended for cases where\nan already asynchronous event triggers an event on a stream.\n\nInstead of adding the event to the stream in a later microtask,\ncausing extra latency, the event is instead fired immediately by the\nsynchronous stream controller, as if the stream event was\nthe current event or microtask.\n\nThe synchronous stream controller can be used to break the contract\non [Stream], and it must be used carefully to avoid doing so.\n\nThe only advantage to using a [SynchronousStreamController] over a\nnormal [StreamController] is the improved latency.\nOnly use the synchronous version if the improvement is significant,\nand if its use is safe. Otherwise just use a normal stream controller,\nwhich will always have the correct behavior for a [Stream], and won't\naccidentally break other code.\n\nAdding events to a synchronous controller should only happen as the\nvery last part of the handling of the original event.\nAt that point, adding an event to the stream is equivalent to\nreturning to the event loop and adding the event in the next microtask.\n\nEach listener callback will be run as if it was a top-level event\nor microtask. This means that if it throws, the error will be reported as\nuncaught as soon as possible.\nThis is one reason to add the event as the last thing in the original event\nhandler - any action done after adding the event will delay the report of\nerrors in the event listener callbacks.\n\nIf an event is added in a setting that isn't known to be another event,\nit may cause the stream's listener to get that event before the listener\nis ready to handle it. We promise that after calling [Stream.listen],\nyou won't get any events until the code doing the listen has completed.\nCalling [add] in response to a function call of unknown origin may break\nthat promise.\n\nAn [onListen] callback from the controller is *not* an asynchronous event,\nand adding events to the controller in the `onListen` callback is always\nwrong. The events will be delivered before the listener has even received\nthe subscription yet.\n\nThe synchronous broadcast stream controller also has a restrictions that a\nnormal stream controller does not:\nThe [add], [addError], [close] and [addStream] methods *must not* be\ncalled while an event is being delivered.\nThat is, if a callback on a subscription on the controller's stream causes\na call to any of the functions above, the call will fail.\nA broadcast stream may have more than one listener, and if an\nevent is added synchronously while another is being also in the process\nof being added, the latter event might reach some listeners before\nthe former. To prevent that, an event cannot be added while a previous\nevent is being fired.\nThis guarantees that an event is fully delivered when the\nfirst [add], [addError] or [close] returns,\nand further events will be delivered in the correct order.\n\nThis still only guarantees that the event is delivered to the subscription.\nIf the subscription is paused, the actual callback may still happen later,\nand the event will instead be buffered by the subscription.\nBarring pausing, and the following buffered events that haven't been\ndelivered yet, callbacks will be called synchronously when an event is added.\n\nAdding an event to a synchronous non-broadcast stream controller while\nanother event is in progress may cause the second event to be delayed\nand not be delivered synchronously, and until that event is delivered,\nthe controller will not act synchronously.", "detail": "", "kind": 7, "label": "SynchronousStreamController" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimeoutException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Thrown when a scheduled timeout happens while waiting for an async result.", "detail": "", "kind": 7, "label": "TimeoutException" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegisterCallbackHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function() f) → ZoneCallback<R>", "kind": 7, "label": "RegisterCallbackHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RunHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function() f) → R", "kind": 7, "label": "RunHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeferredLibrary", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Indicates that loading of [libraryName] is deferred.\n\nThis class is obsolete. Instead use the syntax:\nimport \"library.dart\" deferred as prefix;", "detail": "(Deprecated) ", "kind": 7, "label": "DeferredLibrary" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamSubscription", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A subscription on events from a [Stream].\n\nWhen you listen on a [Stream] using [Stream.listen],\na [StreamSubscription] object is returned.\n\nThe subscription provides events to the listener,\nand holds the callbacks used to handle the events.\nThe subscription can also be used to unsubscribe from the events,\nor to temporarily pause the events from the stream.", "detail": "", "kind": 7, "label": "StreamSubscription" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegisterUnaryCallbackHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T arg) f) → ZoneUnaryCallback<R, T>", "kind": 7, "label": "RegisterUnaryCallbackHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Zone", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A zone represents an environment that remains stable across asynchronous\ncalls.\n\nCode is always executed in the context of a zone, available as\n[Zone.current]. The initial `main` function runs in the context of the\ndefault zone ([Zone.root]). Code can be run in a different zone using either\n[runZoned], to create a new zone, or [Zone.run] to run code in the context of\nan existing zone likely created using [Zone.fork].\n\nDevelopers can create a new zone that overrides some of the functionality of\nan existing zone. For example, custom zones can replace of modify the\nbehavior of `print`, timers, microtasks or how uncaught errors are handled.\n\nThe [Zone] class is not subclassable, but users can provide custom zones by\nforking an existing zone (usually [Zone.current]) with a [ZoneSpecification].\nThis is similar to creating a new class that extends the base `Zone` class\nand that overrides some methods, except without actually creating a new\nclass. Instead the overriding methods are provided as functions that\nexplicitly take the equivalent of their own class, the \"super\" class and the\n`this` object as parameters.\n\nAsynchronous callbacks always run in the context of the zone where they were\nscheduled. This is implemented using two steps:\n1. the callback is first registered using one of [registerCallback],\n [registerUnaryCallback], or [registerBinaryCallback]. This allows the zone\n to record that a callback exists and potentially modify it (by returning a\n different callback). The code doing the registration (e.g., `Future.then`)\n also remembers the current zone so that it can later run the callback in\n that zone.\n2. At a later point the registered callback is run in the remembered zone.\n\nThis is all handled internally by the platform code and most users don't need\nto worry about it. However, developers of new asynchronous operations,\nprovided by the underlying system or through native extensions, must follow\nthe protocol to be zone compatible.\n\nFor convenience, zones provide [bindCallback] (and the corresponding\n[bindUnaryCallback] and [bindBinaryCallback]) to make it easier to respect\nthe zone contract: these functions first invoke the corresponding `register`\nfunctions and then wrap the returned function so that it runs in the current\nzone when it is later asynchronously invoked.\n\nSimilarly, zones provide [bindCallbackGuarded] (and the corresponding\n[bindUnaryCallbackGuarded] and [bindBinaryCallbackGuarded]), when the\ncallback should be invoked through [Zone.runGuarded].", "detail": "", "kind": 7, "label": "Zone" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RunBinaryHandler", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T1 arg1, T2 arg2) f, T1 arg1, T2 arg2) → R", "kind": 7, "label": "RunBinaryHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeferredLoadException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Thrown when a deferred library fails to load.", "detail": "", "kind": 7, "label": "DeferredLoadException" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Pair of error and stack trace. Returned by [Zone.errorCallback].", "detail": "", "kind": 7, "label": "AsyncError" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Completer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A way to produce Future objects and to complete them later\nwith a value or error.\n\nMost of the time, the simplest way to create a future is to just use\none of the [Future] constructors to capture the result of a single\nasynchronous computation:\n```\nnew Future(() { doSomething(); return result; });\n```\nor, if the future represents the result of a sequence of asynchronous\ncomputations, they can be chained using [Future.then] or similar functions\non [Future]:\n```\nFuture doStuff(){\n return someAsyncOperation().then((result) {\n return someOtherAsyncOperation(result);\n });\n}\n```\nIf you do need to create a Future from scratch — for example,\nwhen you're converting a callback-based API into a Future-based\none — you can use a Completer as follows:\n```\nclass AsyncOperation {\n Completer _completer = new Completer();\n\n Future<T> doOperation() {\n _startOperation();\n return _completer.future; // Send future object back to client.\n }\n\n // Something calls this when the value is ready.\n void _finishOperation(T result) {\n _completer.complete(result);\n }\n\n // If something goes wrong, call this.\n void _errorHappened(error) {\n _completer.completeError(error);\n }\n}\n```", "detail": "", "kind": 7, "label": "Completer" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint32ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint32List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint32ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int32List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 32-bit signed integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 32 bits,\ninterpreted as a signed 32-bit two's complement integer with values in the\nrange -2147483648 to 2147483647.", "detail": "", "kind": 7, "label": "Int32List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat32ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float32List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat32ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt32x4ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int32x4List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt32x4ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt64ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int64List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt64ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat64x2ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float64x2List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat64x2ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt16ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int16List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt16ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int16List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 16-bit signed integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 16 bits,\ninterpreted as a signed 16-bit two's complement integer with values in the\nrange -32768 to +32767.", "detail": "", "kind": 7, "label": "Int16List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat64ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float64List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat64ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int64List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 64-bit signed integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 64 bits,\ninterpreted as a signed 64-bit two's complement integer with values in the\nrange -9223372036854775808 to +9223372036854775807.", "detail": "", "kind": 7, "label": "Int64List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int32x4", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Int32x4 and operations.\n\nInt32x4 stores 4 32-bit bit-masks in \"lanes\".\nThe lanes are \"x\", \"y\", \"z\", and \"w\" respectively.", "detail": "", "kind": 7, "label": "Int32x4" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypedData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A typed view of a sequence of bytes.", "detail": "", "kind": 7, "label": "TypedData" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int8List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 8-bit signed integers.\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low eight bits,\ninterpreted as a signed 8-bit two's complement integer with values in the\nrange -128 to +127.", "detail": "", "kind": 7, "label": "Int8List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float32x4List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of Float32x4 numbers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation will be considerably more\nspace- and time-efficient than the default [List] implementation.", "detail": "", "kind": 7, "label": "Float32x4List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt8ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int8List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt8ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint8ClampedListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint8ClampedList] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint8ClampedListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableByteDataView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A read-only view of a [ByteData].", "detail": "", "kind": 7, "label": "UnmodifiableByteDataView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float32List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of IEEE 754 single-precision binary floating-point\nnumbers that is viewable as a [TypedData].\n\nFor long lists, this\nimplementation can be considerably more space- and time-efficient than\nthe default [List] implementation.\n\nDouble values stored in the list are converted to the nearest\nsingle-precision value. Values read are converted to a double\nvalue with the same value.", "detail": "", "kind": 7, "label": "Float32List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length, random-access sequence of bytes that also provides random\nand unaligned access to the fixed-width integers and floating point\nnumbers represented by those bytes.\n\n`ByteData` may be used to pack and unpack data from external sources\n(such as networks or files systems), and to process large quantities\nof numerical data more efficiently than would be possible\nwith ordinary [List] implementations.\n`ByteData` can save space, by eliminating the need for object headers,\nand time, by eliminating the need for data copies.\nFinally, `ByteData` may be used to intentionally reinterpret the bytes\nrepresenting one arithmetic type as another.\nFor example this code fragment determine what 32-bit signed integer\nis represented by the bytes of a 32-bit floating point number:\n\n var buffer = new Uint8List(8).buffer;\n var bdata = new ByteData.view(buffer);\n bdata.setFloat32(0, 3.04);\n int huh = bdata.getInt32(0);", "detail": "", "kind": 7, "label": "ByteData" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt32ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int32List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt32ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float64x2", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Float64x2 immutable value type and operations.\n\nFloat64x2 stores 2 64-bit floating point values in \"lanes\".\nThe lanes are \"x\" and \"y\" respectively.", "detail": "", "kind": 7, "label": "Float64x2" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint8ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint8List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint8ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableByteBufferView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A read-only view of a [ByteBuffer].", "detail": "", "kind": 7, "label": "UnmodifiableByteBufferView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint16ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint16List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint16ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint64List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 64-bit unsigned integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 64 bits,\ninterpreted as an unsigned 64-bit integer with values in the\nrange 0 to 18446744073709551615.", "detail": "", "kind": 7, "label": "Uint64List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint8ClampedList", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 8-bit unsigned integers.\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are clamped to an unsigned eight bit value.\nThat is, all values below zero are stored as zero\nand all values above 255 are stored as 255.", "detail": "", "kind": 7, "label": "Uint8ClampedList" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteBuffer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A sequence of bytes underlying a typed data object.\n\nUsed to process large quantities of binary or numerical data\nmore efficiently using a typed view.", "detail": "", "kind": 7, "label": "ByteBuffer" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float64List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of IEEE 754 double-precision binary floating-point\nnumbers that is viewable as a [TypedData].\n\nFor long lists, this\nimplementation can be considerably more space- and time-efficient than\nthe default [List] implementation.", "detail": "", "kind": 7, "label": "Float64List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint8List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 8-bit unsigned integers.\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low eight bits,\ninterpreted as an unsigned 8-bit integer with values in the\nrange 0 to 255.", "detail": "", "kind": 7, "label": "Uint8List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int32x4List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of Int32x4 numbers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation will be considerably more\nspace- and time-efficient than the default [List] implementation.", "detail": "", "kind": 7, "label": "Int32x4List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint64ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint64List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint64ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint32List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 32-bit unsigned integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 32 bits,\ninterpreted as an unsigned 32-bit integer with values in the\nrange 0 to 4294967295.", "detail": "", "kind": 7, "label": "Uint32List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint16List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 16-bit unsigned integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 16 bits,\ninterpreted as an unsigned 16-bit integer with values in the\nrange 0 to 65535.", "detail": "", "kind": 7, "label": "Uint16List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float64x2List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of Float64x2 numbers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation will be considerably more\nspace- and time-efficient than the default [List] implementation.", "detail": "", "kind": 7, "label": "Float64x2List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Endian", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Describes endianness to be used when accessing or updating a\nsequence of bytes.", "detail": "", "kind": 7, "label": "Endian" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float32x4", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Float32x4 immutable value type and operations.\n\nFloat32x4 stores 4 32-bit floating point values in \"lanes\".\nThe lanes are \"x\", \"y\", \"z\", and \"w\" respectively.", "detail": "", "kind": 7, "label": "Float32x4" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat32x4ListView", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float32x4List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat32x4ListView" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rectangle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A class for representing two-dimensional rectangles whose properties are\nimmutable.", "detail": "", "kind": 7, "label": "Rectangle" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Point", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A utility class for representing two-dimensional positions.", "detail": "", "kind": 7, "label": "Point" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Random", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A generator of random bool, int, or double values.\n\nThe default implementation supplies a stream of pseudo-random bits that are\nnot suitable for cryptographic purposes.\n\nUse the [Random.secure]() constructor for cryptographic purposes.", "detail": "", "kind": 7, "label": "Random" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MutableRectangle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A class for representing two-dimensional axis-aligned rectangles with\nmutable properties.", "detail": "", "kind": 7, "label": "MutableRectangle" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the runtime system when a type assertion fails.", "detail": "", "kind": 7, "label": "TypeError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Comparator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The signature of a generic comparison function.\n\nA comparison function represents an ordering on a type of objects.\nA total ordering on a type means that for two values, either they\nare equal or one is greater than the other (and the latter must then be\nsmaller than the former).\n\nA [Comparator] function represents such a total ordering by returning\n\n* a negative integer if [a] is smaller than [b],\n* zero if [a] is equal to [b], and\n* a positive integer if [a] is greater than [b].", "detail": "(T a, T b) → int", "kind": 7, "label": "Comparator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Match", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A result from searching within a string.\n\nA Match or an [Iterable] of Match objects is returned from [Pattern]\nmatching methods.\n\nThe following example finds all matches of a [RegExp] in a [String]\nand iterates through the returned iterable of Match objects.\n\n RegExp exp = new RegExp(r\"(\\w+)\");\n String str = \"Parse my string\";\n Iterable<Match> matches = exp.allMatches(str);\n for (Match m in matches) {\n String match = m.group(0);\n print(match);\n }\n\nThe output of the example is:\n\n Parse\n my\n string\n\nSome patterns, regular expressions in particular, may record substrings\nthat were part of the matching. These are called _groups_ in the Match\nobject. Some patterns may never have any groups, and their matches always\nhave zero [groupCount].", "detail": "", "kind": 7, "label": "Match" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Symbol", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Opaque name used by mirrors, invocations and [Function.apply].", "detail": "", "kind": 7, "label": "Symbol" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Set", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A collection of objects in which each object can occur only once.\n\nThat is, for each object of the element type, the object is either considered\nto be in the set, or to _not_ be in the set.\n\nSet implementations may consider some elements indistinguishable. These\nelements are treated as being the same for any operation on the set.\n\nThe default [Set] implementation, [LinkedHashSet], considers objects\nindistinguishable if they are equal with regard to\noperator [Object.==].\n\nIterating over elements of a set may be either unordered\nor ordered in some way. Examples:\n\n* A [HashSet] is unordered, which means that its iteration order is\n unspecified,\n* [LinkedHashSet] iterates in the insertion order of its elements, and\n* a sorted set like [SplayTreeSet] iterates the elements in sorted order.\n\nIt is generally not allowed to modify the set (add or remove elements) while\nan operation on the set is being performed, for example during a call to\n[forEach] or [containsAll]. Nor is it allowed to modify the set while\niterating either the set itself or any [Iterable] that is backed by the set,\nsuch as the ones returned by methods like [where] and [map].\n\nIt is generally not allowed to modify the equality of elements (and thus not\ntheir hashcode) while they are in the set. Some specialized subtypes may be\nmore permissive, in which case they should document this behavior.", "detail": "", "kind": 7, "label": "Set" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The operation was not allowed by the current state of the object.\n\nThis is a generic error used for a variety of different erroneous\nactions. The message should be descriptive.", "detail": "", "kind": 7, "label": "StateError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Deprecated", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The annotation `@Deprecated('migration')` marks a feature as deprecated.\n\nThe annotation [deprecated] is a shorthand for deprecating until\nan unspecified \"next release\" without migration instructions.\n\nThe intent of the `@Deprecated` annotation is to inform users of a feature\nthat they should change their code, even if it is currently still working\ncorrectly.\n\nA deprecated feature is scheduled to be removed at a later time, possibly\nspecified in [message]. A deprecated feature should not be used, code using\nit will break at some point in the future. If existing code is using the\nfeature it should be rewritten to not use the deprecated feature.\n\nA deprecated feature should document how the same effect can be achieved in\n[message], so the programmer knows how to rewrite the code.\n\nThe `@Deprecated` annotation applies to libraries, top-level declarations\n(variables, getters, setters, functions, classes and typedefs),\nclass-level declarations (variables, getters, setters, methods, operators or\nconstructors, whether static or not), named optional arguments and\ntrailing optional positional parameters.\n\nDeprecation is transitive:\n\n - If a library is deprecated, so is every member of it.\n - If a class is deprecated, so is every member of it.\n - If a variable is deprecated, so are its implicit getter and setter.\n\n\nA tool that processes Dart source code may report when:\n\n- the code imports a deprecated library.\n- the code exports a deprecated library, or any deprecated member of\n  a non-deprecated library.\n- the code refers statically to a deprecated declaration.\n- the code dynamically uses a member of an object with a statically known\n type, where the member is deprecated on the static type of the object.\n- the code dynamically calls a method with an argument where the\n corresponding optional parameter is deprecated on the object's static type.\n\n\nIf the deprecated use is inside a library, class or method which is itself\ndeprecated, the tool should not bother the user about it.\nA deprecated feature is expected to use other deprecated features.", "detail": "", "kind": 7, "label": "Deprecated" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "double", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A double-precision floating point number.\n\nRepresentation of Dart doubles containing double specific constants\nand operations and specializations of operations inherited from\n[num]. Dart doubles are 64-bit floating-point numbers as specified in the\nIEEE 754 standard.\n\nThe [double] type is contagious. Operations on [double]s return\n[double] results.\n\nIt is a compile-time error for a class to attempt to extend or implement\ndouble.", "detail": "", "kind": 7, "label": "double" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackTrace", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An interface implemented by all stack trace objects.\n\nA [StackTrace] is intended to convey information to the user about the call\nsequence that triggered an exception.\n\nThese objects are created by the runtime, it is not possible to create\nthem programmatically.", "detail": "", "kind": 7, "label": "StackTrace" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "pragma", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A hint to tools.\n\nTools that work with Dart programs may accept hints to guide their behavior\nas `pragma` annotations on declarations.\nEach tool decides which hints it accepts, what they mean, and whether and\nhow they apply to sub-parts of the annotated entity.\n\nTools that recognize pragma hints should pick a pragma prefix to identify\nthe tool. They should recognize any hint with a [name] starting with their\nprefix followed by `:` as if it was intended for that tool. A hint with a\nprefix for another tool should be ignored (unless compatibility with that\nother tool is a goal).\n\nA tool may recognize unprefixed names as well, if they would recognize that\nname with their own prefix in front.\n\nIf the hint can be parameterized, an extra [options] object can be added as well.\n\nFor example:\n\n```dart\n@pragma('Tool:pragma-name', [param1, param2, ...])\nclass Foo { }\n\n@pragma('OtherTool:other-pragma')\nvoid foo() { }\n```\n\nHere class Foo is annotated with a Tool specific pragma 'pragma-name' and\nfunction foo is annotated with a pragma 'other-pragma' specific to OtherTool.\n", "detail": "", "kind": 7, "label": "pragma" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RangeError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown due to an index being outside a valid range.", "detail": "", "kind": 7, "label": "RangeError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RuneIterator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "[Iterator] for reading runes (integer Unicode code points) out of a Dart\nstring.", "detail": "", "kind": 7, "label": "RuneIterator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegExp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A regular expression pattern.\n\nRegular expressions are [Pattern]s, and can as such be used to match strings\nor parts of strings.\n\nDart regular expressions have the same syntax and semantics as\nJavaScript regular expressions. See\n<http://ecma-international.org/ecma-262/5.1/#sec-15.10>\nfor the specification of JavaScript regular expressions.\n\n[firstMatch] is the main implementation method that applies a regular\nexpression to a string and returns the first [Match]. All\nother methods in [RegExp] can build on it.\n\nUse [allMatches] to look for all matches of a regular expression in\na string.\n\nThe following example finds all matches of a regular expression in\na string.\n```dart\nRegExp exp = new RegExp(r\"(\\w+)\");\nString str = \"Parse my string\";\nIterable<Match> matches = exp.allMatches(str);\n```\n\nNote the use of a _raw string_ (a string prefixed with `r`)\nin the example above. Use a raw string to treat each character in a string\nas a literal character.", "detail": "", "kind": 7, "label": "RegExp" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "bool", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The reserved words `true` and `false` denote objects that are the only two\ninstances of this class.\n\nIt is a compile-time error for a class to attempt to extend or implement\nbool.", "detail": "", "kind": 7, "label": "bool" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Future", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An object representing a delayed computation.\n\nA [Future] is used to represent a potential value, or error,\nthat will be available at some time in the future.\nReceivers of a [Future] can register callbacks\nthat handle the value or error once it is available.\nFor example:\n\n Future<int> future = getFuture();\n future.then((value) => handleValue(value))\n .catchError((error) => handleError(error));\n\nA [Future] can be completed in two ways:\nwith a value (\"the future succeeds\")\nor with an error (\"the future fails\").\nUsers can install callbacks for each case.\n\nIn some cases we say that a future is completed with another future.\nThis is a short way of stating that the future is completed in the same way,\nwith the same value or error,\nas the other future once that completes.\nWhenever a function in the core library may complete a future\n(for example [Completer.complete] or [new Future.value]),\nthen it also accepts another future and does this work for the developer.\n\nThe result of registering a pair of callbacks is a new Future (the\n\"successor\") which in turn is completed with the result of invoking the\ncorresponding callback.\nThe successor is completed with an error if the invoked callback throws.\nFor example:\n```\nFuture<int> successor = future.then((int value) {\n // Invoked when the future is completed with a value.\n return 42; // The successor is completed with the value 42.\n },\n onError: (e) {\n // Invoked when the future is completed with an error.\n if (canHandle(e)) {\n return 499; // The successor is completed with the value 499.\n } else {\n throw e; // The successor is completed with the error e.\n }\n });\n```\n\nIf a future does not have a successor when it completes with an error,\nit forwards the error message to the global error-handler.\nThis behavior makes sure that no error is silently dropped.\nHowever, it also means that error handlers should be installed early,\nso that they are present as soon as a future is completed with an error.\nThe following example demonstrates this potential bug:\n```\nvar future = getFuture();\nnew Timer(new Duration(milliseconds: 5), () {\n // The error-handler is not attached until 5 ms after the future has\n // been received. If the future fails before that, the error is\n // forwarded to the global error-handler, even though there is code\n // (just below) to eventually handle the error.\n future.then((value) { useValue(value); },\n onError: (e) { handleError(e); });\n});\n```\n\nWhen registering callbacks, it's often more readable to register the two\ncallbacks separately, by first using [then] with one argument\n(the value handler) and using a second [catchError] for handling errors.\nEach of these will forward the result that they don't handle\nto their successors, and together they handle both value and error result.\nIt also has the additional benefit of the [catchError] handling errors in the\n[then] value callback too.\nUsing sequential handlers instead of parallel ones often leads to code that\nis easier to reason about.\nIt also makes asynchronous code very similar to synchronous code:\n```\n// Synchronous code.\ntry {\n int value = foo();\n return bar(value);\n} catch (e) {\n return 499;\n}\n```\n\nEquivalent asynchronous code, based on futures:\n```\nFuture<int> future = new Future(foo); // Result of foo() as a future.\nfuture.then((int value) => bar(value))\n .catchError((e) => 499);\n```\n\nSimilar to the synchronous code, the error handler (registered with\n[catchError]) is handling any errors thrown by either `foo` or `bar`.\nIf the error-handler had been registered as the `onError` parameter of\nthe `then` call, it would not catch errors from the `bar` call.\n\nFutures can have more than one callback-pair registered. Each successor is\ntreated independently and is handled as if it was the only successor.\n\nA future may also fail to ever complete. In that case, no callbacks are\ncalled.", "detail": "", "kind": 7, "label": "Future" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Provisional", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An annotation class that was used during development of Dart 2.\n\nShould not be used any more.", "detail": "(Deprecated) ", "kind": 7, "label": "Provisional" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegExpMatch", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A regular expression match.\n\nRegular expression matches are [Match]es, but also include the ability\nto retrieve the names for any named capture groups and to retrieve\nmatches for named capture groups by name instead of their index.", "detail": "", "kind": 7, "label": "RegExpMatch" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ArgumentError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when a function is passed an unacceptable argument.", "detail": "", "kind": 7, "label": "ArgumentError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnimplementedError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Thrown by operations that have not been implemented yet.\n\nThis [Error] is thrown by unfinished code that hasn't yet implemented\nall the features it needs.\n\nIf a class is not intending to implement the feature, it should throw\nan [UnsupportedError] instead. This error is only intended for\nuse during development.", "detail": "", "kind": 7, "label": "UnimplementedError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NoSuchMethodError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the default implementation of [:noSuchMethod:] on [Object].", "detail": "", "kind": 7, "label": "NoSuchMethodError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CastError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the runtime system when a cast operation fails.", "detail": "", "kind": 7, "label": "CastError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "int", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An integer number.\n\nThe default implementation of `int` is 64-bit two's complement integers\nwith operations that wrap to that range on overflow.\n\n**Note:** When compiling to JavaScript, integers are restricted to values\nthat can be represented exactly by double-precision floating point values.\nThe available integer values include all integers between -2^53 and 2^53,\nand some integers with larger magnitude. That includes some integers larger\nthan 2^63.\nThe behavior of the operators and methods in the [int]\nclass therefore sometimes differs between the Dart VM and Dart code\ncompiled to JavaScript. For example, the bitwise operators truncate their\noperands to 32-bit integers when compiled to JavaScript.\n\nClasses cannot extend, implement, or mix in `int`.", "detail": "", "kind": 7, "label": "int" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "num", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An integer or floating-point number.\n\nIt is a compile-time error for any type other than [int] or [double]\nto attempt to extend or implement num.", "detail": "", "kind": 7, "label": "num" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Sink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A generic destination for data.\n\nMultiple data values can be put into a sink, and when no more data is\navailable, the sink should be closed.\n\nThis is a generic interface that other data receivers can implement.", "detail": "", "kind": 7, "label": "Sink" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringBuffer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A class for concatenating strings efficiently.\n\nAllows for the incremental building of a string using write*() methods.\nThe strings are concatenated to a single string only when [toString] is\ncalled.", "detail": "", "kind": 7, "label": "StringBuffer" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BidirectionalIterator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An Iterator that allows moving backwards as well as forwards.", "detail": "", "kind": 7, "label": "BidirectionalIterator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Error", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error objects thrown in the case of a program failure.\n\nAn `Error` object represents a program failure that the programmer\nshould have avoided.\n\nExamples include calling a function with invalid arguments,\nor even with the wrong number of arguments,\nor calling it at a time when it is not allowed.\n\nThese are not errors that a caller should expect or catch -\nif they occur, the program is erroneous,\nand terminating the program may be the safest response.\n\nWhen deciding that a function throws an error,\nthe conditions where it happens should be clearly described,\nand they should be detectable and predictable,\nso the programmer using the function can avoid triggering the error.\n\nSuch descriptions often uses words like\n\"must\" or \"must not\" to describe the condition,\nand if you see words like that in a function's documentation,\nthen not satisfying the requirement\nis very likely to cause an error to be thrown.\n\nExample (from [String.contains]):\n\n `startIndex` must not be negative or greater than `length`.\n\nIn this case, an error will be thrown if `startIndex` is negative\nor too large.\n\nIf the conditions are not detectable before calling a function,\nthe called function should not throw an `Error`.\nIt may still throw a value,\nbut the caller will have to catch the thrown value,\neffectively making it an alternative result rather than an error.\nThe thrown object can choose to implement [Exception]\nto document that it represents an exceptional, but not erroneous, occurrence,\nbut it has no other effect than documentation.\n\nAll non-`null` values can be thrown in Dart.\nObjects extending `Error` are handled specially:\nThe first time they are thrown,\nthe stack trace at the throw point is recorded\nand stored in the error object.\nIt can be retrieved using the [stackTrace] getter.\nAn error object that merely implements `Error`, and doesn't extend it,\nwill not store the stack trace automatically.\n\nError objects are also used for system wide failures\nlike stack overflow or an out-of-memory situation.\n\nSince errors are not created to be caught,\nthere is no need for subclasses to distinguish the errors.\nInstead subclasses have been created in order to make groups\nof related errors easy to create with consistent error messages.\nFor example, the [String.contains] method will use a [RangeError]\nif its `startIndex` isn't in the range `0..length`,\nwhich is easily created by `new RangeError.range(startIndex, 0, length)`.", "detail": "", "kind": 7, "label": "Error" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FallThroughError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when control reaches the end of a switch case.\n\nThe Dart specification requires this error to be thrown when\ncontrol reaches the end of a switch case (except the last case\nof a switch) without meeting a break or similar end of the control\nflow.", "detail": "", "kind": 7, "label": "FallThroughError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringSink", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "StringSink" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A specialized [RangeError] used when an index is not in the range\n`0..indexable.length-1`.\n\nAlso contains the indexable object, its length at the time of the error,\nand the invalid index itself.", "detail": "", "kind": 7, "label": "IndexError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Map", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A collection of key/value pairs, from which you retrieve a value\nusing its associated key.\n\nThere is a finite number of keys in the map,\nand each key has exactly one value associated with it.\n\nMaps, and their keys and values, can be iterated.\nThe order of iteration is defined by the individual type of map.\nExamples:\n\n* The plain [HashMap] is unordered (no order is guaranteed),\n* the [LinkedHashMap] iterates in key insertion order,\n* and a sorted map like [SplayTreeMap] iterates the keys in sorted order.\n\nIt is generally not allowed to modify the map (add or remove keys) while\nan operation is being performed on the map, for example in functions called\nduring a [forEach] or [putIfAbsent] call.\nModifying the map while iterating the keys or values\nmay also break the iteration.\n\nIt is generally not allowed to modify the equality of keys (and thus not\ntheir hashcode) while they are in the map. Some specialized subtypes may be\nmore permissive, in which case they should document this behavior.", "detail": "", "kind": 7, "label": "Map" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Duration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A span of time, such as 27 days, 4 hours, 12 minutes, and 3 seconds.\n\nA `Duration` represents a difference from one point in time to another. The\nduration may be \"negative\" if the difference is from a later time to an\nearlier.\n\nDurations are context independent. For example, a duration of 2 days is\nalways 48 hours, even when it is added to a `DateTime` just when the\ntime zone is about to do a daylight-savings switch. (See [DateTime.add]).\n\nDespite the same name, a `Duration` object does not implement \"Durations\"\nas specified by ISO 8601. In particular, a duration object does not keep\ntrack of the individually provided members (such as \"days\" or \"hours\"), but\nonly uses these arguments to compute the length of the corresponding time\ninterval.\n\nTo create a new Duration object, use this class's single constructor\ngiving the appropriate arguments:\n```dart\nDuration fastestMarathon = new Duration(hours:2, minutes:3, seconds:2);\n```\nThe [Duration] is the sum of all individual parts.\nThis means that individual parts can be larger than the next-bigger unit.\nFor example, [inMinutes] can be greater than 59.\n```dart\nassert(fastestMarathon.inMinutes == 123);\n```\nAll individual parts are allowed to be negative.\n\nUse one of the properties, such as [inDays],\nto retrieve the integer value of the Duration in the specified time unit.\nNote that the returned value is rounded down.\nFor example,\n```dart\nDuration aLongWeekend = new Duration(hours:88);\nassert(aLongWeekend.inDays == 3);\n```\nThis class provides a collection of arithmetic\nand comparison operators,\nplus a set of constants useful for converting time units.\n\nSee [DateTime] to represent a point in time.\nSee [Stopwatch] to measure time-spans.", "detail": "", "kind": 7, "label": "Duration" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stopwatch", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A simple stopwatch interface to measure elapsed time.", "detail": "", "kind": 7, "label": "Stopwatch" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Invocation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Representation of the invocation of a member on an object.\n\nThis is the type of objects passed to [Object.noSuchMethod] when\nan object doesn't support the member invocation that was attempted\non it.", "detail": "", "kind": 7, "label": "Invocation" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UriData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A way to access the structure of a `data:` URI.\n\nData URIs are non-hierarchical URIs that can contain any binary data.\nThey are defined by [RFC 2397](https://tools.ietf.org/html/rfc2397).\n\nThis class allows parsing the URI text and extracting individual parts of the\nURI, as well as building the URI text from structured parts.", "detail": "", "kind": 7, "label": "UriData" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssertionError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the runtime system when an assert statement fails.", "detail": "", "kind": 7, "label": "AssertionError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Exception", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A marker interface implemented by all core library exceptions.\n\nAn [Exception] is intended to convey information to the user about a failure,\nso that the error can be addressed programmatically. It is intended to be\ncaught, and it should contain useful data fields.\n\nCreating instances of [Exception] directly with [:new Exception(\"message\"):]\nis discouraged, and only included as a temporary measure during development,\nuntil the actual exceptions used by a library are done.", "detail": "", "kind": 7, "label": "Exception" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uri", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A parsed URI, such as a URL.\n\n**See also:**\n\n* [URIs][uris] in the [library tour][libtour]\n* [RFC-3986](http://tools.ietf.org/html/rfc3986)\n\n[uris]: https://www.dartlang.org/docs/dart-up-and-running/ch03.html#uris\n[libtour]: https://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html", "detail": "", "kind": 7, "label": "Uri" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntegerDivisionByZeroException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "IntegerDivisionByZeroException" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DateTime", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An instant in time, such as July 20, 1969, 8:18pm GMT.\n\nDateTimes can represent time values that are at a distance of at most\n100,000,000 days from epoch (1970-01-01 UTC): -271821-04-20 to 275760-09-13.\n\nCreate a DateTime object by using one of the constructors\nor by parsing a correctly formatted string,\nwhich complies with a subset of ISO 8601.\nNote that hours are specified between 0 and 23,\nas in a 24-hour clock.\nFor example:\n\n```\nvar now = new DateTime.now();\nvar berlinWallFell = new DateTime.utc(1989, 11, 9);\nvar moonLanding = DateTime.parse(\"1969-07-20 20:18:04Z\"); // 8:18pm\n```\n\nA DateTime object is anchored either in the UTC time zone\nor in the local time zone of the current computer\nwhen the object is created.\n\nOnce created, neither the value nor the time zone\nof a DateTime object may be changed.\n\nYou can use properties to get\nthe individual units of a DateTime object.\n\n```\nassert(berlinWallFell.month == 11);\nassert(moonLanding.hour == 20);\n```\n\nFor convenience and readability,\nthe DateTime class provides a constant for each day and month\nname - for example, [august] and [friday].\nYou can use these constants to improve code readability:\n\n```\nvar berlinWallFell = new DateTime.utc(1989, DateTime.november, 9);\nassert(berlinWallFell.weekday == DateTime.thursday);\n```\n\nDay and month values begin at 1, and the week starts on Monday.\nThat is, the constants [january] and [monday] are both 1.\n\n## Working with UTC and local time\n\nA DateTime object is in the local time zone\nunless explicitly created in the UTC time zone.\n\n```\nvar dDay = new DateTime.utc(1944, 6, 6);\n```\n\nUse [isUtc] to determine whether a DateTime object is based in UTC.\nUse the methods [toLocal] and [toUtc]\nto get the equivalent date/time value specified in the other time zone.\nUse [timeZoneName] to get an abbreviated name of the time zone\nfor the DateTime object.\nTo find the difference\nbetween UTC and the time zone of a DateTime object\ncall [timeZoneOffset].\n\n## Comparing DateTime objects\n\nThe DateTime class contains several handy methods,\nsuch as [isAfter], [isBefore], and [isAtSameMomentAs],\nfor comparing DateTime objects.\n\n```\nassert(berlinWallFell.isAfter(moonLanding) == true);\nassert(berlinWallFell.isBefore(moonLanding) == false);\n```\n\n## Using DateTime with Duration\n\nUse the [add] and [subtract] methods with a [Duration] object\nto create a new DateTime object based on another.\nFor example, to find the date that is sixty days (24 * 60 hours) after today,\nwrite:\n\n```\nvar now = new DateTime.now();\nvar sixtyDaysFromNow = now.add(new Duration(days: 60));\n```\n\nTo find out how much time is between two DateTime objects use\n[difference], which returns a [Duration] object:\n\n```\nvar difference = berlinWallFell.difference(moonLanding);\nassert(difference.inDays == 7416);\n```\n\nThe difference between two dates in different time zones\nis just the number of nanoseconds between the two points in time.\nIt doesn't take calendar days into account.\nThat means that the difference between two midnights in local time may be\nless than 24 hours times the number of days between them,\nif there is a daylight saving change in between.\nIf the difference above is calculated using Australian local time, the\ndifference is 7415 days and 23 hours, which is only 7415 whole days as\nreported by `inDays`.\n\n## Other resources\n\nSee [Duration] to represent a span of time.\nSee [Stopwatch] to measure timespans.\n\nThe DateTime class does not provide internationalization.\nTo internationalize your code, use\nthe [intl](https://pub.dartlang.org/packages/intl) package.\n", "detail": "", "kind": 7, "label": "DateTime" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "String", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A sequence of UTF-16 code units.\n\nStrings are mainly used to represent text. A character may be represented by\nmultiple code points, each code point consisting of one or two code\nunits. For example the Papua New Guinea flag character requires four code\nunits to represent two code points, but should be treated like a single\ncharacter: \"🇵🇬\". Platforms that do not support the flag character may show\nthe letters \"PG\" instead. If the code points are swapped, it instead becomes\nthe Guadeloupe flag \"🇬🇵\" (\"GP\").\n\nA string can be either single or multiline. Single line strings are\nwritten using matching single or double quotes, and multiline strings are\nwritten using triple quotes. The following are all valid Dart strings:\n\n 'Single quotes';\n \"Double quotes\";\n 'Double quotes in \"single\" quotes';\n \"Single quotes in 'double' quotes\";\n\n '''A\n multiline\n string''';\n\n \"\"\"\n Another\n multiline\n string\"\"\";\n\nStrings are immutable. Although you cannot change a string, you can perform\nan operation on a string and assign the result to a new string:\n\n var string = 'Dart is fun';\n var newString = string.substring(0, 5);\n\nYou can use the plus (`+`) operator to concatenate strings:\n\n 'Dart ' + 'is ' + 'fun!'; // 'Dart is fun!'\n\nYou can also use adjacent string literals for concatenation:\n\n 'Dart ' 'is ' 'fun!'; // 'Dart is fun!'\n\nYou can use `${}` to interpolate the value of Dart expressions\nwithin strings. The curly braces can be omitted when evaluating identifiers:\n\n string = 'dartlang';\n '$string has ${string.length} letters'; // 'dartlang has 8 letters'\n\nA string is represented by a sequence of Unicode UTF-16 code units\naccessible through the [codeUnitAt] or the [codeUnits] members:\n\n string = 'Dart';\n string.codeUnitAt(0); // 68\n string.codeUnits; // [68, 97, 114, 116]\n\nThe string representation of code units is accessible through the index\noperator:\n\n string[0]; // 'D'\n\nThe characters of a string are encoded in UTF-16. Decoding UTF-16, which\ncombines surrogate pairs, yields Unicode code points. Following a similar\nterminology to Go, we use the name 'rune' for an integer representing a\nUnicode code point. Use the [runes] property to get the runes of a string:\n\n string.runes.toList(); // [68, 97, 114, 116]\n\nFor a character outside the Basic Multilingual Plane (plane 0) that is\ncomposed of a surrogate pair, [runes] combines the pair and returns a\nsingle integer. For example, the Unicode character for a\nmusical G-clef ('𝄞') with rune value 0x1D11E consists of a UTF-16 surrogate\npair: `0xD834` and `0xDD1E`. Using [codeUnits] returns the surrogate pair,\nand using `runes` returns their combined value:\n\n var clef = '\\u{1D11E}';\n clef.codeUnits; // [0xD834, 0xDD1E]\n clef.runes.toList(); // [0x1D11E]\n\nThe String class can not be extended or implemented. Attempting to do so\nyields a compile-time error.\n\n## Other resources\n\nSee [StringBuffer] to efficiently build a string incrementally. See\n[RegExp] to work with regular expressions.\n\nAlso see:\n\n* [Dart Cookbook](https://www.dartlang.org/docs/cookbook/#strings)\n for String examples and recipes.\n* [Dart Up and Running](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#strings-and-regular-expressions)", "detail": "", "kind": 7, "label": "String" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CyclicInitializationError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when a lazily initialized variable cannot be initialized.\n\nA static/library variable with an initializer expression is initialized\nthe first time it is read. If evaluating the initializer expression causes\nanother read of the variable, this error is thrown.", "detail": "", "kind": 7, "label": "CyclicInitializationError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expando", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An [Expando] allows adding new properties to objects.\n\nDoes not work on numbers, strings, booleans or null.\n\nAn `Expando` does not hold on to the added property value after an object\nbecomes inaccessible.\n\nSince you can always create a new number that is identical to an existing\nnumber, it means that an expando property on a number could never be\nreleased. To avoid this, expando properties cannot be added to numbers.\nThe same argument applies to strings, booleans and null, which also have\nliterals that evaluate to identical values when they occur more than once.\n\nThere is no restriction on other classes, even for compile time constant\nobjects. Be careful if adding expando properties to compile time constants,\nsince they will stay alive forever.", "detail": "", "kind": 7, "label": "Expando" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Function", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The base class for all function types.\n\nA function value, or an instance of a class with a \"call\" method, is a\nsubtype of a function type, and as such, a subtype of [Function].", "detail": "", "kind": 7, "label": "Function" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Type", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Runtime representation of a type.", "detail": "", "kind": 7, "label": "Type" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Comparable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Interface used by types that have an intrinsic ordering.\n\nThe [compareTo] operation defines a total ordering of objects,\nwhich can be used for ordering and sorting.\n\nThe [Comparable] interface should be used for the natural ordering of a type.\nIf a type can be ordered in more than one way,\nand none of them is the obvious natural ordering,\nthen it might be better not to use the [Comparable] interface,\nand to provide separate [Comparator]s instead.\n\nIt is recommended that the order of a [Comparable] agrees\nwith its operator [operator ==] equality (`a.compareTo(b) == 0` iff `a == b`),\nbut this is not a requirement.\nFor example, [double] and [DateTime] have `compareTo` methods\nthat do not agree with operator [operator ==].\nFor doubles the [compareTo] method is more precise than the equality,\nand for [DateTime] it is less precise.\n\nExamples:\n\n (0.0).compareTo(-0.0); // => 1\n 0.0 == -0.0; // => true\n var dt = new DateTime.now();\n var dt2 = dt.toUtc();\n dt == dt2; // => false\n dt.compareTo(dt2); // => 0\n\nThe [Comparable] interface does not imply the existence\nof the comparison operators `<`, `<=`, `>` and `>=`.\nThese should only be defined\nif the ordering is a less-than/greater-than ordering,\nthat is, an ordering where you would naturally\nuse the words \"less than\" about the order of two elements.\n\nIf the equality operator and [compareTo] disagree,\nthe comparison operators should follow the equality operator,\nand will likely also disagree with [compareTo].\nOtherwise they should match the [compareTo] method,\nso that `a < b` iff `a.compareTo(b) < 0`.\n\nThe [double] class defines comparison operators\nthat are compatible with equality.\nThe operators differ from `double.compareTo` on -0.0 and NaN.\n\nThe [DateTime] class has no comparison operators, instead it has the more\nprecisely named [DateTime.isBefore] and [DateTime.isAfter].", "detail": "", "kind": 7, "label": "Comparable" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Iterator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An interface for getting items, one at a time, from an object.\n\nThe for-in construct transparently uses `Iterator` to test for the end\nof the iteration, and to get each item (or _element_).\n\nIf the object iterated over is changed during the iteration, the\nbehavior is unspecified.\n\nThe `Iterator` is initially positioned before the first element.\nBefore accessing the first element the iterator must thus be advanced using\n[moveNext] to point to the first element.\nIf no element is left, then [moveNext] returns false, [current]\nreturns `null`, and all further calls to [moveNext] will also return false.\n\nA typical usage of an Iterator looks as follows:\n\n var it = obj.iterator;\n while (it.moveNext()) {\n use(it.current);\n }\n\n**See also:**\n[Iteration](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html#iteration)\nin the [library tour](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html)", "detail": "", "kind": 7, "label": "Iterator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConcurrentModificationError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error occurring when a collection is modified during iteration.\n\nSome modifications may be allowed for some collections, so each collection\n([Iterable] or similar collection of values) should declare which operations\nare allowed during an iteration.", "detail": "", "kind": 7, "label": "ConcurrentModificationError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbstractClassInstantiationError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when trying to instantiate an abstract class.", "detail": "", "kind": 7, "label": "AbstractClassInstantiationError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BigInt", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An arbitrarily large integer.", "detail": "", "kind": 7, "label": "BigInt" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnsupportedError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The operation was not allowed by the object.\n\nThis [Error] is thrown when an instance cannot implement one of the methods\nin its signature.", "detail": "", "kind": 7, "label": "UnsupportedError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Iterable", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A collection of values, or \"elements\", that can be accessed sequentially.\n\nThe elements of the iterable are accessed by getting an [Iterator]\nusing the [iterator] getter, and using it to step through the values.\nStepping with the iterator is done by calling [Iterator.moveNext],\nand if the call returns `true`,\nthe iterator has now moved to the next element,\nwhich is then available as [Iterator.current].\nIf the call returns `false`, there are no more elements,\nand `iterator.current` returns `null`.\n\nYou can create more than one iterator from the same `Iterable`.\nEach time `iterator` is read, it returns a new iterator,\nand different iterators can be stepped through independently,\neach giving access to all the elements of the iterable.\nThe iterators of the same iterable *should* provide the same values\nin the same order (unless the underlying collection is modified between\nthe iterations, which some collections allow).\n\nYou can also iterate over the elements of an `Iterable`\nusing the for-in loop construct, which uses the `iterator` getter behind the\nscenes.\nFor example, you can iterate over all of the keys of a [Map],\nbecause `Map` keys are iterable.\n\n Map kidsBooks = {'Matilda': 'Roald Dahl',\n 'Green Eggs and Ham': 'Dr Seuss',\n 'Where the Wild Things Are': 'Maurice Sendak'};\n for (var book in kidsBooks.keys) {\n print('$book was written by ${kidsBooks[book]}');\n }\n\nThe [List] and [Set] classes are both `Iterable`,\nas are most classes in the `dart:collection` library.\n\nSome [Iterable] collections can be modified.\nAdding an element to a `List` or `Set` will change which elements it\ncontains, and adding a new key to a `Map` changes the elements of [Map.keys].\nIterators created after the change will provide the new elements, and may\nor may not preserve the order of existing elements\n(for example, a [HashSet] may completely change its order when a single\nelement is added).\n\nChanging a collection *while* it is being iterated\nis generally *not* allowed.\nDoing so will break the iteration, which is typically signalled\nby throwing a [ConcurrentModificationError]\nthe next time [Iterator.moveNext] is called.\nThe current value of [Iterator.current] getter\nshould not be affected by the change in the collection,\nthe `current` value was set by the previous call to [Iterator.moveNext].\n\nSome iterables compute their elements dynamically every time they are\niterated, like the one returned by [Iterable.generate] or the iterable\nreturned by a `sync*` generator function. If the computation doesn't depend\non other objects that may change, then the generated sequence should be\nthe same one every time it's iterated.\n\nThe members of `Iterable`, other than `iterator` itself,\nwork by looking at the elements of the iterable.\nThis can be implemented by running through the [iterator], but some classes\nmay have more efficient ways of finding the result\n(like [last] or [length] on a [List], or [contains] on a [Set]).\n\nThe methods that return another `Iterable` (like [map] and [where])\nare all *lazy* - they will iterate the original (as necessary)\nevery time the returned iterable is iterated, and not before.\n\nSince an iterable may be iterated more than once, it's not recommended to\nhave detectable side-effects in the iterator.\nFor methods like [map] and [where], the returned iterable will execute the\nargument function on every iteration, so those functions should also not\nhave side effects.", "detail": "", "kind": 7, "label": "Iterable" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormatException", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Exception thrown when a string or some other data does not have an expected\nformat and cannot be parsed or processed.", "detail": "", "kind": 7, "label": "FormatException" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "List", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An indexable collection of objects with a length.\n\nSubclasses of this class implement different kinds of lists.\nThe most common kinds of lists are:\n\n* Fixed-length list.\n An error occurs when attempting to use operations\n that can change the length of the list.\n\n* Growable list. Full implementation of the API defined in this class.\n\nThe default growable list, as returned by `new List()` or `[]`, keeps\nan internal buffer, and grows that buffer when necessary. This guarantees\nthat a sequence of [add] operations will each execute in amortized constant\ntime. Setting the length directly may take time proportional to the new\nlength, and may change the internal capacity so that a following add\noperation will need to immediately increase the buffer capacity.\nOther list implementations may have different performance behavior.\n\nThe following code illustrates that some List implementations support\nonly a subset of the API.\n\n List<int> fixedLengthList = new List(5);\n fixedLengthList.length = 0; // Error\n fixedLengthList.add(499); // Error\n fixedLengthList[0] = 87;\n List<int> growableList = [1, 2];\n growableList.length = 0;\n growableList.add(499);\n growableList[0] = 87;\n\nLists are [Iterable]. Iteration occurs over values in index order. Changing\nthe values does not affect iteration, but changing the valid\nindices—that is, changing the list's length—between iteration\nsteps causes a [ConcurrentModificationError]. This means that only growable\nlists can throw ConcurrentModificationError. If the length changes\ntemporarily and is restored before continuing the iteration, the iterator\ndoes not detect it.\n\nIt is generally not allowed to modify the list's length (adding or removing\nelements) while an operation on the list is being performed,\nfor example during a call to [forEach] or [sort].\nChanging the list's length while it is being iterated, either by iterating it\ndirectly or through iterating an [Iterable] that is backed by the list, will\nbreak the iteration.", "detail": "", "kind": 7, "label": "List" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stream", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A source of asynchronous data events.\n\nA Stream provides a way to receive a sequence of events.\nEach event is either a data event, also called an *element* of the stream,\nor an error event, which is a notification that something has failed.\nWhen a stream has emitted all its event,\na single \"done\" event will notify the listener that the end has been reached.\n\nYou [listen] on a stream to make it start generating events,\nand to set up listeners that receive the events.\nWhen you listen, you receive a [StreamSubscription] object\nwhich is the active object providing the events,\nand which can be used to stop listening again,\nor to temporarily pause events from the subscription.\n\nThere are two kinds of streams: \"Single-subscription\" streams and\n\"broadcast\" streams.\n\n*A single-subscription stream* allows only a single listener during the whole\nlifetime of the stream.\nIt doesn't start generating events until it has a listener,\nand it stops sending events when the listener is unsubscribed,\neven if the source of events could still provide more.\n\nListening twice on a single-subscription stream is not allowed, even after\nthe first subscription has been canceled.\n\nSingle-subscription streams are generally used for streaming chunks of\nlarger contiguous data like file I/O.\n\n*A broadcast stream* allows any number of listeners, and it fires\nits events when they are ready, whether there are listeners or not.\n\nBroadcast streams are used for independent events/observers.\n\nIf several listeners want to listen to a single subscription stream,\nuse [asBroadcastStream] to create a broadcast stream on top of the\nnon-broadcast stream.\n\nOn either kind of stream, stream transformations, such as [where] and\n[skip], return the same type of stream as the one the method was called on,\nunless otherwise noted.\n\nWhen an event is fired, the listener(s) at that time will receive the event.\nIf a listener is added to a broadcast stream while an event is being fired,\nthat listener will not receive the event currently being fired.\nIf a listener is canceled, it immediately stops receiving events.\nListening on a broadcast stream can be treated as listening on a new stream\ncontaining only the events that have not yet been emitted when the [listen]\ncall occurs.\nFor example, the [first] getter listens to the stream, then returns the first\nevent that listener receives.\nThis is not necessarily the first even emitted by the stream, but the first\nof the *remaining* events of the broadcast stream.\n\nWhen the \"done\" event is fired, subscribers are unsubscribed before\nreceiving the event. After the event has been sent, the stream has no\nsubscribers. Adding new subscribers to a broadcast stream after this point\nis allowed, but they will just receive a new \"done\" event as soon\nas possible.\n\nStream subscriptions always respect \"pause\" requests. If necessary they need\nto buffer their input, but often, and preferably, they can simply request\ntheir input to pause too.\n\nThe default implementation of [isBroadcast] returns false.\nA broadcast stream inheriting from [Stream] must override [isBroadcast]\nto return `true`.", "detail": "", "kind": 7, "label": "Stream" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapEntry", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A key/value pair representing an entry in a [Map].", "detail": "", "kind": 7, "label": "MapEntry" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackOverflowError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "StackOverflowError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Pattern", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An interface for basic searches within strings.", "detail": "", "kind": 7, "label": "Pattern" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NullThrownError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when attempting to throw [:null:].", "detail": "", "kind": 7, "label": "NullThrownError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OutOfMemoryError", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "OutOfMemoryError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Object", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The base class for all Dart objects.\n\nBecause Object is the root of the Dart class hierarchy,\nevery other Dart class is a subclass of Object.\n\nWhen you define a class, you should override [toString]\nto return a string describing an instance of that class.\nYou might also need to define [hashCode] and [operator ==], as described in the\n[Implementing map\nkeys](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#implementing-map-keys)\nsection of the [library\ntour](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html).", "detail": "", "kind": 7, "label": "Object" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Runes", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The runes (integer Unicode code points) of a [String].", "detail": "", "kind": 7, "label": "Runes" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Null", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The reserved word [:null:] denotes an object that is the sole instance of\nthis class.\n\nIt is a compile-time error for a class to attempt to extend or implement\nNull.", "detail": "", "kind": 7, "label": "Null" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IsolateNameServer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Static methods to allow for simple sharing of [SendPort]s across [Isolate]s.\n\nAll isolates share a global mapping of names to ports. An isolate can\nregister a [SendPort] with a given name using [registerPortWithName];\nanother isolate can then look up that port using [lookupPortByName].\n\nTo create a [SendPort], first create a [ReceivePort], then use\n[ReceivePort.sendPort].\n\nSince multiple isolates can each obtain the same [SendPort] associated with\na particular [ReceivePort], the protocol built on top of this mechanism\nshould typically consist of a single message. If more elaborate two-way\ncommunication or multiple-message communication is necessary, it is\nrecommended to establish a separate communication channel in that first\nmessage (e.g. by passing a dedicated [SendPort]).", "detail": "", "kind": 7, "label": "IsolateNameServer" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tangent", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The geometric description of a tangent: the angle at a point.\n\nSee also:\n * [PathMetric.getTangentForOffset], which returns the tangent of an offset along a path.", "detail": "", "kind": 7, "label": "Tangent" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Vertices", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A set of vertex data used by [Canvas.drawVertices].", "detail": "", "kind": 7, "label": "Vertices" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccessibilityFeatures", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Additional accessibility features that may be enabled by the platform.\n\nIt is not possible to enable these settings from Flutter, instead they are\nused by the platform to indicate that additional accessibility features are\nenabled.", "detail": "", "kind": 7, "label": "AccessibilityFeatures" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathMetrics", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An iterable collection of [PathMetric] objects describing a [Path].\n\nA [PathMetrics] object is created by using the [Path.computeMetrics] method,\nand represents the path as it stood at the time of the call. Subsequent\nmodifications of the path do not affect the [PathMetrics] object.\n\nEach path metric corresponds to a segment, or contour, of a path.\n\nFor example, a path consisting of a [Path.lineTo], a [Path.moveTo], and\nanother [Path.lineTo] will contain two contours and thus be represented by\ntwo [PathMetric] objects.\n\nWhen iterating across a [PathMetrics]' contours, the [PathMetric] objects are only\nvalid until the next one is obtained.", "detail": "", "kind": 7, "label": "PathMetrics" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxWidthStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines various ways to horizontally bound the boxes returned by\n[Paragraph.getBoxesForRange].", "detail": "", "kind": 13, "label": "BoxWidthStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PixelFormat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The format of pixel data given to [decodeImageFromPixels].", "detail": "", "kind": 13, "label": "PixelFormat" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsAction", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The possible actions that can be conveyed from the operating system\naccessibility APIs to a semantics node.", "detail": "", "kind": 7, "label": "SemanticsAction" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paragraph", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A paragraph of text.\n\nA paragraph retains the size and position of each glyph in the text and can\nbe efficiently resized and painted.\n\nTo create a [Paragraph] object, use a [ParagraphBuilder].\n\nParagraphs can be displayed on a [Canvas] using the [Canvas.drawParagraph]\nmethod.", "detail": "", "kind": 7, "label": "Paragraph" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scene", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object representing a composited scene.\n\nTo create a Scene object, use a [SceneBuilder].\n\nScene objects can be displayed on the screen using the\n[Window.render] method.", "detail": "", "kind": 7, "label": "Scene" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EngineLayer", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A handle for the framework to hold and retain an engine layer across frames.", "detail": "", "kind": 7, "label": "EngineLayer" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxHeightStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines various ways to vertically bound the boxes returned by\n[Paragraph.getBoxesForRange].", "detail": "", "kind": 13, "label": "BoxHeightStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrameCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onBeginFrame].", "detail": "(Duration duration) → void", "kind": 7, "label": "FrameCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object that determines the size, position, and rendering of text.\n\nSee also:\n\n * [TextStyle](https://api.flutter.dev/flutter/painting/TextStyle-class.html), the class in the [painting] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParagraphStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object that determines the configuration used by\n[ParagraphBuilder] to position lines within a [Paragraph] of text.", "detail": "", "kind": 7, "label": "ParagraphStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsUpdate", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object representing a batch of semantics updates.\n\nTo create a SemanticsUpdate object, use a [SemanticsUpdateBuilder].\n\nSemantics updates can be applied to the system's retained semantics tree\nusing the [Window.updateSemantics] method.", "detail": "", "kind": 7, "label": "SemanticsUpdate" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageDecoderCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Callback signature for [decodeImageFromList].", "detail": "(Image result) → void", "kind": 7, "label": "ImageDecoderCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathMetric", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Utilities for measuring a [Path] and extracting sub-paths.\n\nIterate over the object returned by [Path.computeMetrics] to obtain\n[PathMetric] objects.\n\nOnce created, the methods on this class will only be valid while the\niterator is at the contour for which they were created. It will also only be\nvalid for the path as it was specified when [Path.computeMetrics] was called.\nIf additional contours are added or any contours are updated, the metrics\nneed to be recomputed. Previously created metrics will still refer to a\nsnapshot of the path at the time they were computed, rather than to the\nactual metrics for the new mutations to the path.", "detail": "", "kind": 7, "label": "PathMetric" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParagraphBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Builds a [Paragraph] containing text with the given styling information.\n\nTo set the paragraph's alignment, truncation, and ellipsizing behavior, pass\nan appropriately-configured [ParagraphStyle] object to the [new\nParagraphBuilder] constructor.\n\nThen, call combinations of [pushStyle], [addText], and [pop] to add styled\ntext to the object.\n\nFinally, call [build] to obtain the constructed [Paragraph] object. After\nthis point, the builder is no longer usable.\n\nAfter constructing a [Paragraph], call [Paragraph.layout] on it and then\npaint it with [Canvas.drawParagraph].", "detail": "", "kind": 7, "label": "ParagraphBuilder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Codec", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A handle to an image codec.\n\nThis class is created by the engine, and should not be instantiated\nor extended directly.\n\nTo obtain an instance of the [Codec] interface, see\n[instantiateImageCodec].", "detail": "", "kind": 7, "label": "Codec" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformMessageCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onPlatformMessage].", "detail": "(String name, ByteData data, PlatformMessageResponseCallback callback) → void", "kind": 7, "label": "PlatformMessageCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOp", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines how a new clip region should be merged with the existing clip\nregion.\n\nUsed by [Canvas.clipRect].", "detail": "", "kind": 13, "label": "ClipOp" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SceneHost", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "(Fuchsia-only) Hosts content provided by another application.", "detail": "", "kind": 7, "label": "SceneHost" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDeviceKind", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The kind of pointer device.", "detail": "", "kind": 13, "label": "PointerDeviceKind" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Picture", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An object representing a sequence of recorded graphical operations.\n\nTo create a [Picture], use a [PictureRecorder].\n\nA [Picture] can be placed in a [Scene] using a [SceneBuilder], via\nthe [SceneBuilder.addPicture] method. A [Picture] can also be\ndrawn into a [Canvas], using the [Canvas.drawPicture] method.", "detail": "", "kind": 7, "label": "Picture" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WindowPadding", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A representation of distances for each of the four edges of a rectangle,\nused to encode the view insets and padding that applications should place\naround their user interface, as exposed by [Window.viewInsets] and\n[Window.padding]. View insets and padding are preferably read via\n[MediaQuery.of].\n\nFor a generic class that represents distances around a rectangle, see the\n[EdgeInsets] class.\n\nSee also:\n\n * [WidgetsBindingObserver], for a widgets layer mechanism to receive\n notifications when the padding changes.\n * [MediaQuery.of], for the preferred mechanism for accessing these values.\n * [Scaffold], which automatically applies the padding in material design\n applications.", "detail": "", "kind": 7, "label": "WindowPadding" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsFlag", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A Boolean value that can be associated with a semantics node.", "detail": "", "kind": 7, "label": "SemanticsFlag" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OffsetBase", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for [Size] and [Offset], which are both ways to describe\na distance as a two-dimensional axis-aligned vector.", "detail": "", "kind": 7, "label": "OffsetBase" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that renders a color gradient.\n\nThere are several types of gradients, represented by the various constructors\non this class.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/painting/Gradient-class.html), the class in the [painting] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PluginUtilities", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Functionality for Flutter plugin authors.\n\nSee also:\n\n * [IsolateNameServer], which provides utilities for dealing with\n [Isolate]s.", "detail": "", "kind": 7, "label": "PluginUtilities" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Window", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The most basic interface to the host operating system's user interface.\n\nThere is a single Window instance in the system, which you can\nobtain from the [window] property.", "detail": "", "kind": 7, "label": "Window" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformMessageResponseCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for responses to platform messages.\n\nUsed as a parameter to [Window.sendPlatformMessage] and\n[Window.onPlatformMessage].", "detail": "(ByteData data) → void", "kind": 7, "label": "PlatformMessageResponseCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrameInfo", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information for a single frame of an animation.\n\nTo obtain an instance of the [FrameInfo] interface, see\n[Codec.getNextFrame].", "detail": "", "kind": 7, "label": "FrameInfo" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CallbackHandle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A wrapper for a raw callback handle.\n\nThis is the return type for [PluginUtilities.getCallbackHandle].", "detail": "", "kind": 7, "label": "CallbackHandle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathMetricIterator", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Tracks iteration from one segment of a path to the next for measurement.", "detail": "", "kind": 7, "label": "PathMetricIterator" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerChange", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "How the pointer has changed since the last report.", "detail": "", "kind": 13, "label": "PointerChange" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Opaque handle to raw decoded image data (pixels).\n\nTo obtain an [Image] object, use [instantiateImageCodec].\n\nTo draw an [Image], use one of the methods on the [Canvas] class, such as\n[Canvas.drawImage].\n\nSee also:\n\n * [Image](https://api.flutter.dev/flutter/widgets/Image-class.html), the class in the [widgets] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsUpdateBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An object that creates [SemanticsUpdate] objects.\n\nOnce created, the [SemanticsUpdate] objects can be passed to\n[Window.updateSemantics] to update the semantics conveyed to the user.", "detail": "", "kind": 7, "label": "SemanticsUpdateBuilder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageFilter", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A filter operation to apply to a raster image.\n\nSee also:\n\n * [BackdropFilter], a widget that applies [ImageFilter] to its rendering.\n * [SceneBuilder.pushBackdropFilter], which is the low-level API for using\n this class.", "detail": "", "kind": 7, "label": "ImageFilter" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDataPacketCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onPointerDataPacket].", "detail": "(PointerDataPacket packet) → void", "kind": 7, "label": "PointerDataPacketCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointMode", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of points.\n\nUsed by [Canvas.drawPoints].", "detail": "", "kind": 13, "label": "PointMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsActionCallback", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onSemanticsAction].", "detail": "(int id, SemanticsAction action, ByteData args) → void", "kind": 7, "label": "SemanticsActionCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PictureRecorder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Records a [Picture] containing a sequence of graphical operations.\n\nTo begin recording, construct a [Canvas] to record the commands.\nTo end recording, use the [PictureRecorder.endRecording] method.", "detail": "", "kind": 7, "label": "PictureRecorder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDataPacket", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A sequence of reports about the state of pointers.", "detail": "", "kind": 7, "label": "PointerDataPacket" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "See also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/painting/StrutStyle-class.html), the class in the [painting] library.\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SceneBuilder", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Builds a [Scene] containing the given visuals.\n\nA [Scene] can then be rendered using [Window.render].\n\nTo draw graphical operations onto a [Scene], first create a\n[Picture] using a [PictureRecorder] and a [Canvas], and then add\nit to the scene using [addPicture].", "detail": "", "kind": 7, "label": "SceneBuilder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalKind", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The kind of [PointerDeviceKind.signal].", "detail": "", "kind": 13, "label": "PointerSignalKind" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParagraphConstraints", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Layout constraints for [Paragraph] objects.\n\nInstances of this class are typically used with [Paragraph.layout].\n\nThe only constraint that can be specified is the [width]. See the discussion\nat [width] for more details.", "detail": "", "kind": 7, "label": "ParagraphConstraints" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerData", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information about the state of a pointer.", "detail": "", "kind": 7, "label": "PointerData" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageByteFormat", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The format in which image bytes should be returned when using\n[Image.toByteData].", "detail": "", "kind": 13, "label": "ImageByteFormat" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2694, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 17, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" } ] [Trace - 12:35:23 PM] Received response 'textDocument/hover - (108)' in 537ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:23 PM] Received response 'textDocument/hover - (109)' in 537ms. Result: { "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\ncalcurate() → void\n```", "kind": "markdown" } } [Trace - 12:35:24 PM] Sending request 'textDocument/completion - (112)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 19 }, "context": { "triggerKind": 1 } } [Trace - 12:35:24 PM] Sending request 'textDocument/documentHighlight - (113)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 19 } } [Trace - 12:35:24 PM] Sending request 'textDocument/hover - (114)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 19 } } [Trace - 12:35:24 PM] Sending request 'textDocument/signatureHelp - (115)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 19 } } [Trace - 12:35:24 PM] Sending notification 'textDocument/didSave'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 27 }, "text": null } [Trace - 12:35:24 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 28 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 19 }, "end": { "line": 96, "character": 19 } }, "rangeLength": 0, "text": "u" } ] } [Trace - 12:35:24 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 29 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 20 }, "end": { "line": 96, "character": 20 } }, "rangeLength": 0, "text": "b" } ] } [Trace - 12:35:24 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 30 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 21 }, "end": { "line": 96, "character": 21 } }, "rangeLength": 0, "text": "l" } ] } [Trace - 12:35:24 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 31 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 22 }, "end": { "line": 96, "character": 22 } }, "rangeLength": 0, "text": "e" } ] } [Trace - 12:35:24 PM] Received response 'textDocument/codeAction - (107)' in 815ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:35:24 PM] Received response 'textDocument/hover - (110)' in 524ms. Result: null [Trace - 12:35:24 PM] Received response 'textDocument/signatureHelp - (111)' in 522ms. Result: null [Trace - 12:35:24 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:24 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "A function body must be provided.", "source": "dart", "code": "missing_function_body", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:24 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:24 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:24 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "Expected an identifier.", "source": "dart", "code": "missing_identifier", "severity": 1, "range": { "end": { "character": 19, "line": 96 }, "start": { "character": 17, "line": 96 } } }, { "message": "Expected to find ')'.", "source": "dart", "code": "expected_token", "severity": 1, "range": { "end": { "character": 19, "line": 96 }, "start": { "character": 17, "line": 96 } } }, { "message": "A function body must be provided.", "source": "dart", "code": "missing_function_body", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:24 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:24 PM] Received response 'textDocument/completion - (112)' in 238ms. Result: [ { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "covariant", "range": { "end": { "character": 19, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "covariant" } ] [Trace - 12:35:24 PM] Received response 'textDocument/documentHighlight - (113)' in 238ms. Result: null [Trace - 12:35:24 PM] Received response 'textDocument/hover - (114)' in 213ms. Result: null [Trace - 12:35:24 PM] Received response 'textDocument/signatureHelp - (115)' in 211ms. Result: null [Trace - 12:35:24 PM] Received notification 'window/showMessage'. Params: { "message": "Unknown method textDocument/didSave", "type": 1 } [Trace - 12:35:24 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:24 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "A function body must be provided.", "source": "dart", "code": "missing_function_body", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:24 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:24 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:24 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "A function body must be provided.", "source": "dart", "code": "missing_function_body", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:24 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:24 PM] Sending request 'textDocument/completion - (116)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 23 }, "context": { "triggerKind": 1 } } [Trace - 12:35:24 PM] Sending request 'textDocument/codeAction - (117)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 24 } }, "context": { "diagnostics": [] } } [Trace - 12:35:24 PM] Sending request 'textDocument/hover - (118)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:24 PM] Sending request 'textDocument/hover - (119)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:24 PM] Sending request 'textDocument/hover - (120)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 17 } } [Trace - 12:35:24 PM] Sending request 'textDocument/documentHighlight - (121)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 23 } } [Trace - 12:35:24 PM] Sending request 'textDocument/hover - (122)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 23 } } [Trace - 12:35:24 PM] Sending request 'textDocument/signatureHelp - (123)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 23 } } [Trace - 12:35:25 PM] Received response 'textDocument/completion - (116)' in 275ms. Result: [ { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "covariant", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "998945", "preselect": null, "detail": "", "kind": 14, "label": "covariant" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "http", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 9, "label": "http" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Anim", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "Anim" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AniControler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "AniControler" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HomePage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "HomePage" }, { "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "_HomePageState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999000", "preselect": null, "detail": "", "kind": 7, "label": "_HomePageState" }, { "data": { "autoImportDisplayUri": "package:flutter_compass/flutter_compass.dart", "libraryId": 548, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterCompass", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[FlutterCompass] is a singleton class that provides assess to compass events\nThe heading varies from 0-360, 0 being north.", "detail": "", "kind": 7, "label": "FlutterCompass" }, { "data": { "autoImportDisplayUri": "package:location/location.dart", "libraryId": 547, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocationAccuracy", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest\nhttps://developer.apple.com/documentation/corelocation/cllocationaccuracy?language=objc\nPrecision of the Location", "detail": "", "kind": 13, "label": "LocationAccuracy" }, { "data": { "autoImportDisplayUri": "package:location/location.dart", "libraryId": 547, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocationData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A data class that contains various information about the user's location.\n\nspeedAccuracy cannot be provided on iOS and thus is always 0.", "detail": "", "kind": 7, "label": "LocationData" }, { "data": { "autoImportDisplayUri": "package:location/location.dart", "libraryId": 547, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Location", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "Location" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Theme] which automatically transitions the colors,\netc, over a given duration whenever the given theme changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].\n\nSee also:\n\n * [Theme], which [AnimatedTheme] uses to actually apply the interpolated\n theme.\n * [ThemeData], which describes the actual configuration of a theme.\n * [MaterialApp], which includes an [AnimatedTheme] widget configured via\n the [MaterialApp.theme] argument.", "detail": "", "kind": 7, "label": "AnimatedTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface that [Scrollable] widgets implement in order to use\n[ScrollPosition].\n\nSee also:\n\n * [ScrollableState], which is the most common implementation of this\n interface.\n * [ScrollPosition], which uses this interface to communicate with the\n scrollable widget.", "detail": "", "kind": 7, "label": "ScrollContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalTranslation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[FractionalTranslation], even if the contents are offset such that\nthey overflow.\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [new Transform.translate], which applies an absolute offset translation\n transformation instead of an offset scaled to the child.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbsorbPointer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this widget prevents its subtree from receiving\npointer events by terminating hit testing at itself. It still consumes space\nduring layout and paints its child as usual. It just prevents its children\nfrom being the target of located events, because it returns true from\n[RenderBox.hitTest].\n\n\nSee also:\n\n * [IgnorePointer], which also prevents its children from receiving pointer\n events but is itself invisible to hit testing.", "detail": "", "kind": 7, "label": "AbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State object for a [Scrollable] widget.\n\nTo manipulate a [Scrollable] widget's scroll position, use the object\nobtained from the [position] property.\n\nTo be informed of when a [Scrollable] widget is scrolling, use a\n[NotificationListener] to listen for [ScrollNotification] notifications.\n\nThis class is not intended to be subclassed. To specialize the behavior of a\n[Scrollable], provide it with a [ScrollPhysics].", "detail": "", "kind": 7, "label": "ScrollableState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativePositionedTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Positioned] which transitions the child's position\nbased on the value of [rect] relative to a bounding box with the\nspecified [size].\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [RelativePositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "RelativePositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Builds a [Widget] when given a concrete value of a [ValueListenable<T>].\n\nIf the `child` parameter provided to the [ValueListenableBuilder] is not\nnull, the same `child` widget is passed back to this [ValueWidgetBuilder]\nand should typically be incorporated in the returned widget tree.\n\nSee also:\n\n * [ValueListenableBuilder], a widget which invokes this builder each time\n a [ValueListenable] changes value.", "detail": "(BuildContext context, T value, Widget child) → Widget", "kind": 7, "label": "ValueWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Texture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture widget refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture widgets are repainted autonomously as dictated by the backend (e.g.\non arrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by its parent widget, and the\ntexture is automatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "Texture" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePredicate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the [Navigator.popUntil] predicate argument.", "detail": "(Route<dynamic> route) → bool", "kind": 7, "label": "RoutePredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Associates a [ScrollController] with a subtree.\n\nWhen a [ScrollView] has [ScrollView.primary] set to true and is not given\nan explicit [ScrollController], the [ScrollView] uses [of] to find the\n[ScrollController] associated with its subtree.\n\nThis mechanism can be used to provide default behavior for scroll views in a\nsubtree. For example, the [Scaffold] uses this mechanism to implement the\nscroll-to-top gesture on iOS.", "detail": "", "kind": 7, "label": "PrimaryScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MetaData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "MetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HourFormat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes how hours are formatted.", "detail": "", "kind": 13, "label": "HourFormat" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultMaterialLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "US English strings for the material widgets.\n\nSee also:\n\n * [GlobalMaterialLocalizations], which provides material localizations for\n many languages.\n * [MaterialApp.delegates], which automatically includes\n [DefaultMaterialLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultMaterialLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Element", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An instantiation of a [Widget] at a particular location in the tree.\n\nWidgets describe how to configure a subtree but the same widget can be used\nto configure multiple subtrees simultaneously because widgets are immutable.\nAn [Element] represents the use of a widget to configure a specific location\nin the tree. Over time, the widget associated with a given element can\nchange, for example, if the parent widget rebuilds and creates a new widget\nfor this location.\n\nElements form a tree. Most elements have a unique child, but some widgets\n(e.g., subclasses of [RenderObjectElement]) can have multiple children.\n\nElements have the following lifecycle:\n\n * The framework creates an element by calling [Widget.createElement] on the\n widget that will be used as the element's initial configuration.\n * The framework calls [mount] to add the newly created element to the tree\n at a given slot in a given parent. The [mount] method is responsible for\n inflating any child widgets and calling [attachRenderObject] as\n necessary to attach any associated render objects to the render tree.\n * At this point, the element is considered \"active\" and might appear on\n screen.\n * At some point, the parent might decide to change the widget used to\n configure this element, for example because the parent rebuilt with new\n state. When this happens, the framework will call [update] with the new\n widget. The new widget will always have the same [runtimeType] and key as\n old widget. If the parent wishes to change the [runtimeType] or key of\n the widget at this location in the tree, can do so by unmounting this\n element and inflating the new widget at this location.\n * At some point, an ancestor might decide to remove this element (or an\n intermediate ancestor) from the tree, which the ancestor does by calling\n [deactivateChild] on itself. Deactivating the intermediate ancestor will\n remove that element's render object from the render tree and add this\n element to the [owner]'s list of inactive elements, causing the framework\n to call [deactivate] on this element.\n * At this point, the element is considered \"inactive\" and will not appear\n on screen. An element can remain in the inactive state only until\n the end of the current animation frame. At the end of the animation\n frame, any elements that are still inactive will be unmounted.\n * If the element gets reincorporated into the tree (e.g., because it or one\n of its ancestors has a global key that is reused), the framework will\n remove the element from the [owner]'s list of inactive elements, call\n [activate] on the element, and reattach the element's render object to\n the render tree. (At this point, the element is again considered \"active\"\n and might appear on screen.)\n * If the element does not get reincorporated into the tree by the end of\n the current animation frame, the framework will call [unmount] on the\n element.\n * At this point, the element is considered \"defunct\" and will not be\n incorporated into the tree in the future.", "detail": "", "kind": 7, "label": "Element" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Mutable selection state of the inspector.", "detail": "", "kind": 7, "label": "InspectorSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State associated with a [Form] widget.\n\nA [FormState] object can be used to [save], [reset], and [validate] every\n[FormField] that is a descendant of the associated [Form].\n\nTypically obtained via [Form.of].", "detail": "", "kind": 7, "label": "FormState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OutlineInputBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Draws a rounded rectangle around an [InputDecorator]'s container.\n\nWhen the input decorator's label is floating, for example because its\ninput child has the focus, the label appears in a gap in the border outline.\n\nThe input decorator's \"container\" is the optionally filled area above the\ndecorator's helper, error, and counter.\n\nSee also:\n\n * [UnderlineInputBorder], the default [InputDecorator] border which\n draws a horizontal line at the bottom of the input decorator's container.\n * [InputDecoration], which is used to configure an [InputDecorator].", "detail": "", "kind": 7, "label": "OutlineInputBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeaderDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Delegate for configuring a [SliverPersistentHeader].", "detail": "", "kind": 7, "label": "SliverPersistentHeaderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A leaf node in the focus tree that can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nTo request focus, find the [FocusScopeNode] for the current [BuildContext]\nand call the [FocusScopeNode.requestFocus] method:\n\n```dart\nFocusScope.of(context).requestFocus(focusNode);\n```\n\nIf your widget requests focus, be sure to call\n`FocusScope.of(context).reparentIfNeeded(focusNode);` in your `build`\nmethod to reparent your [FocusNode] if your widget moves from one\nlocation in the tree to another.\n\n## Lifetime\n\nFocus nodes are long-lived objects. For example, if a stateful widget has a\nfocusable child widget, it should create a [FocusNode] in the\n[State.initState] method, and [dispose] it in the [State.dispose] method,\nproviding the same [FocusNode] to the focusable child each time the\n[State.build] method is run. In particular, creating a [FocusNode] each time\n[State.build] is invoked will cause the focus to be lost each time the\nwidget is built.\n\nSee also:\n\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusNode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterChip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design filter chip.\n\nFilter chips use tags or descriptive words as a way to filter content.\n\nFilter chips are a good alternative to [Checkbox] or [Switch] widgets.\nUnlike these alternatives, filter chips allow for clearly delineated and\nexposed options in a compact area.\n\nRequires one of its ancestors to be a [Material] widget.\n\n\n```dart\nclass ActorFilterEntry {\n const ActorFilterEntry(this.name, this.initials);\n final String name;\n final String initials;\n}\n\nclass CastFilter extends StatefulWidget {\n @override\n State createState() => CastFilterState();\n}\n\nclass CastFilterState extends State<CastFilter> {\n final List<ActorFilterEntry> _cast = <ActorFilterEntry>[\n const ActorFilterEntry('Aaron Burr', 'AB'),\n const ActorFilterEntry('Alexander Hamilton', 'AH'),\n const ActorFilterEntry('Eliza Hamilton', 'EH'),\n const ActorFilterEntry('James Madison', 'JM'),\n ];\n List<String> _filters = <String>[];\n\n Iterable<Widget> get actorWidgets sync* {\n for (ActorFilterEntry actor in _cast) {\n yield Padding(\n padding: const EdgeInsets.all(4.0),\n child: FilterChip(\n avatar: CircleAvatar(child: Text(actor.initials)),\n label: Text(actor.name),\n selected: _filters.contains(actor.name),\n onSelected: (bool value) {\n setState(() {\n if (value) {\n _filters.add(actor.name);\n } else {\n _filters.removeWhere((String name) {\n return name == actor.name;\n });\n }\n });\n },\n ),\n );\n }\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Wrap(\n children: actorWidgets.toList(),\n ),\n Text('Look for: ${_filters.join(', ')}'),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "FilterChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegion", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Annotates a region of the layer tree with a value.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer pushed into the layer tree.", "detail": "", "kind": 7, "label": "AnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the scale of a transformed widget.\n\nHere's an illustration of the [ScaleTransition] widget, with it's [alignment]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "ScaleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeableMaterial", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a list of [MergeableMaterialItem] children. The list contains\n[MaterialSlice] items whose boundaries are either \"merged\" with adjacent\nitems or separated by a [MaterialGap]. The [children] are distributed along\nthe given [mainAxis] in the same way as the children of a [ListBody]. When\nthe list of children changes, gaps are automatically animated open or closed\nas needed.\n\nTo enable this widget to correlate its list of children with the previous\none, each child must specify a key.\n\nWhen a new gap is added to the list of children the adjacent items are\nanimated apart. Similarly when a gap is removed the adjacent items are\nbrought back together.\n\nWhen a new slice is added or removed, the app is responsible for animating\nthe transition of the slices, while the gaps will be animated automatically.\n\nSee also:\n\n * [Card], a piece of material that does not support splitting and merging\n but otherwise looks the same.", "detail": "", "kind": 7, "label": "MergeableMaterial" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines the physics of a [Scrollable] widget.\n\nFor example, determines how the [Scrollable] will behave when the user\nreaches the maximum scroll extent or when the user stops scrolling.\n\nWhen starting a physics [Simulation], the current scroll position and\nvelocity are used as the initial conditions for the particle in the\nsimulation. The movement of the particle in the simulation is then used to\ndetermine the scroll position for the widget.", "detail": "", "kind": 7, "label": "ScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates that the size of one of the descendants of the object receiving\nthis notification has changed, and that therefore any assumptions about that\nlayout are no longer valid.\n\nFor example, sent by the [SizeChangedLayoutNotifier] widget whenever that\nwidget changes size.\n\nThis notification can be used for triggering repaints, but if you use this\nnotification to trigger rebuilds or relayouts, you'll create a backwards\ndependency in the frame pipeline because [SizeChangedLayoutNotification]s\nare generated during layout, which is after the build phase and in the\nmiddle of the layout phase. This backwards dependency can lead to visual\ncorruption or lags.\n\nSee [LayoutChangedNotification] for additional discussion of layout\nnotifications such as this one.\n\nSee also:\n\n * [SizeChangedLayoutNotifier], which sends this notification.\n * [LayoutChangedNotification], of which this is a subclass.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "State", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The logic and internal state for a [StatefulWidget].\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\n[State] objects are created by the framework by calling the\n[StatefulWidget.createState] method when inflating a [StatefulWidget] to\ninsert it into the tree. Because a given [StatefulWidget] instance can be\ninflated multiple times (e.g., the widget is incorporated into the tree in\nmultiple places at once), there might be more than one [State] object\nassociated with a given [StatefulWidget] instance. Similarly, if a\n[StatefulWidget] is removed from the tree and later inserted in to the tree\nagain, the framework will call [StatefulWidget.createState] again to create\na fresh [State] object, simplifying the lifecycle of [State] objects.\n\n[State] objects have the following lifecycle:\n\n * The framework creates a [State] object by calling\n [StatefulWidget.createState].\n * The newly created [State] object is associated with a [BuildContext].\n This association is permanent: the [State] object will never change its\n [BuildContext]. However, the [BuildContext] itself can be moved around\n the tree along with its subtree. At this point, the [State] object is\n considered [mounted].\n * The framework calls [initState]. Subclasses of [State] should override\n [initState] to perform one-time initialization that depends on the\n [BuildContext] or the widget, which are available as the [context] and\n [widget] properties, respectively, when the [initState] method is\n called.\n * The framework calls [didChangeDependencies]. Subclasses of [State] should\n override [didChangeDependencies] to perform initialization involving\n [InheritedWidget]s. If [BuildContext.inheritFromWidgetOfExactType] is\n called, the [didChangeDependencies] method will be called again if the\n inherited widgets subsequently change or if the widget moves in the tree.\n * At this point, the [State] object is fully initialized and the framework\n might call its [build] method any number of times to obtain a\n description of the user interface for this subtree. [State] objects can\n spontaneously request to rebuild their subtree by callings their\n [setState] method, which indicates that some of their internal state\n has changed in a way that might impact the user interface in this\n subtree.\n * During this time, a parent widget might rebuild and request that this\n location in the tree update to display a new widget with the same\n [runtimeType] and [Widget.key]. When this happens, the framework will\n update the [widget] property to refer to the new widget and then call the\n [didUpdateWidget] method with the previous widget as an argument. [State]\n objects should override [didUpdateWidget] to respond to changes in their\n associated widget (e.g., to start implicit animations). The framework\n always calls [build] after calling [didUpdateWidget], which means any\n calls to [setState] in [didUpdateWidget] are redundant.\n * During development, if a hot reload occurs (whether initiated from the\n command line `flutter` tool by pressing `r`, or from an IDE), the\n [reassemble] method is called. This provides an opportunity to\n reinitialize any data that was prepared in the [initState] method.\n * If the subtree containing the [State] object is removed from the tree\n (e.g., because the parent built a widget with a different [runtimeType]\n or [Widget.key]), the framework calls the [deactivate] method. Subclasses\n should override this method to clean up any links between this object\n and other elements in the tree (e.g. if you have provided an ancestor\n with a pointer to a descendant's [RenderObject]).\n * At this point, the framework might reinsert this subtree into another\n part of the tree. If that happens, the framework will ensure that it\n calls [build] to give the [State] object a chance to adapt to its new\n location in the tree. If the framework does reinsert this subtree, it\n will do so before the end of the animation frame in which the subtree was\n removed from the tree. For this reason, [State] objects can defer\n releasing most resources until the framework calls their [dispose]\n method.\n * If the framework does not reinsert this subtree by the end of the current\n animation frame, the framework will call [dispose], which indicates that\n this [State] object will never build again. Subclasses should override\n this method to release any resources retained by this object (e.g.,\n stop any active animations).\n * After the framework calls [dispose], the [State] object is considered\n unmounted and the [mounted] property is false. It is an error to call\n [setState] at this point. This stage of the lifecycle is terminal: there\n is no way to remount a [State] object that has been disposed.\n\nSee also:\n\n * [StatefulWidget], where the current configuration of a [State] is hosted,\n and whose documentation has sample code for [State].\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "State" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls a scrollable widget.\n\nScroll controllers are typically stored as member variables in [State]\nobjects and are reused in each [State.build]. A single scroll controller can\nbe used to control multiple scrollable widgets, but some operations, such\nas reading the scroll [offset], require the controller to be used with a\nsingle scrollable widget.\n\nA scroll controller creates a [ScrollPosition] to manage the state specific\nto an individual [Scrollable] widget. To use a custom [ScrollPosition],\nsubclass [ScrollController] and override [createScrollPosition].\n\nA [ScrollController] is a [Listenable]. It notifies its listeners whenever\nany of the attached [ScrollPosition]s notify _their_ listeners (i.e.\nwhenever any of them scroll). It does not notify its listeners when the list\nof attached [ScrollPosition]s changes.\n\nTypically used with [ListView], [GridView], [CustomScrollView].\n\nSee also:\n\n * [ListView], [GridView], [CustomScrollView], which can be controlled by a\n [ScrollController].\n * [Scrollable], which is the lower-level widget that creates and associates\n [ScrollPosition] objects with [ScrollController] objects.\n * [PageController], which is an analogous object for controlling a\n [PageView].\n * [ScrollPosition], which manages the scroll offset for an individual\n scrolling widget.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScrollView] that uses a single child layout model.\n\nSee also:\n\n * [ListView], which is a [BoxScrollView] that uses a linear layout model.\n * [GridView], which is a [BoxScrollView] that uses a 2D layout model.\n * [CustomScrollView], which can combine multiple child layout models into a\n single scroll view.", "detail": "", "kind": 7, "label": "BoxScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialSlice", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that can be used as a child to [MergeableMaterial]. It is a slice\nof [Material] that animates merging with other slices.\n\nAll [MaterialSlice] objects need a [LocalKey].", "detail": "", "kind": 7, "label": "MaterialSlice" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Slider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A Material Design slider.\n\nUsed to select from a range of values.\n\nA slider can be used to select from either a continuous or a discrete set of\nvalues. The default is to use a continuous range of values from [min] to\n[max]. To use discrete values, use a non-null value for [divisions], which\nindicates the number of discrete intervals. For example, if [min] is 0.0 and\n[max] is 50.0 and [divisions] is 5, then the slider can take on the\ndiscrete values 0.0, 10.0, 20.0, 30.0, 40.0, and 50.0.\n\nThe terms for the parts of a slider are:\n\n * The \"thumb\", which is a shape that slides horizontally when the user\n drags it.\n * The \"track\", which is the line that the slider thumb slides along.\n * The \"value indicator\", which is a shape that pops up when the user\n is dragging the thumb to indicate the value being selected.\n * The \"active\" side of the slider is the side between the thumb and the\n minimum value.\n * The \"inactive\" side of the slider is the side between the thumb and the\n maximum value.\n\nThe slider will be disabled if [onChanged] is null or if the range given by\n[min]..[max] is empty (i.e. if [min] is equal to [max]).\n\nThe slider widget itself does not maintain any state. Instead, when the state\nof the slider changes, the widget calls the [onChanged] callback. Most\nwidgets that use a slider will listen for the [onChanged] callback and\nrebuild the slider with a new [value] to update the visual appearance of the\nslider. To know when the value starts to change, or when it is done\nchanging, set the optional callbacks [onChangeStart] and/or [onChangeEnd].\n\nBy default, a slider will be as wide as possible, centered vertically. When\ngiven unbounded constraints, it will attempt to make the track 144 pixels\nwide (with margins on each side) and will shrink-wrap vertically.\n\nRequires one of its ancestors to be a [Material] widget.\n\nRequires one of its ancestors to be a [MediaQuery] widget. Typically, these\nare introduced by the [MaterialApp] or [WidgetsApp] widget at the top of\nyour application widget tree.\n\nTo determine how it should be displayed (e.g. colors, thumb shape, etc.),\na slider uses the [SliderThemeData] available from either a [SliderTheme]\nwidget or the [ThemeData.sliderTheme] a [Theme] widget above it in the\nwidget tree. You can also override some of the colors with the [activeColor]\nand [inactiveColor] properties, although more fine-grained control of the\nlook is achieved using a [SliderThemeData].\n\nSee also:\n\n * [SliderTheme] and [SliderThemeData] for information about controlling\n the visual appearance of the slider.\n * [Radio], for selecting among a set of explicit values.\n * [Checkbox] and [Switch], for toggling a particular value on or off.\n * <https://material.io/design/components/sliders.html>\n * [MediaQuery], from which the text scale factor is obtained.", "detail": "", "kind": 7, "label": "Slider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The text style to apply to descendant [Text] widgets without explicit style.", "detail": "", "kind": 7, "label": "DefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SnackBarClosedReason", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specify how a [SnackBar] was closed.\n\nThe [ScaffoldState.showSnackBar] function returns a\n[ScaffoldFeatureController]. The value of the controller's closed property\nis a Future that resolves to a SnackBarClosedReason. Applications that need\nto know how a snackbar was closed can use this value.\n\nExample:\n\n```dart\nScaffold.of(context).showSnackBar(\n SnackBar( ... )\n).closed.then((SnackBarClosedReason reason) {\n ...\n});\n```", "detail": "", "kind": 13, "label": "SnackBarClosedReason" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundSliderOverlayShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s thumb overlay.\n\nThe shape of the overlay is a circle with the same center as the thumb, but\nwith a larger radius. It animates to full size when the thumb is pressed,\nand animates back down to size 0 when it is released. It is painted behind\nthe thumb, and is expected to extend beyond the bounds of the thumb so that\nit is visible.\n\nThe overlay color is defined by [SliderThemeData.overlayColor].\n\nSee also:\n\n * [Slider], which includes an overlay defined by this shape.\n * [SliderTheme], which can be used to configure the overlay shape of all\n sliders in a widget subtree.", "detail": "", "kind": 7, "label": "RoundSliderOverlayShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Paints a [Banner].", "detail": "", "kind": 7, "label": "BannerPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget with a preferred size.\n\nThis widget does not impose any constraints on its child, and it doesn't\naffect the child's layout in any way. It just advertises a preferred size\nwhich can be used by the parent.\n\nSee also:\n\n * [AppBar.bottom] and [Scaffold.appBar], which require preferred size widgets.\n * [PreferredSizeWidget], the interface which this widget implements to expose\n its preferred size.\n * [AppBar] and [TabBar], which implement PreferredSizeWidget.", "detail": "", "kind": 7, "label": "PreferredSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [InheritedWidget] that's intended to be used as the base class for\nmodels whose dependents may only depend on one part or \"aspect\" of the\noverall model.\n\nAn inherited widget's dependents are unconditionally rebuilt when the\ninherited widget changes per [InheritedWidget.updateShouldNotify].\nThis widget is similar except that dependents aren't rebuilt\nunconditionally.\n\nWidgets that depend on an [InheritedModel] qualify their dependence\nwith a value that indicates what \"aspect\" of the model they depend\non. When the model is rebuilt, dependents will also be rebuilt, but\nonly if there was a change in the model that corresponds to the aspect\nthey provided.\n\nThe type parameter `T` is the type of the model aspect objects.\n\n\nWidgets create a dependency on an [InheritedModel] with a static method:\n[InheritedModel.inheritFrom]. This method's `context` parameter\ndefines the subtree that will be rebuilt when the model changes.\nTypically the `inheritFrom` method is called from a model-specific\nstatic `of` method. For example:\n\n```dart\nclass MyModel extends InheritedModel<String> {\n // ...\n static MyModel of(BuildContext context, String aspect) {\n return InheritedModel.inheritFrom<MyModel>(context, aspect: aspect);\n }\n}\n```\n\nCalling `MyModel.of(context, 'foo')` means that `context` should only\nbe rebuilt when the `foo` aspect of `MyModel` changes. If the aspect\nis null, then the model supports all aspects.\n\nWhen the inherited model is rebuilt the [updateShouldNotify] and\n[updateShouldNotifyDependent] methods are used to decide what\nshould be rebuilt. If [updateShouldNotify] returns true, then the\ninherited model's [updateShouldNotifyDependent] method is tested for\neach dependent and the set of aspect objects it depends on.\nThe [updateShouldNotifyDependent] method must compare the set of aspect\ndependencies with the changes in the model itself.\n\nFor example:\n\n```dart\nclass ABModel extends InheritedModel<String> {\n ABModel({ this.a, this.b, Widget child }) : super(child: child);\n\n final int a;\n final int b;\n\n @override\n bool updateShouldNotify(ABModel old) {\n return a != old.a || b != old.b;\n }\n\n @override\n bool updateShouldNotifyDependent(ABModel old, Set<String> aspects) {\n return (a != old.a && aspects.contains('a'))\n || (b != old.b && aspects.contains('b'))\n }\n\n // ...\n}\n```\n\nIn the previous example the dependencies checked by\n[updateShouldNotifyDependent] are just the aspect strings passed to\n`inheritFromWidgetOfExactType`. They're represented as a [Set] because\none Widget can depend on more than one aspect of the model.\nIf a widget depends on the model but doesn't specify an aspect,\nthen changes in the model will cause the widget to be rebuilt\nunconditionally.\n\nSee also:\n\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.", "detail": "", "kind": 7, "label": "InheritedModel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The border, labels, icons, and styles used to decorate a Material\nDesign text field.\n\nThe [TextField] and [InputDecorator] classes use [InputDecoration] objects\nto describe their decoration. (In fact, this class is merely the\nconfiguration of an [InputDecorator], which does all the heavy lifting.)\n\nSee also:\n\n * [TextField], which is a text input widget that uses an\n [InputDecoration].\n * [InputDecorator], which is a widget that draws an [InputDecoration]\n around an input child widget.\n * [Decoration] and [DecoratedBox], for drawing borders and backgrounds\n around a child widget.", "detail": "", "kind": 7, "label": "InputDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A route that displays widgets in the [Navigator]'s [Overlay].", "detail": "", "kind": 7, "label": "OverlayRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that establishes a page storage bucket for this widget subtree.", "detail": "", "kind": 7, "label": "PageStorage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPadding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Padding] which automatically transitions the\nindentation over a given duration whenever the given inset changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.", "detail": "", "kind": 7, "label": "AnimatedPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for localized resource values for the lowest levels of the Flutter\nframework.\n\nIn particular, this maps locales to a specific [Directionality] using the\n[textDirection] property.\n\nSee also:\n\n * [DefaultWidgetsLocalizations], which implements this interface and\n supports a variety of locales.", "detail": "", "kind": 7, "label": "WidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Orientation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether in portrait or landscape.", "detail": "", "kind": 13, "label": "Orientation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Factory for creating gesture recognizers.\n\n`T` is the type of gesture recognizer this class manages.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the appearance of an [InputDecorator]'s border.\n\nAn input decorator's border is specified by [InputDecoration.border].\n\nThe border is drawn relative to the input decorator's \"container\" which\nis the optionally filled area above the decorator's helper, error,\nand counter.\n\nInput border's are decorated with a line whose weight and color are defined\nby [borderSide]. The input decorator's renderer animates the input border's\nappearance in response to state changes, like gaining or losing the focus,\nby creating new copies of its input border with [copyWith].\n\nSee also:\n\n * [UnderlineInputBorder], the default [InputDecorator] border which\n draws a horizontal line at the bottom of the input decorator's container.\n * [OutlineInputBorder], an [InputDecorator] border which draws a\n rounded rectangle around the input decorator's container.\n * [InputDecoration], which is used to configure an [InputDecorator].", "detail": "", "kind": 7, "label": "InputBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A horizontal group of cells in a [Table].\n\nEvery row in a table must have the same number of children.\n\nThe alignment of individual cells in a row can be controlled using a\n[TableCell].", "detail": "", "kind": 7, "label": "TableRow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollUpdateNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has changed its scroll position.\n\nSee also:\n\n * [OverscrollNotification], which indicates that a [Scrollable] widget\n has not changed its scroll position because the change would have caused\n its scroll position to go outside its scroll bounds.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollUpdateNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The various kinds of material in material design. Used to\nconfigure the default behavior of [Material] widgets.\n\nSee also:\n\n * [Material], in particular [Material.type].\n * [kMaterialEdges]", "detail": "", "kind": 13, "label": "MaterialType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that renders an exception's message.\n\nThis widget is used when a build method fails, to help with determining\nwhere the problem lies. Exceptions are also logged to the console, which you\ncan read using `flutter logs`. The console will also include additional\ninformation such as the stack trace for the exception.", "detail": "", "kind": 7, "label": "ErrorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ThemeDataTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [ThemeData]s.\n\nThis class specializes the interpolation of [Tween<ThemeData>] to call the\n[ThemeData.lerp] method.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ThemeDataTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Material", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A piece of material.\n\nThe Material widget is responsible for:\n\n1. Clipping: If [clipBehavior] is not [Clip.none], Material clips its widget\n sub-tree to the shape specified by [shape], [type], and [borderRadius].\n By default, [clipBehavior] is [Clip.none] for performance considerations.\n2. Elevation: Material elevates its widget sub-tree on the Z axis by\n [elevation] pixels, and draws the appropriate shadow.\n3. Ink effects: Material shows ink effects implemented by [InkFeature]s\n like [InkSplash] and [InkHighlight] below its children.\n\n## The Material Metaphor\n\nMaterial is the central metaphor in material design. Each piece of material\nexists at a given elevation, which influences how that piece of material\nvisually relates to other pieces of material and how that material casts\nshadows.\n\nMost user interface elements are either conceptually printed on a piece of\nmaterial or themselves made of material. Material reacts to user input using\n[InkSplash] and [InkHighlight] effects. To trigger a reaction on the\nmaterial, use a [MaterialInkController] obtained via [Material.of].\n\nIn general, the features of a [Material] should not change over time (e.g. a\n[Material] should not change its [color], [shadowColor] or [type]).\nChanges to [elevation] and [shadowColor] are animated for [animationDuration].\nChanges to [shape] are animated if [type] is not [MaterialType.transparency]\nand [ShapeBorder.lerp] between the previous and next [shape] values is\nsupported. Shape changes are also animated for [animationDuration].\n\n\n## Shape\n\nThe shape for material is determined by [shape], [type], and [borderRadius].\n\n - If [shape] is non null, it determines the shape.\n - If [shape] is null and [borderRadius] is non null, the shape is a\n rounded rectangle, with corners specified by [borderRadius].\n - If [shape] and [borderRadius] are null, [type] determines the\n shape as follows:\n - [MaterialType.canvas]: the default material shape is a rectangle.\n - [MaterialType.card]: the default material shape is a rectangle with\n rounded edges. The edge radii is specified by [kMaterialEdges].\n - [MaterialType.circle]: the default material shape is a circle.\n - [MaterialType.button]: the default material shape is a rectangle with\n rounded edges. The edge radii is specified by [kMaterialEdges].\n - [MaterialType.transparency]: the default material shape is a rectangle.\n\n## Border\n\nIf [shape] is not null, then its border will also be painted (if any).\n\n## Layout change notifications\n\nIf the layout changes (e.g. because there's a list on the material, and it's\nbeen scrolled), a [LayoutChangedNotification] must be dispatched at the\nrelevant subtree. This in particular means that transitions (e.g.\n[SlideTransition]) should not be placed inside [Material] widgets so as to\nmove subtrees that contain [InkResponse]s, [InkWell]s, [Ink]s, or other\nwidgets that use the [InkFeature] mechanism. Otherwise, in-progress ink\nfeatures (e.g., ink splashes and ink highlights) won't move to account for\nthe new layout.\n\nSee also:\n\n * [MergeableMaterial], a piece of material that can split and re-merge.\n * [Card], a wrapper for a [Material] of [type] [MaterialType.card].\n * <https://material.io/design/>", "detail": "", "kind": 7, "label": "Material" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RaisedButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design \"raised button\".\n\nA raised button is based on a [Material] widget whose [Material.elevation]\nincreases when the button is pressed.\n\nUse raised buttons to add dimension to otherwise mostly flat layouts, e.g.\nin long busy lists of content, or in wide spaces. Avoid using raised buttons\non already-raised content such as dialogs or cards.\n\nIf the [onPressed] callback is null, then the button will be disabled and by\ndefault will resemble a flat button in the [disabledColor]. If you are\ntrying to change the button's [color] and it is not having any effect, check\nthat you are passing a non-null [onPressed] handler.\n\nIf you want an ink-splash effect for taps, but don't want to use a button,\nconsider using [InkWell] directly.\n\nRaised buttons have a minimum size of 88.0 by 36.0 which can be overridden\nwith [ButtonTheme].\n\n\nThis sample shows how to render a disabled RaisedButton, an enabled RaisedButton\nand lastly a RaisedButton with gradient background.\n\n![Three raised buttons, one enabled, another disabled, and the last one\nstyled with a blue gradient background](https://flutter.github.io/assets-for-api-docs/assets/material/raised_button.png)\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Column(\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n const RaisedButton(\n onPressed: null,\n child: Text(\n 'Disabled Button',\n style: TextStyle(fontSize: 20)\n ),\n ),\n const SizedBox(height: 30),\n RaisedButton(\n onPressed: () {},\n child: const Text(\n 'Enabled Button',\n style: TextStyle(fontSize: 20)\n ),\n ),\n const SizedBox(height: 30),\n RaisedButton(\n onPressed: () {},\n textColor: Colors.white,\n padding: const EdgeInsets.all(0.0),\n child: Container(\n decoration: const BoxDecoration(\n gradient: LinearGradient(\n colors: <Color>[\n Color(0xFF0D47A1),\n Color(0xFF1976D2),\n Color(0xFF42A5F5),\n ],\n ),\n ),\n padding: const EdgeInsets.all(10.0),\n child: const Text(\n 'Gradient Button',\n style: TextStyle(fontSize: 20)\n ),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [FlatButton], a material design button without a shadow.\n * [DropdownButton], a button that shows options to select from.\n * [FloatingActionButton], the round button in material applications.\n * [IconButton], to create buttons that just contain icons.\n * [InkWell], which implements the ink splash part of a flat button.\n * [RawMaterialButton], the widget this widget is based on.\n * <https://material.io/design/components/buttons.html>", "detail": "", "kind": 7, "label": "RaisedButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flexible", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls how a child of a [Row], [Column], or [Flex] flexes.\n\nUsing a [Flexible] widget gives a child of a [Row], [Column], or [Flex]\nthe flexibility to expand to fill the available space in the main axis\n(e.g., horizontally for a [Row] or vertically for a [Column]), but, unlike\n[Expanded], [Flexible] does not require the child to fill the available\nspace.\n\nA [Flexible] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Flexible] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\nSee also:\n\n * [Expanded], which forces the child to expand to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flexible" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AboutListTile", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] that shows an about box.\n\nThis widget is often added to an app's [Drawer]. When tapped it shows\nan about box dialog with [showAboutDialog].\n\nThe about box will include a button that shows licenses for software used by\nthe application. The licenses shown are those returned by the\n[LicenseRegistry] API, which can be used to add more licenses to the list.\n\nIf your application does not have a [Drawer], you should provide an\naffordance to call [showAboutDialog] or (at least) [showLicensePage].", "detail": "", "kind": 7, "label": "AboutListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [Viewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "NestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Row", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in a horizontal array.\n\nTo cause a child to expand to fill the available horizontal space, wrap the\nchild in an [Expanded] widget.\n\nThe [Row] widget does not scroll (and in general it is considered an error\nto have more children in a [Row] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a vertical variant, see [Column].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example divides the available space into three (horizontally), and\nplaces text centered in the first two cells and the Flutter logo centered in\nthe third:\n\n```dart\nRow(\n children: <Widget>[\n Expanded(\n child: Text('Deliver features faster', textAlign: TextAlign.center),\n ),\n Expanded(\n child: Text('Craft beautiful UIs', textAlign: TextAlign.center),\n ),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\n## Troubleshooting\n\n### Why does my row have a yellow and black warning stripe?\n\nIf the non-flexible contents of the row (those that are not wrapped in\n[Expanded] or [Flexible] widgets) are together wider than the row itself,\nthen the row is said to have overflowed. When a row overflows, the row does\nnot have any remaining space to share between its [Expanded] and [Flexible]\nchildren. The row reports this by drawing a yellow and black striped\nwarning box on the edge that is overflowing. If there is room on the outside\nof the row, the amount of overflow is printed in red lettering.\n\n\n#### Story time\n\nSuppose, for instance, that you had this code:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nThe row first asks its first child, the [FlutterLogo], to lay out, at\nwhatever size the logo would like. The logo is friendly and happily decides\nto be 24 pixels to a side. This leaves lots of room for the next child. The\nrow then asks that next child, the text, to lay out, at whatever size it\nthinks is best.\n\nAt this point, the text, not knowing how wide is too wide, says \"Ok, I will\nbe thiiiiiiiiiiiiiiiiiiiis wide.\", and goes well beyond the space that the\nrow has available, not wrapping. The row responds, \"That's not fair, now I\nhave no more room available for my other children!\", and gets angry and\nsprouts a yellow and black strip.\n\nThe fix is to wrap the second child in an [Expanded] widget, which tells the\nrow that the child should be given the remaining room:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Expanded(\n child: Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n ),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nNow, the row first asks the logo to lay out, and then asks the _icon_ to lay\nout. The [Icon], like the logo, is happy to take on a reasonable size (also\n24 pixels, not coincidentally, since both [FlutterLogo] and [Icon] honor the\nambient [IconTheme]). This leaves some room left over, and now the row tells\nthe text exactly how wide to be: the exact width of the remaining space. The\ntext, now happy to comply to a reasonable request, wraps the text within\nthat width, and you end up with a paragraph split over several lines.\n\n## Layout algorithm\n\n_This section describes how a [Row] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Row] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded horizontal constraints and the incoming\n vertical constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight vertical constraints that\n match the incoming max height.\n2. Divide the remaining horizontal space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of horizontal space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same vertical constraints\n as in step 1, but instead of using unbounded horizontal constraints, use\n horizontal constraints based on the amount of space allocated in step 2.\n Children with [Flexible.fit] properties that are [FlexFit.tight] are\n given tight constraints (i.e., forced to fill the allocated space), and\n children with [Flexible.fit] properties that are [FlexFit.loose] are\n given loose constraints (i.e., not forced to fill the allocated space).\n4. The height of the [Row] is the maximum height of the children (which will\n always satisfy the incoming vertical constraints).\n5. The width of the [Row] is determined by the [mainAxisSize] property. If\n the [mainAxisSize] property is [MainAxisSize.max], then the width of the\n [Row] is the max width of the incoming constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the width of the [Row] is the sum\n of widths of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any horizontal\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Column], for a vertical equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may by sized smaller (leaving some remaining room unused).\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Row" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A snapping physics that always lands directly on items instead of anywhere\nwithin the scroll extent.\n\nBehaves similarly to a slot machine wheel except the ballistics simulation\nnever overshoots and rolls back within a single item if it's to settle on\nthat item.\n\nMust be used with a scrollable that uses a [FixedExtentScrollController].\n\nDefers back to the parent beyond the scroll extents.", "detail": "", "kind": 7, "label": "FixedExtentScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OutlineButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Similar to a [FlatButton] with a thin grey rounded rectangle border.\n\nThe outline button's border shape is defined by [shape]\nand its appearance is defined by [borderSide], [disabledBorderColor],\nand [highlightedBorderColor]. By default the border is a one pixel\nwide grey rounded rectangle that does not change when the button is\npressed or disabled. By default the button's background is transparent.\n\nIf the [onPressed] callback is null, then the button will be disabled and by\ndefault will resemble a flat button in the [disabledColor].\n\nThe button's [highlightElevation], which defines the size of the\ndrop shadow when the button is pressed, is 0.0 (no shadow) by default.\nIf [highlightElevation] is given a value greater than 0.0 then the button\nbecomes a cross between [RaisedButton] and [FlatButton]: a bordered\nbutton whose elevation increases and whose background becomes opaque\nwhen the button is pressed.\n\nIf you want an ink-splash effect for taps, but don't want to use a button,\nconsider using [InkWell] directly.\n\nOutline buttons have a minimum size of 88.0 by 36.0 which can be overridden\nwith [ButtonTheme].\n\nSee also:\n\n * [RaisedButton], a filled material design button with a shadow.\n * [FlatButton], a material design button without a shadow.\n * [DropdownButton], a button that shows options to select from.\n * [FloatingActionButton], the round button in material applications.\n * [IconButton], to create buttons that just contain icons.\n * [InkWell], which implements the ink splash part of a flat button.\n * <https://material.io/design/components/buttons.html>", "detail": "", "kind": 7, "label": "OutlineButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedOpacity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Opacity] which automatically transitions the child's\nopacity over a given duration whenever the given opacity changes.\n\nAnimating an opacity is relatively expensive because it requires painting\nthe child into an intermediate buffer.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\n\n```dart\nclass LogoFade extends StatefulWidget {\n @override\n createState() => LogoFadeState();\n}\n\nclass LogoFadeState extends State<LogoFade> {\n double opacityLevel = 1.0;\n\n void _changeOpacity() {\n setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedOpacity(\n opacity: opacityLevel,\n duration: Duration(seconds: 3),\n child: FlutterLogo(),\n ),\n RaisedButton(\n child: Text('Fade Logo'),\n onPressed: _changeOpacity,\n ),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [FadeTransition], an explicitly animated version of this widget, where\n an [Animation] is provided by the caller instead of being built in.", "detail": "", "kind": 7, "label": "AnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButtonThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [FloatingActionButton]\nwidgets.\n\nDescendant widgets obtain the current [FloatingActionButtonThemeData] object\nusing `Theme.of(context).floatingActionButtonTheme`. Instances of\n[FloatingActionButtonThemeData] can be customized with\n[FloatingActionButtonThemeData.copyWith].\n\nTypically a [FloatingActionButtonThemeData] is specified as part of the\noverall [Theme] with [ThemeData.floatingActionButtonTheme].\n\nAll [FloatingActionButtonThemeData] properties are `null` by default.\nWhen null, the [FloatingActionButton] will use the values from [ThemeData]\nif they exist, otherwise it will provide its own defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "FloatingActionButtonThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboardListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that calls a callback whenever the user presses or releases a key\non a keyboard.\n\nA [RawKeyboardListener] is useful for listening to raw key events and\nhardware buttons that are represented as keys. Typically used by games and\nother apps that use keyboards for purposes other than text entry.\n\nFor text entry, consider using a [EditableText], which integrates with\non-screen keyboards and input method editors (IMEs).\n\nSee also:\n\n * [EditableText], which should be used instead of this widget for text\n entry.", "detail": "", "kind": 7, "label": "RawKeyboardListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownButtonFormField", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience widget that wraps a [DropdownButton] in a [FormField].", "detail": "", "kind": 7, "label": "DropdownButtonFormField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A place in an [Overlay] that can contain a widget.\n\nOverlay entries are inserted into an [Overlay] using the\n[OverlayState.insert] or [OverlayState.insertAll] functions. To find the\nclosest enclosing overlay for a given [BuildContext], use the [Overlay.of]\nfunction.\n\nAn overlay entry can be in at most one overlay at a time. To remove an entry\nfrom its overlay, call the [remove] function on the overlay entry.\n\nBecause an [Overlay] uses a [Stack] layout, overlay entries can use\n[Positioned] and [AnimatedPositioned] to position themselves within the\noverlay.\n\nFor example, [Draggable] uses an [OverlayEntry] to show the drag avatar that\nfollows the user's finger across the screen after the drag begins. Using the\noverlay to display the drag avatar lets the avatar float over the other\nwidgets in the app. As the user's finger moves, draggable calls\n[markNeedsBuild] on the overlay entry to cause it to rebuild. It its build,\nthe entry includes a [Positioned] with its top and left property set to\nposition the drag avatar near the user's finger. When the drag is over,\n[Draggable] removes the entry from the overlay to remove the drag avatar\nfrom view.\n\nBy default, if there is an entirely [opaque] entry over this one, then this\none will not be included in the widget tree (in particular, stateful widgets\nwithin the overlay entry will not be instantiated). To ensure that your\noverlay entry is still built even if it is not visible, set [maintainState]\nto true. This is more expensive, so should be done with care. In particular,\nif widgets in an overlay entry with [maintainState] set to true repeatedly\ncall [State.setState], the user's battery will be drained unnecessarily.\n\nSee also:\n\n * [Overlay]\n * [OverlayState]\n * [WidgetsApp]\n * [MaterialApp]", "detail": "", "kind": 7, "label": "OverlayEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HoldScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scroll activity that does nothing but can be released to resume\nnormal idle behavior.\n\nThis is used while the user is touching the [Scrollable] but before the\ntouch has become a [Drag].\n\nFor the purposes of [ScrollNotification]s, this activity does not constitute\nscrolling, and does not prevent the user from interacting with the contents\nof the [Scrollable] (unlike when a drag has begun or there is a scroll\nanimation underway).", "detail": "", "kind": 7, "label": "HoldScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material expansion panel list that lays out its children and animates\nexpansions.\n\n\nHere is a simple example of how to implement ExpansionPanelList.\n\n```dart\n// stores ExpansionPanel state information\nclass Item {\n Item({\n this.expandedValue,\n this.headerValue,\n this.isExpanded = false,\n });\n\n String expandedValue;\n String headerValue;\n bool isExpanded;\n}\n\nList<Item> generateItems(int numberOfItems) {\n return List.generate(numberOfItems, (int index) {\n return Item(\n headerValue: 'Panel $index',\n expandedValue: 'This is item number $index',\n );\n });\n}\n```\n\n```dart\nList<Item> _data = generateItems(8);\n\n@override\nWidget build(BuildContext context) {\n return SingleChildScrollView(\n child: Container(\n child: _buildPanel(),\n ),\n );\n}\n\nWidget _buildPanel() {\n return ExpansionPanelList(\n expansionCallback: (int index, bool isExpanded) {\n setState(() {\n _data[index].isExpanded = !isExpanded;\n });\n },\n children: _data.map<ExpansionPanel>((Item item) {\n return ExpansionPanel(\n headerBuilder: (BuildContext context, bool isExpanded) {\n return ListTile(\n title: Text(item.headerValue),\n );\n },\n body: ListTile(\n title: Text(item.expandedValue),\n subtitle: Text('To delete this panel, tap the trash can icon'),\n trailing: Icon(Icons.delete),\n onTap: () {\n setState(() {\n _data.removeWhere((currentItem) => item == currentItem);\n });\n }\n ),\n isExpanded: item.isExpanded,\n );\n }).toList(),\n );\n}\n```\n\nSee also:\n\n * [ExpansionPanel]\n * [ExpansionPanelList.radio]\n * <https://material.io/design/components/lists.html#types>", "detail": "", "kind": 7, "label": "ExpansionPanelList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a slider theme to descendant [Slider] widgets.\n\nA slider theme describes the colors and shape choices of the slider\ncomponents.\n\nDescendant widgets obtain the current theme's [SliderThemeData] object using\n[SliderTheme.of]. When a widget uses [SliderTheme.of], it is automatically\nrebuilt if the theme later changes.\n\nThe slider is as big as the largest of\nthe [SliderComponentShape.getPreferredSize] of the thumb shape,\nthe [SliderComponentShape.getPreferredSize] of the overlay shape,\nand the [SliderTickMarkShape.getPreferredSize] of the tick mark shape\n\nSee also:\n\n * [SliderThemeData], which describes the actual configuration of a slider\n theme.\n * [SliderComponentShape], which can be used to create custom shapes for\n the slider thumb, overlay, and value indicator.\n * [SliderTrackShape], which can be used to create custom shapes for the\n slider track.\n * [SliderTickMarkShape], which can be used to create custom shapes for the\n slider tick marks.", "detail": "", "kind": 7, "label": "SliderTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenableBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget whose content stays synced with a [ValueListenable].\n\nGiven a [ValueListenable<T>] and a [builder] which builds widgets from\nconcrete values of `T`, this class will automatically register itself as a\nlistener of the [ValueListenable] and call the [builder] with updated values\nwhen the value changes.\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nvalue of the [ValueListenable], it's more efficient to build that subtree\nonce instead of rebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\n[ValueListenableBuilder] will pass it back to your [builder] function so\nthat you can incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis sample shows how you could use a [ValueListenableBuilder] instead of\nsetting state on the whole [Scaffold] in the default `flutter create` app.\n\n```dart\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State<MyHomePage> {\n final ValueNotifier<int> _counter = ValueNotifier<int>(0);\n final Widget goodJob = const Text('Good job!');\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title)\n ),\n body: Center(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pushed the button this many times:'),\n ValueListenableBuilder(\n builder: (BuildContext context, int value, Widget child) {\n // This builder will only get called when the _counter\n // is updated.\n return Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: <Widget>[\n Text('$value'),\n child,\n ],\n );\n },\n valueListenable: _counter,\n // The child parameter is most helpful if the child is\n // expensive to build and does not depend on the value from\n // the notifier.\n child: goodJob,\n )\n ],\n ),\n ),\n floatingActionButton: FloatingActionButton(\n child: Icon(Icons.plus_one),\n onPressed: () => _counter.value += 1,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedBuilder], which also triggers rebuilds from a [Listenable]\n without passing back a specific value from a [ValueListenable].\n * [NotificationListener], which lets you rebuild based on [Notification]\n coming from its descendant widgets rather than a [ValueListenable] that\n you have a direct reference to.\n * [StreamBuilder], where a builder can depend on a [Stream] rather than\n a [ValueListenable] for more advanced use cases.", "detail": "", "kind": 7, "label": "ValueListenableBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A route with entrance and exit transitions.", "detail": "", "kind": 7, "label": "TransitionRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePageBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the function that builds a route's primary contents.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildPage] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) → Widget", "kind": 7, "label": "RoutePageBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of a method that provides a [BuildContext] and\n[ScrollController] for building a widget that may overflow the draggable\n[Axis] of the containing [DraggableScrollSheet].\n\nUsers should apply the [scrollController] to a [ScrollView] subclass, such\nas a [SingleChildScrollView], [ListView] or [GridView], to have the whole\nsheet be draggable.", "detail": "(BuildContext context, ScrollController scrollController) → Widget", "kind": 7, "label": "ScrollableWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that builds a widget given an [Orientation].\n\nUsed by [OrientationBuilder.builder].", "detail": "(BuildContext context, Orientation orientation) → Widget", "kind": 7, "label": "OrientationWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the constructor that is called when an error occurs while\nbuilding a widget.\n\nThe argument provides information regarding the cause of the error.\n\nSee also:\n\n * [ErrorWidget.builder], which can be set to override the default\n [ErrorWidget] builder.\n * [FlutterError.reportError], which is typically called with the same\n [FlutterErrorDetails] object immediately prior to [ErrorWidget.builder]\n being called.", "detail": "(FlutterErrorDetails details) → Widget", "kind": 7, "label": "ErrorWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes how [Scrollable] widgets should behave.\n\nUsed by [ScrollConfiguration] to configure the [Scrollable] widgets in a\nsubtree.", "detail": "", "kind": 7, "label": "ScrollBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetAccept", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for causing a [DragTarget] to accept the given data.\n\nUsed by [DragTarget.onAccept].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItemSelected", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback invoked when a menu item is selected. The\nargument is the value of the [PopupMenuItem] that caused its menu to be\ndismissed.\n\nUsed by [PopupMenuButton.onSelected].", "detail": "(T value) → void", "kind": 7, "label": "PopupMenuItemSelected" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that has a child widget provided to it, instead of building a new\nwidget.\n\nUseful as a base class for other widgets, such as [InheritedWidget] and\n[ParentDataWidget].\n\nSee also:\n\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [ParentDataWidget], for widgets that populate the\n [RenderObject.parentData] slot of their child's [RenderObject] to\n configure the parent widget's layout.\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "ProxyWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleTickerProviderStateMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides a single [Ticker] that is configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create the [AnimationController] in a [State] that only uses a single\n[AnimationController], mix in this class, then pass `vsync: this`\nto the animation controller constructor.\n\nThis mixin only supports vending a single ticker. If you might have multiple\n[AnimationController] objects over the lifetime of the [State], use a full\n[TickerProviderStateMixin] instead.", "detail": "", "kind": 7, "label": "SingleTickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpandIcon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget representing a rotating expand/collapse button. The icon rotates\n180 degrees when pressed, then reverts the animation on a second press.\nThe underlying icon is [Icons.expand_more].\n\nThe expand icon does not include a semantic label for accessibility. In\norder to be accessible it should be combined with a label using\n[MergeSemantics]. This is done automatically by the [ExpansionPanel] widget.\n\nSee [IconButton] for a more general implementation of a pressable button\nwith an icon.", "detail": "", "kind": 7, "label": "ExpandIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NeverScrollableScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics that does not allow the user to scroll.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "NeverScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectionChangedCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the selection change callback used by\n[WidgetInspectorService.selectionChangedCallback].", "detail": "() → void", "kind": 7, "label": "InspectorSelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback used by ink effects to obtain the rectangle for the effect.\n\nUsed by [InkHighlight] and [InkSplash], for example.", "detail": "() → Rect", "kind": 7, "label": "RectCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearProgressIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design linear progress indicator, also known as a progress bar.\n\nA widget that shows progress along a line. There are two kinds of linear\nprogress indicators:\n\n * _Determinate_. Determinate progress indicators have a specific value at\n each point in time, and the value should increase monotonically from 0.0\n to 1.0, at which time the indicator is complete. To create a determinate\n progress indicator, use a non-null [value] between 0.0 and 1.0.\n * _Indeterminate_. Indeterminate progress indicators do not have a specific\n value at each point in time and instead indicate that progress is being\n made without indicating how much progress remains. To create an\n indeterminate progress indicator, use a null [value].\n\nThe indicator line is displayed with [valueColor], an animated value. To\nspecify a constant color value use: `AlwaysStoppedAnimation<Color>(color)`.\n\nSee also:\n\n * [CircularProgressIndicator], which shows progress along a circular arc.\n * [RefreshIndicator], which automatically displays a [CircularProgressIndicator]\n when the underlying vertical scrollable is overscrolled.\n * <https://material.io/design/components/progress-indicators.html#linear-progress-indicators>", "detail": "", "kind": 7, "label": "LinearProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcher", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that by default does a [FadeTransition] between a new widget and\nthe widget previously set on the [AnimatedSwitcher] as a child.\n\nIf they are swapped fast enough (i.e. before [duration] elapses), more than\none previous child can exist and be transitioning out while the newest one\nis transitioning in.\n\nIf the \"new\" child is the same widget type and key as the \"old\" child, but\nwith different parameters, then [AnimatedSwitcher] will *not* do a\ntransition between them, since as far as the framework is concerned, they\nare the same widget and the existing widget can be updated with the new\nparameters. To force the transition to occur, set a [Key] on each child\nwidget that you wish to be considered unique (typically a [ValueKey] on the\nwidget data that distinguishes this child from the others).\n\nThe same key can be used for a new child as was used for an already-outgoing\nchild; the two will not be considered related. (For example, if a progress\nindicator with key A is first shown, then an image with key B, then another\nprogress indicator with key A again, all in rapid succession, then the old\nprogress indicator and the image will be fading out while a new progress\nindicator is fading in.)\n\n\n```dart\nclass ClickCounter extends StatefulWidget {\n const ClickCounter({Key key}) : super(key: key);\n\n @override\n _ClickCounterState createState() => _ClickCounterState();\n}\n\nclass _ClickCounterState extends State<ClickCounter> {\n int _count = 0;\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Material(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n AnimatedSwitcher(\n duration: const Duration(milliseconds: 500),\n transitionBuilder: (Widget child, Animation<double> animation) {\n return ScaleTransition(child: child, scale: animation);\n },\n child: Text(\n '$_count',\n // This key causes the AnimatedSwitcher to interpret this as a \"new\"\n // child each time the count changes, so that it will begin its animation\n // when the count changes.\n key: ValueKey<int>(_count),\n style: Theme.of(context).textTheme.display1,\n ),\n ),\n RaisedButton(\n child: const Text('Increment'),\n onPressed: () {\n setState(() {\n _count += 1;\n });\n },\n ),\n ],\n ),\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedCrossFade], which only fades between two children, but also\n interpolates their sizes, and is reversible.\n * [FadeTransition] which [AnimatedSwitcher] uses to perform the transition.", "detail": "", "kind": 7, "label": "AnimatedSwitcher" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPrototypeExtentList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places its box children in a linear array and constrains them\nto have the same extent as a prototype item along the main axis.\n\n[SliverPrototypeExtentList] arranges its children in a line along\nthe main axis starting at offset zero and without gaps. Each child is\nconstrained to the same extent as the [prototypeItem] along the main axis\nand the [SliverConstraints.crossAxisExtent] along the cross axis.\n\n[SliverPrototypeExtentList] is more efficient than [SliverList] because\n[SliverPrototypeExtentList] does not need to lay out its children to obtain\ntheir extent along the main axis. It's a little more flexible than\n[SliverFixedExtentList] because there's no need to determine the appropriate\nitem extent in pixels.\n\nSee also:\n\n * [SliverFixedExtentList], whose itemExtent is a pixel value.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverPrototypeExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedIcons", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Identifier for the supported material design animated icons.\n\nUse with [AnimatedIcon] class to show specific animated icons.", "detail": "", "kind": 7, "label": "AnimatedIcons" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivityDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A backend for a [ScrollActivity].\n\nUsed by subclasses of [ScrollActivity] to manipulate the scroll view that\nthey are acting upon.\n\nSee also:\n\n * [ScrollActivity], which uses this class as its delegate.\n * [ScrollPositionWithSingleContext], the main implementation of this interface.", "detail": "", "kind": 7, "label": "ScrollActivityDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkRipple", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual reaction on a piece of [Material] to user input.\n\nA circular ink feature whose origin starts at the input touch point and\nwhose radius expands from 60% of the final radius. The splash origin\nanimates to the center of its [referenceBox].\n\nThis object is rarely created directly. Instead of creating an ink ripple,\nconsider using an [InkResponse] or [InkWell] widget, which uses\ngestures (such as tap and long-press) to trigger ink splashes. This class\nis used when the [Theme]'s [ThemeData.splashFactory] is [InkRipple.splashFactory].\n\nSee also:\n\n * [InkSplash], which is an ink splash feature that expands less\n aggressively than the ripple.\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink splash is painted.\n * [InkHighlight], which is an ink feature that emphasizes a part of a\n [Material].", "detail": "", "kind": 7, "label": "InkRipple" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using a rectangle.\n\nBy default, [ClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].\n\n[ClipRect] is commonly used with these widgets, which commonly paint outside\ntheir bounds:\n\n * [CustomPaint]\n * [CustomSingleChildLayout]\n * [CustomMultiChildLayout]\n * [Align] and [Center] (e.g., if [Align.widthFactor] or\n [Align.heightFactor] is less than 1.0).\n * [OverflowBox]\n * [SizedOverflowBox]\n\n\nFor example, by combining a [ClipRect] with an [Align], one can show just\nthe top half of an [Image]:\n\n```dart\nClipRect(\n child: Align(\n alignment: Alignment.topCenter,\n heightFactor: 0.5,\n child: Image.network(userAvatarUrl),\n ),\n)\n```\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutId", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Metadata for identifying children in a [CustomMultiChildLayout].\n\nThe [MultiChildLayoutDelegate.hasChild],\n[MultiChildLayoutDelegate.layoutChild], and\n[MultiChildLayoutDelegate.positionChild] methods use these identifiers.", "detail": "", "kind": 7, "label": "LayoutId" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Placeholder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that draws a box that represents where other widgets will one day\nbe added.\n\nThis widget is useful during development to indicate that the interface is\nnot yet complete.\n\nBy default, the placeholder is sized to fit its container. If the\nplaceholder is in an unbounded space, it will size itself according to the\ngiven [fallbackWidth] and [fallbackHeight].", "detail": "", "kind": 7, "label": "Placeholder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RebuildDirtyWidgetCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for [debugOnRebuildDirtyWidget] implementations.", "detail": "(Element e, bool builtOnce) → void", "kind": 7, "label": "RebuildDirtyWidgetCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConfirmDismissCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [Dismissible] to give the application an opportunity to\nconfirm or veto a dismiss gesture.\n\nUsed by [Dismissible.confirmDismiss].", "detail": "(DismissDirection direction) → Future<bool>", "kind": 7, "label": "ConfirmDismissCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that contains a multiple box children that each fill the viewport.\n\n[SliverFillViewport] places its children in a linear array along the main\naxis. Each child is sized to fill the viewport, both in the main and cross\naxis.\n\nSee also:\n\n * [SliverFixedExtentList], which has a configurable\n [SliverFixedExtentList.itemExtent].\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Step", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material step used in [Stepper]. The step can have a title and subtitle,\nan icon within its circle, some content and a state that governs its\nstyling.\n\nSee also:\n\n * [Stepper]\n * <https://material.io/archive/guidelines/components/steppers.html>", "detail": "", "kind": 7, "label": "Step" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextField", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design text field.\n\nA text field lets the user enter text, either with hardware keyboard or with\nan onscreen keyboard.\n\nThe text field calls the [onChanged] callback whenever the user changes the\ntext in the field. If the user indicates that they are done typing in the\nfield (e.g., by pressing a button on the soft keyboard), the text field\ncalls the [onSubmitted] callback.\n\nTo control the text that is displayed in the text field, use the\n[controller]. For example, to set the initial value of the text field, use\na [controller] that already contains some text. The [controller] can also\ncontrol the selection and composing region (and to observe changes to the\ntext, selection, and composing region).\n\nBy default, a text field has a [decoration] that draws a divider below the\ntext field. You can use the [decoration] property to control the decoration,\nfor example by adding a label or an icon. If you set the [decoration]\nproperty to null, the decoration will be removed entirely, including the\nextra padding introduced by the decoration to save space for the labels.\n\nIf [decoration] is non-null (which is the default), the text field requires\none of its ancestors to be a [Material] widget. When the [TextField] is\ntapped an ink splash that paints on the material is triggered, see\n[ThemeData.splashFactory].\n\nTo integrate the [TextField] into a [Form] with other [FormField] widgets,\nconsider using [TextFormField].\n\nThis example shows how to create a [TextField] that will obscure input. The\n[InputDecoration] surrounds the field in a border using [OutlineInputBorder]\nand adds a label.\n\n```dart\nTextField(\n obscureText: true,\n decoration: InputDecoration(\n border: OutlineInputBorder(),\n labelText: 'Password',\n ),\n)\n```\n\nSee also:\n\n * <https://material.io/design/components/text-fields.html>\n * [TextFormField], which integrates with the [Form] widget.\n * [InputDecorator], which shows the labels and other visual elements that\n surround the actual text editing widget.\n * [EditableText], which is the raw text editing control at the heart of a\n [TextField]. The [EditableText] widget is rarely used directly unless\n you are implementing an entirely different design language, such as\n Cupertino.", "detail": "", "kind": 7, "label": "TextField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChipAttributes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface defining the base attributes for a material design chip.\n\nChips are compact elements that represent an attribute, text, entity, or\naction.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "ChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material widget that's displayed at the bottom of an app for selecting\namong a small number of views, typically between three and five.\n\nThe bottom navigation bar consists of multiple items in the form of\ntext labels, icons, or both, laid out on top of a piece of material. It\nprovides quick navigation between the top-level views of an app. For larger\nscreens, side navigation may be a better fit.\n\nA bottom navigation bar is usually used in conjunction with a [Scaffold],\nwhere it is provided as the [Scaffold.bottomNavigationBar] argument.\n\nThe bottom navigation bar's [type] changes how its [items] are displayed.\nIf not specified, then it's automatically set to\n[BottomNavigationBarType.fixed] when there are less than four items, and\n[BottomNavigationBarType.shifting] otherwise.\n\n * [BottomNavigationBarType.fixed], the default when there are less than\n four [items]. The selected item is rendered with the\n [selectedItemColor] if it's non-null, otherwise the theme's\n [ThemeData.primaryColor] is used. If [backgroundColor] is null, The\n navigation bar's background color defaults to the [Material] background\n color, [ThemeData.canvasColor] (essentially opaque white).\n * [BottomNavigationBarType.shifting], the default when there are four\n or more [items]. If [selectedItemColor] is null, all items are rendered\n in white. The navigation bar's background color is the same as the\n [BottomNavigationBarItem.backgroundColor] of the selected item. In this\n case it's assumed that each item will have a different background color\n and that background color will contrast well with white.\n\nThis example shows a [BottomNavigationBar] as it is used within a [Scaffold]\nwidget. The [BottomNavigationBar] has three [BottomNavigationBarItem]\nwidgets and the [currentIndex] is set to index 0. The selected item is\namber. The `_onItemTapped` function changes the selected item's index\nand displays a corresponding message in the center of the [Scaffold].\n\n![A scaffold with a bottom navigation bar containing three bottom navigation\nbar items. The first one is selected.](https://flutter.github.io/assets-for-api-docs/assets/material/bottom_navigation_bar.png)\n\n```dart\nint _selectedIndex = 0;\nstatic const TextStyle optionStyle = TextStyle(fontSize: 30, fontWeight: FontWeight.bold);\nstatic const List<Widget> _widgetOptions = <Widget>[\n Text(\n 'Index 0: Home',\n style: optionStyle,\n ),\n Text(\n 'Index 1: Business',\n style: optionStyle,\n ),\n Text(\n 'Index 2: School',\n style: optionStyle,\n ),\n];\n\nvoid _onItemTapped(int index) {\n setState(() {\n _selectedIndex = index;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('BottomNavigationBar Sample'),\n ),\n body: Center(\n child: _widgetOptions.elementAt(_selectedIndex),\n ),\n bottomNavigationBar: BottomNavigationBar(\n items: const <BottomNavigationBarItem>[\n BottomNavigationBarItem(\n icon: Icon(Icons.home),\n title: Text('Home'),\n ),\n BottomNavigationBarItem(\n icon: Icon(Icons.business),\n title: Text('Business'),\n ),\n BottomNavigationBarItem(\n icon: Icon(Icons.school),\n title: Text('School'),\n ),\n ],\n currentIndex: _selectedIndex,\n selectedItemColor: Colors.amber[800],\n onTap: _onItemTapped,\n ),\n );\n}\n```\n\nSee also:\n\n * [BottomNavigationBarItem]\n * [Scaffold]\n * <https://material.io/design/components/bottom-navigation.html>", "detail": "", "kind": 7, "label": "BottomNavigationBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay show two time series. The first shows how much time was required\non this thread to produce each frame. The second shows how much time was\nrequired on the GPU thread to produce each frame. Ideally, both these values\nwould be less than the total frame budget for the hardware on which the app\nis running. For example, if the hardware has a screen that updates at 60 Hz,\neach thread should ideally spend less than 16ms producing each frame. This\nideal condition is indicated by a green vertical line for each thread.\nOtherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "PerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildListDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for slivers using an explicit list.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[SliverChildBuilderDelegate] or by subclassing [SliverChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.\n\nThe widgets in the given [children] list are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\nSee [SliverChildBuilderDelegate] for sample code using\n`semanticIndexOffset` and `semanticIndexCallback`.\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.", "detail": "", "kind": 7, "label": "SliverChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "YearPicker", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list of years to allow picking a year.\n\nThe year picker widget is rarely used directly. Instead, consider using\n[showDatePicker], which creates a date picker dialog.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.\n * [showTimePicker], which shows a dialog that contains a material design\n time picker.", "detail": "", "kind": 7, "label": "YearPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkSplash", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual reaction on a piece of [Material] to user input.\n\nA circular ink feature whose origin starts at the input touch point\nand whose radius expands from zero.\n\nThis object is rarely created directly. Instead of creating an ink splash\ndirectly, consider using an [InkResponse] or [InkWell] widget, which uses\ngestures (such as tap and long-press) to trigger ink splashes.\n\nSee also:\n\n * [InkRipple], which is an ink splash feature that expands more\n aggressively than this class does.\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink splash is painted.\n * [InkHighlight], which is an ink feature that emphasizes a part of a\n [Material].", "detail": "", "kind": 7, "label": "InkSplash" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrolling view inside of which can be nested other scrolling views, with\ntheir scroll positions being intrinsically linked.\n\nThe most common use case for this widget is a scrollable view with a\nflexible [SliverAppBar] containing a [TabBar] in the header (build by\n[headerSliverBuilder], and with a [TabBarView] in the [body], such that the\nscrollable view's contents vary based on which tab is visible.\n\n## Motivation\n\nIn a normal [ScrollView], there is one set of slivers (the components of the\nscrolling view). If one of those slivers hosted a [TabBarView] which scrolls\nin the opposite direction (e.g. allowing the user to swipe horizontally\nbetween the pages represented by the tabs, while the list scrolls\nvertically), then any list inside that [TabBarView] would not interact with\nthe outer [ScrollView]. For example, flinging the inner list to scroll to\nthe top would not cause a collapsed [SliverAppBar] in the outer [ScrollView]\nto expand.\n\n[NestedScrollView] solves this problem by providing custom\n[ScrollController]s for the outer [ScrollView] and the inner [ScrollView]s\n(those inside the [TabBarView], hooking them together so that they appear,\nto the user, as one coherent scroll view.\n\n\nThis example shows a [NestedScrollView] whose header is the combination of a\n[TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a\n[SliverOverlapAbsorber]/[SliverOverlapInjector] pair to make the inner lists\nalign correctly, and it uses [SafeArea] to avoid any horizontal disturbances\n(e.g. the \"notch\" on iOS when the phone is horizontal). In addition,\n[PageStorageKey]s are used to remember the scroll position of each tab's\nlist.\n\nIn the example below, `_tabs` is a list of strings, one for each tab, giving\nthe tab labels. In a real application, it would be replaced by the actual\ndata model being represented.\n\n```dart\nDefaultTabController(\n length: _tabs.length, // This is the number of tabs.\n child: NestedScrollView(\n headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {\n // These are the slivers that show up in the \"outer\" scroll view.\n return <Widget>[\n SliverOverlapAbsorber(\n // This widget takes the overlapping behavior of the SliverAppBar,\n // and redirects it to the SliverOverlapInjector below. If it is\n // missing, then it is possible for the nested \"inner\" scroll view\n // below to end up under the SliverAppBar even when the inner\n // scroll view thinks it has not been scrolled.\n // This is not necessary if the \"headerSliverBuilder\" only builds\n // widgets that do not overlap the next sliver.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n child: SliverAppBar(\n title: const Text('Books'), // This is the title in the app bar.\n pinned: true,\n expandedHeight: 150.0,\n // The \"forceElevated\" property causes the SliverAppBar to show\n // a shadow. The \"innerBoxIsScrolled\" parameter is true when the\n // inner scroll view is scrolled beyond its \"zero\" point, i.e.\n // when it appears to be scrolled below the SliverAppBar.\n // Without this, there are cases where the shadow would appear\n // or not appear inappropriately, because the SliverAppBar is\n // not actually aware of the precise position of the inner\n // scroll views.\n forceElevated: innerBoxIsScrolled,\n bottom: TabBar(\n // These are the widgets to put in each tab in the tab bar.\n tabs: _tabs.map((String name) => Tab(text: name)).toList(),\n ),\n ),\n ),\n ];\n },\n body: TabBarView(\n // These are the contents of the tab views, below the tabs.\n children: _tabs.map((String name) {\n return SafeArea(\n top: false,\n bottom: false,\n child: Builder(\n // This Builder is needed to provide a BuildContext that is \"inside\"\n // the NestedScrollView, so that sliverOverlapAbsorberHandleFor() can\n // find the NestedScrollView.\n builder: (BuildContext context) {\n return CustomScrollView(\n // The \"controller\" and \"primary\" members should be left\n // unset, so that the NestedScrollView can control this\n // inner scroll view.\n // If the \"controller\" property is set, then this scroll\n // view will not be associated with the NestedScrollView.\n // The PageStorageKey should be unique to this ScrollView;\n // it allows the list to remember its scroll position when\n // the tab view is not on the screen.\n key: PageStorageKey<String>(name),\n slivers: <Widget>[\n SliverOverlapInjector(\n // This is the flip side of the SliverOverlapAbsorber above.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n ),\n SliverPadding(\n padding: const EdgeInsets.all(8.0),\n // In this example, the inner scroll view has\n // fixed-height list items, hence the use of\n // SliverFixedExtentList. However, one could use any\n // sliver widget here, e.g. SliverList or SliverGrid.\n sliver: SliverFixedExtentList(\n // The items in this example are fixed to 48 pixels\n // high. This matches the Material Design spec for\n // ListTile widgets.\n itemExtent: 48.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n // This builder is called for each child.\n // In this example, we just number each list item.\n return ListTile(\n title: Text('Item $index'),\n );\n },\n // The childCount of the SliverChildBuilderDelegate\n // specifies how many children this inner list\n // has. In this example, each tab has a list of\n // exactly 30 items, but this is arbitrary.\n childCount: 30,\n ),\n ),\n ),\n ],\n );\n },\n ),\n );\n }).toList(),\n ),\n ),\n)\n```", "detail": "", "kind": 7, "label": "NestedScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SearchDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Delegate for [showSearch] to define the content of the search page.\n\nThe search page always shows an [AppBar] at the top where users can\nenter their search queries. The buttons shown before and after the search\nquery text field can be customized via [SearchDelegate.leading] and\n[SearchDelegate.actions].\n\nThe body below the [AppBar] can either show suggested queries (returned by\n[SearchDelegate.buildSuggestions]) or - once the user submits a search - the\nresults of the search as returned by [SearchDelegate.buildResults].\n\n[SearchDelegate.query] always contains the current query entered by the user\nand should be used to build the suggestions and results.\n\nThe results can be brought on screen by calling [SearchDelegate.showResults]\nand you can go back to showing the suggestions by calling\n[SearchDelegate.showSuggestions].\n\nOnce the user has selected a search result, [SearchDelegate.close] should be\ncalled to remove the search page from the top of the navigation stack and\nto notify the caller of [showSearch] about the selected search result.\n\nA given [SearchDelegate] can only be associated with one active [showSearch]\ncall. Call [SearchDelegate.close] before re-using the same delegate instance\nfor another [showSearch] call.", "detail": "", "kind": 7, "label": "SearchDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list that works page by page.\n\nEach child of a page view is forced to be the same size as the viewport.\n\nYou can use a [PageController] to control which page is visible in the view.\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nThe [PageController] can also be used to control the\n[PageController.initialPage], which determines which page is shown when the\n[PageView] is first constructed, and the [PageController.viewportFraction],\nwhich determines the size of the pages as a fraction of the viewport size.\n\n\nSee also:\n\n * [PageController], which controls which page is visible in the view.\n * [SingleChildScrollView], when you need to make a single child scrollable.\n * [ListView], for a scrollable list of boxes.\n * [GridView], for a scrollable grid of boxes.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "PageView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBoxTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of a [DecoratedBox] that animates the different properties\nof its [Decoration].\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [DecoratedBox], which also draws a [Decoration] but is not animated.\n * [AnimatedContainer], a more full-featured container that also animates on\n decoration using an internal animation.", "detail": "", "kind": 7, "label": "DecoratedBoxTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuDivider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A horizontal divider in a material design popup menu.\n\nThis widget adapts the [Divider] for use in popup menus.\n\nSee also:\n\n * [PopupMenuItem], for the kinds of items that this widget divides.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "PopupMenuDivider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [Decoration]s.\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[Decoration.lerp].\n\nFor [ShapeDecoration]s which know how to [ShapeDecoration.lerpTo] or\n[ShapeDecoration.lerpFrom] each other, this will produce a smooth\ninterpolation between decorations.\n\nSee also:\n\n * [Tween] for a discussion on how to use interpolation objects.\n * [ShapeDecoration], [RoundedRectangleBorder], [CircleBorder], and\n [StadiumBorder] for examples of shape borders that can be smoothly\n interpolated.\n * [BoxBorder] for a border that can only be smoothly interpolated between other\n [BoxBorder]s.", "detail": "", "kind": 7, "label": "DecorationTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [RenderObjectWidget] as its configuration.\n\n[RenderObjectElement] objects have an associated [RenderObject] widget in\nthe render tree, which handles concrete operations like laying out,\npainting, and hit testing.\n\nContrast with [ComponentElement].\n\nFor details on the lifecycle of an element, see the discussion at [Element].\n\n## Writing a RenderObjectElement subclass\n\nThere are three common child models used by most [RenderObject]s:\n\n* Leaf render objects, with no children: The [LeafRenderObjectElement] class\n handles this case.\n\n* A single child: The [SingleChildRenderObjectElement] class handles this\n case.\n\n* A linked list of children: The [MultiChildRenderObjectElement] class\n handles this case.\n\nSometimes, however, a render object's child model is more complicated. Maybe\nit has a two-dimensional array of children. Maybe it constructs children on\ndemand. Maybe it features multiple lists. In such situations, the\ncorresponding [Element] for the [Widget] that configures that [RenderObject]\nwill be a new subclass of [RenderObjectElement].\n\nSuch a subclass is responsible for managing children, specifically the\n[Element] children of this object, and the [RenderObject] children of its\ncorresponding [RenderObject].\n\n### Specializing the getters\n\n[RenderObjectElement] objects spend much of their time acting as\nintermediaries between their [widget] and their [renderObject]. To make this\nmore tractable, most [RenderObjectElement] subclasses override these getters\nso that they return the specific type that the element expects, e.g.:\n\n```dart\nclass FooElement extends RenderObjectElement {\n\n @override\n Foo get widget => super.widget;\n\n @override\n RenderFoo get renderObject => super.renderObject;\n\n // ...\n}\n```\n\n### Slots\n\nEach child [Element] corresponds to a [RenderObject] which should be\nattached to this element's render object as a child.\n\nHowever, the immediate children of the element may not be the ones that\neventually produce the actual [RenderObject] that they correspond to. For\nexample a [StatelessElement] (the element of a [StatelessWidget]) simply\ncorresponds to whatever [RenderObject] its child (the element returned by\nits [StatelessWidget.build] method) corresponds to.\n\nEach child is therefore assigned a _slot_ token. This is an identifier whose\nmeaning is private to this [RenderObjectElement] node. When the descendant\nthat finally produces the [RenderObject] is ready to attach it to this\nnode's render object, it passes that slot token back to this node, and that\nallows this node to cheaply identify where to put the child render object\nrelative to the others in the parent render object.\n\n### Updating children\n\nEarly in the lifecycle of an element, the framework calls the [mount]\nmethod. This method should call [updateChild] for each child, passing in\nthe widget for that child, and the slot for that child, thus obtaining a\nlist of child [Element]s.\n\nSubsequently, the framework will call the [update] method. In this method,\nthe [RenderObjectElement] should call [updateChild] for each child, passing\nin the [Element] that was obtained during [mount] or the last time [update]\nwas run (whichever happened most recently), the new [Widget], and the slot.\nThis provides the object with a new list of [Element] objects.\n\nWhere possible, the [update] method should attempt to map the elements from\nthe last pass to the widgets in the new pass. For example, if one of the\nelements from the last pass was configured with a particular [Key], and one\nof the widgets in this new pass has that same key, they should be paired up,\nand the old element should be updated with the widget (and the slot\ncorresponding to the new widget's new position, also). The [updateChildren]\nmethod may be useful in this regard.\n\n[updateChild] should be called for children in their logical order. The\norder can matter; for example, if two of the children use [PageStorage]'s\n`writeState` feature in their build method (and neither has a [Widget.key]),\nthen the state written by the first will be overwritten by the second.\n\n#### Dynamically determining the children during the build phase\n\nThe child widgets need not necessarily come from this element's widget\nverbatim. They could be generated dynamically from a callback, or generated\nin other more creative ways.\n\n#### Dynamically determining the children during layout\n\nIf the widgets are to be generated at layout time, then generating them when\nthe [update] method won't work: layout of this element's render object\nhasn't started yet at that point. Instead, the [update] method can mark the\nrender object as needing layout (see [RenderObject.markNeedsLayout]), and\nthen the render object's [RenderObject.performLayout] method can call back\nto the element to have it generate the widgets and call [updateChild]\naccordingly.\n\nFor a render object to call an element during layout, it must use\n[RenderObject.invokeLayoutCallback]. For an element to call [updateChild]\noutside of its [update] method, it must use [BuildOwner.buildScope].\n\nThe framework provides many more checks in normal operation than it does\nwhen doing a build during layout. For this reason, creating widgets with\nlayout-time build semantics should be done with great care.\n\n#### Handling errors when building\n\nIf an element calls a builder function to obtain widgets for its children,\nit may find that the build throws an exception. Such exceptions should be\ncaught and reported using [FlutterError.reportError]. If a child is needed\nbut a builder has failed in this way, an instance of [ErrorWidget] can be\nused instead.\n\n### Detaching children\n\nIt is possible, when using [GlobalKey]s, for a child to be proactively\nremoved by another element before this element has been updated.\n(Specifically, this happens when the subtree rooted at a widget with a\nparticular [GlobalKey] is being moved from this element to an element\nprocessed earlier in the build phase.) When this happens, this element's\n[forgetChild] method will be called with a reference to the affected child\nelement.\n\nThe [forgetChild] method of a [RenderObjectElement] subclass must remove the\nchild element from its child list, so that when it next [update]s its\nchildren, the removed child is not considered.\n\nFor performance reasons, if there are many elements, it may be quicker to\ntrack which elements were forgotten by storing them in a [Set], rather than\nproactively mutating the local record of the child list and the identities\nof all the slots. For example, see the implementation of\n[MultiChildRenderObjectElement].\n\n### Maintaining the render object tree\n\nOnce a descendant produces a render object, it will call\n[insertChildRenderObject]. If the descendant's slot changes identity, it\nwill call [moveChildRenderObject]. If a descendant goes away, it will call\n[removeChildRenderObject].\n\nThese three methods should update the render tree accordingly, attaching,\nmoving, and detaching the given child render object from this element's own\nrender object respectively.\n\n### Walking the children\n\nIf a [RenderObjectElement] object has any children [Element]s, it must\nexpose them in its implementation of the [visitChildren] method. This method\nis used by many of the framework's internal mechanisms, and so should be\nfast. It is also used by the test framework and [debugDumpApp].", "detail": "", "kind": 7, "label": "RenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldFeatureController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for controlling a feature of a [Scaffold].\n\nCommonly obtained from [ScaffoldState.showSnackBar] or [ScaffoldState.showBottomSheet].", "detail": "", "kind": 7, "label": "ScaffoldFeatureController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Positioned] which takes a specific\n[Animation<RelativeRect>] to transition the child's position from a start\nposition to an end position over the lifetime of the animation.\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [PositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "PositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlockSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that drops the semantics of all widget that were painted before it\nin the same semantic container.\n\nThis is useful to hide widgets from accessibility tools that are painted\nbehind a certain widget, e.g. an alert should usually disallow interaction\nwith any widget located \"behind\" the alert (even when they are still\npartially visible). Similarly, an open [Drawer] blocks interactions with\nany widget outside the drawer.\n\nSee also:\n\n * [ExcludeSemantics] which drops all semantics of its descendants.", "detail": "", "kind": 7, "label": "BlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[SliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [SliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children.\n\n\nIf the children have a fixed extent in the main axis, consider using\n[SliverFixedExtentList] rather than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis and is therefore more efficient.\n\n\nSee also:\n\n * [SliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDetector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that detects gestures.\n\nAttempts to recognize gestures that correspond to its non-null callbacks.\n\nIf this widget has a child, it defers to that child for its sizing behavior.\nIf it does not have a child, it grows to fit the parent instead.\n\nBy default a GestureDetector with an invisible child ignores touches;\nthis behavior can be controlled with [behavior].\n\nGestureDetector also listens for accessibility events and maps\nthem to the callbacks. To ignore accessibility events, set\n[excludeFromSemantics] to true.\n\nSee <http://flutter.dev/gestures/> for additional information.\n\nMaterial design applications typically react to touches with ink splash\neffects. The [InkWell] class implements this effect and can be used in place\nof a [GestureDetector] for handling taps.\n\n\nThis example makes a rectangle react to being tapped by setting the\n`_lights` field:\n\n```dart\nGestureDetector(\n onTap: () {\n setState(() { _lights = true; });\n },\n child: Container(\n color: Colors.yellow,\n child: Text('TURN LIGHTS ON'),\n ),\n)\n```\n\n## Debugging\n\nTo see how large the hit test box of a [GestureDetector] is for debugging\npurposes, set [debugPaintPointersEnabled] to true.", "detail": "", "kind": 7, "label": "GestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalizationsDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A factory for a set of localized resources of type `T`, to be loaded by a\n[Localizations] widget.\n\nTypical applications have one [Localizations] widget which is created by the\n[WidgetsApp] and configured with the app's `localizationsDelegates`\nparameter (a list of delegates). The delegate's [type] is used to identify\nthe object created by an individual delegate's [load] method.", "detail": "", "kind": 7, "label": "LocalizationsDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature for a function that's called when the user has dragged a\n[RefreshIndicator] far enough to demonstrate that they want the app to\nrefresh. The returned [Future] must complete when the refresh operation is\nfinished.\n\nUsed by [RefreshIndicator.onRefresh].", "detail": "() → Future<void>", "kind": 7, "label": "RefreshCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProviderStateMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides [Ticker] objects that are configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create an [AnimationController] in a class that uses this mixin, pass\n`vsync: this` to the animation controller constructor whenever you\ncreate a new animation controller.\n\nIf you only have a single [Ticker] (for example only a single\n[AnimationController]) for the lifetime of your [State], then using a\n[SingleTickerProviderStateMixin] is more efficient. This is the common case.", "detail": "", "kind": 7, "label": "TickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for widgets that hook [ParentData] information to children of\n[RenderObjectWidget]s.\n\nThis can be used to provide per-child configuration for\n[RenderObjectWidget]s with more than one child. For example, [Stack] uses\nthe [Positioned] parent data widget to position each child.\n\nA [ParentDataWidget] is specific to a particular kind of [RenderObject], and\nthus also to a particular [RenderObjectWidget] class. That class is `T`, the\n[ParentDataWidget] type argument.\n\n\nThis example shows how you would build a [ParentDataWidget] to configure a\n`FrogJar` widget's children by specifying a [Size] for each one.\n\n```dart\nclass FrogSize extends ParentDataWidget<FrogJar> {\n FrogSize({\n Key key,\n @required this.size,\n @required Widget child,\n }) : assert(child != null),\n assert(size != null),\n super(key: key, child: child);\n\n final Size size;\n\n @override\n void applyParentData(RenderObject renderObject) {\n final FrogJarParentData parentData = renderObject.parentData;\n if (parentData.size != size) {\n parentData.size = size;\n final RenderFrogJar targetParent = renderObject.parent;\n targetParent.markNeedsLayout();\n }\n }\n}\n```\n\nSee also:\n\n * [RenderObject], the superclass for layout algorithms.\n * [RenderObject.parentData], the slot that this class configures.\n * [ParentData], the superclass of the data that will be placed in\n [RenderObject.parentData] slots.\n * [RenderObjectWidget], the class for widgets that wrap [RenderObject]s.\n The `T` type parameter for [ParentDataWidget] is a [RenderObjectWidget].\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.", "detail": "", "kind": 7, "label": "ParentDataWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetToRenderBoxAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An adapter for placing a specific [RenderBox] in the widget tree.\n\nA given render object can be placed at most once in the widget tree. This\nwidget enforces that restriction by keying itself using a [GlobalObjectKey]\nfor the given render object.", "detail": "", "kind": 7, "label": "WidgetToRenderBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ValueKey] that defines where [PageStorage] values will be saved.\n\n[Scrollable]s ([ScrollPosition]s really) use [PageStorage] to save their\nscroll offset. Each time a scroll completes, the scrollable's page\nstorage is updated.\n\n[PageStorage] is used to save and restore values that can outlive the widget.\nThe values are stored in a per-route [Map] whose keys are defined by the\n[PageStorageKey]s for the widget and its ancestors. To make it possible\nfor a saved value to be found when a widget is recreated, the key's values\nmust not be objects whose identity will change each time the widget is created.\n\nFor example, to ensure that the scroll offsets for the scrollable within\neach `MyScrollableTabView` below are restored when the [TabBarView]\nis recreated, we've specified [PageStorageKey]s whose values are the\ntabs' string labels.\n\n```dart\nTabBarView(\n children: myTabs.map((Tab tab) {\n MyScrollableTabView(\n key: PageStorageKey<String>(tab.text), // like 'Tab 1'\n tab: tab,\n ),\n }),\n)\n```", "detail": "", "kind": 7, "label": "PageStorageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the color and typography values for a material design theme.\n\nUse this class to configure a [Theme] widget.\n\nTo obtain the current theme, use [Theme.of].", "detail": "", "kind": 7, "label": "ThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SimpleDialogOption", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An option used in a [SimpleDialog].\n\nA simple dialog offers the user a choice between several options. This\nwidget is commonly used to represent each of the options. If the user\nselects this option, the widget will call the [onPressed] callback, which\ntypically uses [Navigator.pop] to close the dialog.\n\nThe padding on a [SimpleDialogOption] is configured to combine with the\ndefault [SimpleDialog.contentPadding] so that each option ends up 8 pixels\nfrom the other vertically, with 20 pixels of spacing between the dialog's\ntitle and the first option, and 24 pixels of spacing between the last option\nand the bottom of the dialog.\n\n\n```dart\nSimpleDialogOption(\n onPressed: () { Navigator.pop(context, Department.treasury); },\n child: const Text('Treasury department'),\n)\n```\n\nSee also:\n\n * [SimpleDialog], for a dialog in which to use this widget.\n * [showDialog], which actually displays the dialog and returns its result.\n * [FlatButton], which are commonly used as actions in other kinds of\n dialogs, such as [AlertDialog]s.\n * <https://material.io/design/components/dialogs.html#simple-dialog>", "detail": "", "kind": 7, "label": "SimpleDialogOption" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelHeaderBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that's called when the header of the\n[ExpansionPanel] needs to rebuild.", "detail": "(BuildContext context, bool isExpanded) → Widget", "kind": 7, "label": "ExpansionPanelHeaderBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DatePickerMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Initial display mode of the date picker dialog.\n\nDate picker UI mode for either showing a list of available years or a\nmonthly calendar initially in the dialog shown by calling [showDatePicker].\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.", "detail": "", "kind": 13, "label": "DatePickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [StatelessWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatelessElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeableMaterialItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base type for [MaterialSlice] and [MaterialGap].\n\nAll [MergeableMaterialItem] objects need a [LocalKey].", "detail": "", "kind": 7, "label": "MergeableMaterialItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenConstructor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a [Tween] factory.\n\nThis is the type of one of the arguments of [TweenVisitor], the signature\nused by [AnimatedWidgetBaseState.forEachTween].", "detail": "(T targetValue) → Tween<T>", "kind": 7, "label": "TweenConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigationToolbar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[NavigationToolbar] is a layout helper to position 3 widgets or groups of\nwidgets along a horizontal axis that's sensible for an application's\nnavigation bar such as in Material Design and in iOS.\n\nThe [leading] and [trailing] widgets occupy the edges of the widget with\nreasonable size constraints while the [middle] widget occupies the remaining\nspace in either a center aligned or start aligned fashion.\n\nEither directly use the themed app bars such as the Material [AppBar] or\nthe iOS [CupertinoNavigationBar] or wrap this widget with more theming\nspecifications for your own custom app bar.", "detail": "", "kind": 7, "label": "NavigationToolbar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines which portion of the content is visible in a scroll view.\n\nThe [pixels] value determines the scroll offset that the scroll view uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThe [ScrollPosition] applies [physics] to scrolling, and stores the\n[minScrollExtent] and [maxScrollExtent].\n\nScrolling is controlled by the current [activity], which is set by\n[beginActivity]. [ScrollPosition] itself does not start any activities.\nInstead, concrete subclasses, such as [ScrollPositionWithSingleContext],\ntypically start activities in response to user input or instructions from a\n[ScrollController].\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\n## Subclassing ScrollPosition\n\nOver time, a [Scrollable] might have many different [ScrollPosition]\nobjects. For example, if [Scrollable.physics] changes type, [Scrollable]\ncreates a new [ScrollPosition] with the new physics. To transfer state from\nthe old instance to the new instance, subclasses implement [absorb]. See\n[absorb] for more details.\n\nSubclasses also need to call [didUpdateScrollDirection] whenever\n[userScrollDirection] changes values.\n\nSee also:\n\n * [Scrollable], which uses a [ScrollPosition] to determine which portion of\n its content to display.\n * [ScrollController], which can be used with [ListView], [GridView] and\n other scrollable widgets to control a [ScrollPosition].\n * [ScrollPositionWithSingleContext], which is the most commonly used\n concrete subclass of [ScrollPosition].\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeMatcher", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This class is a work-around for the \"is\" operator not accepting a variable value as its right operand", "detail": "", "kind": 7, "label": "TypeMatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that rebuilds when the given [Listenable] changes value.\n\n[AnimatedWidget] is most commonly used with [Animation] objects, which are\n[Listenable], but it can be used with any [Listenable], including\n[ChangeNotifier] and [ValueNotifier].\n\n[AnimatedWidget] is most useful for widgets that are otherwise stateless. To\nuse [AnimatedWidget], simply subclass it and implement the build function.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedWidget].\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with TickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return SpinningContainer(controller: _controller);\n }\n}\n\nclass SpinningContainer extends AnimatedWidget {\n const SpinningContainer({Key key, AnimationController controller})\n : super(key: key, listenable: controller);\n\n Animation<double> get _progress => listenable;\n\n @override\n Widget build(BuildContext context) {\n return Transform.rotate(\n angle: _progress.value * 2.0 * math.pi,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n );\n }\n}\n```\n\nFor more complex case involving additional state, consider using\n[AnimatedBuilder].\n\nSee also:\n\n * [AnimatedBuilder], which is useful for more complex use cases.\n * [Animation], which is a [Listenable] object that can be used for\n [listenable].\n * [ChangeNotifier], which is another [Listenable] object that can be used\n for [listenable].", "detail": "", "kind": 7, "label": "AnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformTarget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that can be targeted by a [CompositedTransformFollower].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\nupdates the [link] object so that any [CompositedTransformFollower] widgets\nthat are subsequently composited in the same frame and were given the same\n[LayerLink] can position themselves at the same screen location.\n\nA single [CompositedTransformTarget] can be followed by multiple\n[CompositedTransformFollower] widgets.\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nany linked [CompositedTransformFollower]s.\n\nSee also:\n\n * [CompositedTransformFollower], the widget that can target this one.\n * [LeaderLayer], the layer that implements this widget's logic.", "detail": "", "kind": 7, "label": "CompositedTransformTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for being notified when a form field changes value.\n\nUsed by [FormField.onSaved].", "detail": "(T newValue) → void", "kind": 7, "label": "FormFieldSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataCell", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The data for a cell of a [DataTable].\n\nOne list of [DataCell] objects must be provided for each [DataRow]\nin the [DataTable], in the [new DataRow] constructor's `cells`\nargument.", "detail": "", "kind": 7, "label": "DataCell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides interactive behavior for [Drawer] widgets.\n\nRarely used directly. Drawer controllers are typically created automatically\nby [Scaffold] widgets.\n\nThe draw controller provides the ability to open and close a drawer, either\nvia an animation or via user interaction. When closed, the drawer collapses\nto a translucent gesture detector that can be used to listen for edge\nswipes.\n\nSee also:\n\n * [Drawer], a container with the default width of a drawer.\n * [Scaffold.drawer], the [Scaffold] slot for showing a drawer.", "detail": "", "kind": 7, "label": "DrawerController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.pageRouteBuilder].\n\nCreates a [PageRoute] using the given [RouteSettings] and [WidgetBuilder].", "detail": "(RouteSettings settings, WidgetBuilder builder) → PageRoute<T>", "kind": 7, "label": "PageRouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderComponentShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for slider thumb, thumb overlay, and value indicator shapes.\n\nCreate a subclass of this if you would like a custom shape.\n\nAll shapes are painted to the same canvas and ordering is important.\nThe overlay is painted first, then the value indicator, then the thumb.\n\nThe thumb painting can be skipped by specifying [noThumb] for\n[SliderThemeData.thumbShape].\n\nThe overlay painting can be skipped by specifying [noOverlay] for\n[SliderThemeData.overlayShape].\n\nSee also:\n\n * [RoundSliderThumbShape], which is the the default thumb shape.\n * [RoundSliderOverlayShape], which is the the default overlay shape.\n * [PaddleSliderValueIndicatorShape], which is the the default value\n indicator shape.", "detail": "", "kind": 7, "label": "SliderComponentShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverToBoxAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that contains a single box widget.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverToBoxAdapter]\nis a basic sliver that creates a bridge back to one of the usual box-based\nwidgets.\n\nRather than using multiple [SliverToBoxAdapter] widgets to display multiple\nbox widgets in a [CustomScrollView], consider using [SliverList],\n[SliverFixedExtentList], [SliverPrototypeExtentList], or [SliverGrid],\nwhich are more efficient because they instantiate only those children that\nare actually visible through the scroll view's viewport.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.\n * [SliverList], which displays multiple box widgets in a linear array.\n * [SliverFixedExtentList], which displays multiple box widgets with the\n same main-axis extent in a linear array.\n * [SliverPrototypeExtentList], which displays multiple box widgets with the\n same main-axis extent as a prototype item, in a linear array.\n * [SliverGrid], which displays multiple box widgets in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GenerateAppTitle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.onGenerateTitle].\n\nUsed to generate a value for the app's [Title.title], which the device uses\nto identify the app for the user. The `context` includes the [WidgetsApp]'s\n[Localizations] widget so that this method can be used to produce a\nlocalized title.\n\nThis function must not return null.", "detail": "(BuildContext context) → String", "kind": 7, "label": "GenerateAppTitle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An end-aligned row of buttons.\n\nPlaces the buttons horizontally according to the padding in the current\n[ButtonTheme]. The children are laid out in a [Row] with\n[MainAxisAlignment.end]. When the [Directionality] is [TextDirection.ltr],\nthe button bar's children are right justified and the last child becomes\nthe rightmost child. When the [Directionality] [TextDirection.rtl] the\nchildren are left justified and the last child becomes the leftmost child.\n\nUsed by [Dialog] to arrange the actions at the bottom of the dialog.\n\nSee also:\n\n * [RaisedButton], a kind of button.\n * [FlatButton], another kind of button.\n * [Card], at the bottom of which it is common to place a [ButtonBar].\n * [Dialog], which uses a [ButtonBar] for its actions.\n * [ButtonTheme], which configures the [ButtonBar].", "detail": "", "kind": 7, "label": "ButtonBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChipThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the color, shape, and text styles for a material design chip theme.\n\nUse this class to configure a [ChipTheme] widget, or to set the\n[ThemeData.chipTheme] for a [Theme] widget.\n\nTo obtain the current ambient chip theme, use [ChipTheme.of].\n\nThe parts of a chip are:\n\n * The \"avatar\", which is a widget that appears at the beginning of the\n chip. This is typically a [CircleAvatar] widget.\n * The \"label\", which is the widget displayed in the center of the chip.\n Typically this is a [Text] widget.\n * The \"delete icon\", which is a widget that appears at the end of the chip.\n * The chip is disabled when it is not accepting user input. Only some chips\n have a disabled state: [InputChip], [ChoiceChip], and [FilterChip].\n\nThe simplest way to create a ChipThemeData is to use [copyWith] on the one\nyou get from [ChipTheme.of], or create an entirely new one with\n[ChipThemeData..fromDefaults].\n\n\n```dart\nclass CarColor extends StatefulWidget {\n @override\n State createState() => _CarColorState();\n}\n\nclass _CarColorState extends State<CarColor> {\n Color _color = Colors.red;\n\n @override\n Widget build(BuildContext context) {\n return ChipTheme(\n data: ChipTheme.of(context).copyWith(backgroundColor: Colors.lightBlue),\n child: ChoiceChip(\n label: Text('Light Blue'),\n onSelected: (bool value) {\n setState(() {\n _color = value ? Colors.lightBlue : Colors.red;\n });\n },\n selected: _color == Colors.lightBlue,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of entities.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * [ChipTheme] widget, which can override the chip theme of its\n children.\n * [Theme] widget, which performs a similar function to [ChipTheme],\n but for overall themes.\n * [ThemeData], which has a default [ChipThemeData].", "detail": "", "kind": 7, "label": "ChipThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextCapitalization", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures how the platform keyboard will select an uppercase or\nlowercase keyboard.\n\nOnly supports text keyboards, other keyboard types will ignore this\nconfiguration. Capitalization is locale-aware.", "detail": "", "kind": 13, "label": "TextCapitalization" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlayChanged", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for reporting changes to the selection component of a\n[TextEditingValue] for the purposes of a [TextSelectionOverlay]. The\n[caretRect] argument gives the location of the caret in the coordinate space\nof the [RenderBox] given by the [TextSelectionOverlay.renderObject].\n\nUsed by [TextSelectionOverlay.onSelectionOverlayChanged].", "detail": "(TextEditingValue value, Rect caretRect) → void", "kind": 7, "label": "TextSelectionOverlayChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of the [LayoutBuilder] builder function.", "detail": "(BuildContext context, BoxConstraints constraints) → Widget", "kind": 7, "label": "LayoutWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImagePhase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The phases a [FadeInImage] goes through.", "detail": "", "kind": 13, "label": "FadeInImagePhase" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SlideTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the position of a widget relative to its normal position.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nBy default, the offsets are applied in the coordinate system of the canvas\n(so positive x offsets move the child towards the right). If a\n[textDirection] is provided, then the offsets are applied in the reading\ndirection, so in right-to-left text, positive x offsets move towards the\nleft, and in left-to-right text, positive x offsets move towards the right.\n\nHere's an illustration of the [SlideTransition] widget, with it's [position]\nanimated by a [CurvedAnimation] set to [Curves.elasticIn]:\n\nSee also:\n\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SlideTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyleTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [TextStyle]s.\n\nThis class specializes the interpolation of [Tween<TextStyle>] to use\n[TextStyle.lerp].\n\nThis will not work well if the styles don't set the same fields.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "TextStyleTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollbar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design scrollbar.\n\nA scrollbar indicates which portion of a [Scrollable] widget is actually\nvisible.\n\nDynamically changes to an iOS style scrollbar that looks like\n[CupertinoScrollbar] on the iOS platform.\n\nTo add a scrollbar to a [ScrollView], simply wrap the scroll view widget in\na [Scrollbar] widget.\n\nSee also:\n\n * [ListView], which display a linear, scrollable list of children.\n * [GridView], which display a 2 dimensional, scrollable array of children.", "detail": "", "kind": 7, "label": "Scrollbar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTabController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [TabController] for descendant widgets that don't specify one\nexplicitly.\n\n[DefaultTabController] is an inherited widget that is used to share a\n[TabController] with a [TabBar] or a [TabBarView]. It's used when sharing an\nexplicitly created [TabController] isn't convenient because the tab bar\nwidgets are created by a stateless parent widget or by different parent\nwidgets.\n\n```dart\nclass MyDemo extends StatelessWidget {\n final List<Tab> myTabs = <Tab>[\n Tab(text: 'LEFT'),\n Tab(text: 'RIGHT'),\n ];\n\n @override\n Widget build(BuildContext context) {\n return DefaultTabController(\n length: myTabs.length,\n child: Scaffold(\n appBar: AppBar(\n bottom: TabBar(\n tabs: myTabs,\n ),\n ),\n body: TabBarView(\n children: myTabs.map((Tab tab) {\n return Center(child: Text(tab.text));\n }).toList(),\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DefaultTabController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildLoopingListDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies infinite children for [ListWheelScrollView] by\nlooping an explicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildLoopingListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates its own size and clips and aligns its child.\n\n[SizeTransition] acts as a [ClipRect] that animates either its width or its\nheight, depending upon the value of [axis]. The alignment of the child along\nthe [axis] is specified by the [axisAlignment].\n\nLike most widgets, [SizeTransition] will conform to the constraints it is\ngiven, so be sure to put it in a context where it can change size. For\ninstance, if you place it into a [Container] with a fixed size, then the\n[SizeTransition] will not be able to change size, and will appear to do\nnothing.\n\nHere's an illustration of the [SizeTransition] widget, with it's [sizeFactor]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [AnimatedCrossFade], for a widget that automatically animates between\n the sizes of two children, fading between them.\n * [ScaleTransition], a widget that scales the size of the child instead of\n clipping it.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SizeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IdleScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scroll activity that does nothing.\n\nWhen a scroll view is not scrolling, it is performing the idle activity.\n\nIf the [Scrollable] changes dimensions, this activity triggers a ballistic\nactivity to restore the view.", "detail": "", "kind": 7, "label": "IdleScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for building children of a [DragTarget].\n\nThe `candidateData` argument contains the list of drag data that is hovering\nover this [DragTarget] and that has passed [DragTarget.onWillAccept]. The\n`rejectedData` argument contains the list of drag data that is hovering over\nthis [DragTarget] and that will not be accepted by the [DragTarget].\n\nUsed by [DragTarget.builder].", "detail": "(BuildContext context, List<T> candidateData, List<dynamic> rejectedData) → Widget", "kind": 7, "label": "DragTargetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticIndexCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A callback which produces a semantic index given a widget and the local index.\n\nReturn a null value to prevent a widget from receiving an index.\n\nA semantic index is used to tag child semantic nodes for accessibility\nannouncements in scroll view.\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.\n * [SliverChildBuilderDelegate], for an explanation of how this is used to\n generate indexes.", "detail": "(Widget widget, int localIndex) → int", "kind": 7, "label": "SemanticIndexCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotificationPredicate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A predicate for [ScrollNotification], used to customize widgets that\nlisten to notifications from their children.", "detail": "(ScrollNotification notification) → bool", "kind": 7, "label": "ScrollNotificationPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated widget that automatically transitions its size over a given\nduration whenever the given child's size changes.", "detail": "", "kind": 7, "label": "AnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tab", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design [TabBar] tab. If both [icon] and [text] are\nprovided, the text is displayed below the icon.\n\nSee also:\n\n * [TabBar], which displays a row of tabs.\n * [TabBarView], which displays a widget for the currently selected tab.\n * [TabController], which coordinates tab selection between a [TabBar] and a [TabBarView].\n * <https://material.io/design/components/tabs.html>", "detail": "", "kind": 7, "label": "Tab" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataRow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Row configuration and cell data for a [DataTable].\n\nOne row configuration must be provided for each row to\ndisplay in the table. The list of [DataRow] objects is passed\nas the `rows` argument to the [new DataTable] constructor.\n\nThe data for this row of the table is provided in the [cells]\nproperty of the [DataRow] object.", "detail": "", "kind": 7, "label": "DataRow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IgnorePointer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is invisible during hit testing.\n\nWhen [ignoring] is true, this widget (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because it returns\nfalse from [RenderBox.hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [AbsorbPointer], which also prevents its children from receiving pointer\n events but is itself visible to hit testing.", "detail": "", "kind": 7, "label": "IgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChoiceChip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design choice chip.\n\n[ChoiceChip]s represent a single choice from a set. Choice chips contain\nrelated descriptive text or categories.\n\nRequires one of its ancestors to be a [Material] widget. The [selected] and\n[label] arguments must not be null.\n\n\n```dart\nclass MyThreeOptions extends StatefulWidget {\n @override\n _MyThreeOptionsState createState() => _MyThreeOptionsState();\n}\n\nclass _MyThreeOptionsState extends State<MyThreeOptions> {\n int _value = 1;\n\n @override\n Widget build(BuildContext context) {\n return Wrap(\n children: List<Widget>.generate(\n 3,\n (int index) {\n return ChoiceChip(\n label: Text('Item $index'),\n selected: _value == index,\n onSelected: (bool selected) {\n setState(() {\n _value = selected ? index : null;\n });\n },\n );\n },\n ).toList(),\n );\n }\n}\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "ChoiceChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteObserver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Navigator] observer that notifies [RouteAware]s of changes to the\nstate of their [Route].\n\n[RouteObserver] informs subscribers whenever a route of type `R` is pushed\non top of their own route of type `R` or popped from it. This is for example\nuseful to keep track of page transitions, e.g. a `RouteObserver<PageRoute>`\nwill inform subscribed [RouteAware]s whenever the user navigates away from\nthe current page route to another page route.\n\nTo be informed about route changes of any type, consider instantiating a\n`RouteObserver<Route>`.\n\n## Type arguments\n\nWhen using more aggressive\n[lints](http://dart-lang.github.io/linter/lints/), in particular lints such\nas `always_specify_types`, the Dart analyzer will require that certain types\nbe given with their type arguments. Since the [Route] class and its\nsubclasses have a type argument, this includes the arguments passed to this\nclass. Consider using `dynamic` to specify the entire class of routes rather\nthan only specific subtypes. For example, to watch for all [PageRoute]\nvariants, the `RouteObserver<PageRoute<dynamic>>` type may be used.\n\n\nTo make a [StatefulWidget] aware of its current [Route] state, implement\n[RouteAware] in its [State] and subscribe it to a [RouteObserver]:\n\n```dart\n// Register the RouteObserver as a navigation observer.\nfinal RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();\nvoid main() {\n runApp(MaterialApp(\n home: Container(),\n navigatorObservers: [routeObserver],\n ));\n}\n\nclass RouteAwareWidget extends StatefulWidget {\n State<RouteAwareWidget> createState() => RouteAwareWidgetState();\n}\n\n// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.\nclass RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n routeObserver.subscribe(this, ModalRoute.of(context));\n }\n\n @override\n void dispose() {\n routeObserver.unsubscribe(this);\n super.dispose();\n }\n\n @override\n void didPush() {\n // Route was pushed onto navigator and is now topmost route.\n }\n\n @override\n void didPopNext() {\n // Covering route was popped off the navigator.\n }\n\n @override\n Widget build(BuildContext context) => Container();\n\n}\n```", "detail": "", "kind": 7, "label": "RouteObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Future].\n\nThe [future] must have been obtained earlier, e.g. during [State.initState],\n[State.didUpdateConfig], or [State.didChangeDependencies]. It must not be\ncreated during the [State.build] or [StatelessWidget.build] method call when\nconstructing the [FutureBuilder]. If the [future] is created at the same\ntime as the [FutureBuilder], then every time the [FutureBuilder]'s parent is\nrebuilt, the asynchronous task will be restarted.\n\nA general guideline is to assume that every `build` method could get called\nevery frame, and to treat omitted calls as an optimization.\n\n\n## Timing\n\nWidget rebuilding is scheduled by the completion of the future, using\n[State.setState], but is otherwise decoupled from the timing of the future.\nThe [builder] callback is called at the discretion of the Flutter pipeline, and\nwill thus receive a timing-dependent sub-sequence of the snapshots that\nrepresent the interaction with the future.\n\nA side-effect of this is that providing a new but already-completed future\nto a [FutureBuilder] will result in a single frame in the\n[ConnectionState.waiting] state. This is because there is no way to\nsynchronously determine that a [Future] has already completed.\n\n## Builder contract\n\nFor a future that completes successfully with data, assuming [initialData]\nis null, the [builder] will be called with either both or only the latter of\nthe following snapshots:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withData(ConnectionState.done, 'some data')`\n\nIf that same future instead completed with an error, the [builder] would be\ncalled with either both or only the latter of:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withError(ConnectionState.done, 'some error')`\n\nThe initial snapshot data can be controlled by specifying [initialData]. You\nwould use this facility to ensure that if the [builder] is invoked before\nthe future completes, the snapshot carries data of your choice rather than\nthe default null value.\n\nThe data and error fields of the snapshot change only as the connection\nstate field transitions from `waiting` to `done`, and they will be retained\nwhen changing the [FutureBuilder] configuration to another future. If the\nold future has already completed successfully with data as above, changing\nconfiguration to a new future results in snapshot pairs of the form:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.none, 'data of first future')`\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, 'data of second future')`\n\nIn general, the latter will be produced only when the new future is\nnon-null, and the former only when the old future is non-null.\n\nA [FutureBuilder] behaves identically to a [StreamBuilder] configured with\n`future?.asStream()`, except that snapshots with `ConnectionState.active`\nmay appear for the latter, depending on how the stream is implemented.\n\n\nThis sample shows a [FutureBuilder] configuring a text label to show the\nstate of an asynchronous calculation returning a string. Assume the\n`_calculation` field is set by pressing a button elsewhere in the UI.\n\n```dart\nFutureBuilder<String>(\n future: _calculation, // a previously-obtained Future<String> or null\n builder: (BuildContext context, AsyncSnapshot<String> snapshot) {\n switch (snapshot.connectionState) {\n case ConnectionState.none:\n return Text('Press button to start.');\n case ConnectionState.active:\n case ConnectionState.waiting:\n return Text('Awaiting result...');\n case ConnectionState.done:\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n return Text('Result: ${snapshot.data}');\n }\n return null; // unreachable\n },\n)\n```", "detail": "", "kind": 7, "label": "FutureBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design icon button.\n\nAn icon button is a picture printed on a [Material] widget that reacts to\ntouches by filling with color (ink).\n\nIcon buttons are commonly used in the [AppBar.actions] field, but they can\nbe used in many other places as well.\n\nIf the [onPressed] callback is null, then the button will be disabled and\nwill not react to touch.\n\nRequires one of its ancestors to be a [Material] widget.\n\nThe hit region of an icon button will, if possible, be at least 48.0 pixels\nin size, regardless of the actual [iconSize], to satisfy the [touch target\nsize](https://material.io/guidelines/layout/metrics-keylines.html#metrics-keylines-touch-target-size)\nrequirements in the Material Design specification. The [alignment] controls\nhow the icon itself is positioned within the hit region.\n\n\nThis sample shows an `IconButton` that uses the Material icon \"volume_up\" to\nincrease the volume.\n\n```dart\ndouble _volume = 0.0;\n```\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n body: Center(\n child: Column(\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n IconButton(\n icon: Icon(Icons.volume_up),\n tooltip: 'Increase volume by 10',\n onPressed: () {\n setState(() {\n _volume += 10;\n });\n },\n ),\n Text('Volume : $_volume')\n ],\n ),\n ),\n );\n}\n```\n\n### Adding a filled background\n\nIcon buttons don't support specifying a background color or other\nbackground decoration because typically the icon is just displayed\non top of the parent widget's background. Icon buttons that appear\nin [AppBar.actions] are an example of this.\n\nIt's easy enough to create an icon button with a filled background\nusing the [Ink] widget. The [Ink] widget renders a decoration on\nthe underlying [Material] along with the splash and highlight\n[InkResponse] contributed by descendant widgets.\n\n\nIn this sample the icon button's background color is defined with an [Ink]\nwidget whose child is an [IconButton]. The icon button's filled background\nis a light shade of blue, it's a filled circle, and it's as big as the\nbutton is.\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Container(\n child: Ink(\n decoration: ShapeDecoration(\n color: Colors.lightBlue,\n shape: CircleBorder(),\n ),\n child: IconButton(\n icon: Icon(Icons.android),\n color: Colors.white,\n onPressed: () {\n print(\"filled background\");\n },\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Icons], a library of predefined icons.\n * [BackButton], an icon button for a \"back\" affordance which adapts to the\n current platform's conventions.\n * [CloseButton], an icon button for closing pages.\n * [AppBar], to show a toolbar at the top of an application.\n * [RaisedButton] and [FlatButton], for buttons with text in them.\n * [InkResponse] and [InkWell], for the ink splash effect itself.", "detail": "", "kind": 7, "label": "IconButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimeOfDayFormat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines how the time picker invoked using [showTimePicker] formats and\nlays out the time controls.\n\nThe time picker provides layout configurations optimized for each of the\nenum values.", "detail": "", "kind": 13, "label": "TimeOfDayFormat" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of an [Align] that animates its [Align.alignment] property.\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "AlignTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherLayoutBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for builders used to generate custom layouts for\n[AnimatedSwitcher].\n\nThe builder should return a widget which contains the given children, laid\nout as desired. It must not return null. The builder should be able to\nhandle an empty list of `previousChildren`, or a null `currentChild`.\n\nThe `previousChildren` list is an unmodifiable list, sorted with the oldest\nat the beginning and the newest at the end. It does not include the\n`currentChild`.", "detail": "(Widget currentChild, List<Widget> previousChildren) → Widget", "kind": 7, "label": "AnimatedSwitcherLayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositionedDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [PositionedDirectional] which automatically transitions\nthe child's position over a given duration whenever the given position\nchanges.\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositionedDirectional] will trigger\na relayout as well. ([SlideTransition] is also text-direction-aware.)\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositioned], which specifies the widget's position visually (the\n same as this widget, but for animating [Positioned]).", "detail": "", "kind": 7, "label": "AnimatedPositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadioListTile", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] with a [Radio]. In other words, a radio button with a label.\n\nThe entire list tile is interactive: tapping anywhere in the tile selects\nthe radio button.\n\nThe [value], [groupValue], [onChanged], and [activeColor] properties of this\nwidget are identical to the similarly-named properties on the [Radio]\nwidget. The type parameter `T` serves the same purpose as that of the\n[Radio] class' type parameter.\n\nThe [title], [subtitle], [isThreeLine], and [dense] properties are like\nthose of the same name on [ListTile].\n\nThe [selected] property on this widget is similar to the [ListTile.selected]\nproperty, but the color used is that described by [activeColor], if any,\ndefaulting to the accent color of the current [Theme]. No effort is made to\ncoordinate the [selected] state and the [checked] state; to have the list\ntile appear selected when the radio button is the selected radio button, set\n[selected] to true when [value] matches [groupValue].\n\nThe radio button is shown on the left by default in left-to-right languages\n(i.e. the leading edge). This can be changed using [controlAffinity]. The\n[secondary] widget is placed on the opposite side. This maps to the\n[ListTile.leading] and [ListTile.trailing] properties of [ListTile].\n\nTo show the [RadioListTile] as disabled, pass null as the [onChanged]\ncallback.\n\n\nThis widget shows a pair of radio buttons that control the `_character`\nfield. The field is of the type `SingingCharacter`, an enum.\n\n```dart\n// At the top level:\nenum SingingCharacter { lafayette, jefferson }\n\n// In the State of a stateful widget:\nSingingCharacter _character = SingingCharacter.lafayette;\n\n// In the build function of that State:\nColumn(\n children: <Widget>[\n RadioListTile<SingingCharacter>(\n title: const Text('Lafayette'),\n value: SingingCharacter.lafayette,\n groupValue: _character,\n onChanged: (SingingCharacter value) { setState(() { _character = value; }); },\n ),\n RadioListTile<SingingCharacter>(\n title: const Text('Thomas Jefferson'),\n value: SingingCharacter.jefferson,\n groupValue: _character,\n onChanged: (SingingCharacter value) { setState(() { _character = value; }); },\n ),\n ],\n)\n```\n\nSee also:\n\n * [ListTileTheme], which can be used to affect the style of list tiles,\n including radio list tiles.\n * [CheckboxListTile], a similar widget for checkboxes.\n * [SwitchListTile], a similar widget for switches.\n * [ListTile] and [Radio], the widgets from which this widget is made.", "detail": "", "kind": 7, "label": "RadioListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCell", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls how a child of a [Table] is aligned.\n\nA [TableCell] widget must be a descendant of a [Table], and the path from\nthe [TableCell] widget to its enclosing [Table] must contain only\n[TableRow]s, [StatelessWidget]s, or [StatefulWidget]s (not\nother kinds of widgets, like [RenderObjectWidget]s).", "detail": "", "kind": 7, "label": "TableCell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteAware", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for objects that are aware of their current [Route].\n\nThis is used with [RouteObserver] to make a widget aware of changes to the\n[Navigator]'s session history.", "detail": "", "kind": 7, "label": "RouteAware" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [LeafRenderObjectWidget] as its configuration.", "detail": "", "kind": 7, "label": "LeafRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [Scaffold].\n\nCan display [SnackBar]s and [BottomSheet]s. Retrieve a [ScaffoldState] from\nthe current [BuildContext] using [Scaffold.of].", "detail": "", "kind": 7, "label": "ScaffoldState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorObserver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for observing the behavior of a [Navigator].", "detail": "", "kind": 7, "label": "NavigatorObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldPrelayoutGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The geometry of the [Scaffold] after all its contents have been laid out\nexcept the [FloatingActionButton].\n\nThe [Scaffold] passes this pre-layout geometry to its\n[FloatingActionButtonLocation], which produces an [Offset] that the\n[Scaffold] uses to position the [FloatingActionButton].\n\nFor a description of the [Scaffold]'s geometry after it has\nfinished laying out, see the [ScaffoldGeometry].", "detail": "", "kind": 7, "label": "ScaffoldPrelayoutGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBarTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a theme for [TabBar] widgets.\n\nA tab bar theme describes the color of the tab label and the size/shape of\nthe [TabBar.indicator].\n\nDescendant widgets obtain the current theme's [TabBarTheme] object using\n`TabBarTheme.of(context)`. Instances of [TabBarTheme] can be customized with\n[TabBarTheme.copyWith].\n\nSee also:\n\n * [TabBar], a widget that displays a horizontal row of tabs.\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "TabBarTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [State.setState] functions.", "detail": "(VoidCallback fn) → void", "kind": 7, "label": "StateSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that merges the semantics of its descendants.\n\nCauses all the semantics of the subtree rooted at this node to be\nmerged into one node in the semantics tree. For example, if you\nhave a widget with a Text node next to a checkbox widget, this\ncould be used to merge the label from the Text node with the\n\"checked\" semantic state of the checkbox into a single node that\nhad both the label and the checked state. Otherwise, the label\nwould be presented as a separate feature than the checkbox, and\nthe user would not be able to be sure that they were related.\n\nBe aware that if two nodes in the subtree have conflicting\nsemantics, the result may be nonsensical. For example, a subtree\nwith a checked checkbox and an unchecked checkbox will be\npresented as checked. All the labels will be merged into a single\nstring (with newlines separating each label from the other). If\nmultiple nodes in the merged subtree can handle semantic gestures,\nthe first one in tree order will be the one to receive the\ncallbacks.", "detail": "", "kind": 7, "label": "MergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomSheet", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design bottom sheet.\n\nThere are two kinds of bottom sheets in material design:\n\n * _Persistent_. A persistent bottom sheet shows information that\n supplements the primary content of the app. A persistent bottom sheet\n remains visible even when the user interacts with other parts of the app.\n Persistent bottom sheets can be created and displayed with the\n [ScaffoldState.showBottomSheet] function or by specifying the\n [Scaffold.bottomSheet] constructor parameter.\n\n * _Modal_. A modal bottom sheet is an alternative to a menu or a dialog and\n prevents the user from interacting with the rest of the app. Modal bottom\n sheets can be created and displayed with the [showModalBottomSheet]\n function.\n\nThe [BottomSheet] widget itself is rarely used directly. Instead, prefer to\ncreate a persistent bottom sheet with [ScaffoldState.showBottomSheet] or\n[Scaffold.bottomSheet], and a modal bottom sheet with [showModalBottomSheet].\n\nSee also:\n\n * [showBottomSheet] and [ScaffoldState.showBottomSheet], for showing\n non-modal \"persistent\" bottom sheets.\n * [showModalBottomSheet], which can be used to display a modal bottom\n sheet.\n * <https://material.io/design/components/sheets-bottom.html>", "detail": "", "kind": 7, "label": "BottomSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that automatically dispatches a [SizeChangedLayoutNotification]\nwhen the layout dimensions of its child change.\n\nThe notification is not sent for the initial layout (since the size doesn't\nchange in that case, it's just established).\n\nTo listen for the notification dispatched by this widget, use a\n[NotificationListener<SizeChangedLayoutNotification>].\n\nThe [Material] class listens for [LayoutChangedNotification]s, including\n[SizeChangedLayoutNotification]s, to repaint [InkResponse] and [InkWell] ink\neffects. When a widget is likely to change size, wrapping it in a\n[SizeChangedLayoutNotifier] will cause the ink effects to correctly repaint\nwhen the child changes size.\n\nSee also:\n\n * [Notification], the base class for notifications that bubble through the\n widget tree.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Notification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that can bubble up the widget tree.\n\nYou can determine the type of a notification using the `is` operator to\ncheck the [runtimeType] of the notification.\n\nTo listen for notifications in a subtree, use a [NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].", "detail": "", "kind": 7, "label": "Notification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for entries in a material design popup menu.\n\nThe popup menu widget uses this interface to interact with the menu items.\nTo show a popup menu, use the [showMenu] function. To create a button that\nshows a popup menu, consider using [PopupMenuButton].\n\nThe type `T` is the type of the value(s) the entry represents. All the\nentries in a given menu must represent values with consistent types.\n\nA [PopupMenuEntry] may represent multiple values, for example a row with\nseveral icons, or a single entry, for example a menu item with an icon (see\n[PopupMenuItem]), or no value at all (for example, [PopupMenuDivider]).\n\nSee also:\n\n * [PopupMenuItem], a popup menu entry for a single value.\n * [PopupMenuDivider], a popup menu entry that is just a horizontal line.\n * [CheckedPopupMenuItem], a popup menu item with a checkmark.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "PopupMenuEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBindingObserver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for classes that register with the Widgets layer binding.\n\nWhen used as a mixin, provides no-op method implementations.\n\nSee [WidgetsBinding.addObserver] and [WidgetsBinding.removeObserver].\n\nThis class can be extended directly, to get default behaviors for all of the\nhandlers, or can used with the `implements` keyword, in which case all the\nhandlers must be implemented (and the analyzer will list those that have\nbeen omitted).\n\n\nThis [StatefulWidget] implements the parts of the [State] and\n[WidgetsBindingObserver] protocols necessary to react to application\nlifecycle messages. See [didChangeAppLifecycleState].\n\n```dart\nclass AppLifecycleReactor extends StatefulWidget {\n const AppLifecycleReactor({ Key key }) : super(key: key);\n\n @override\n _AppLifecycleReactorState createState() => _AppLifecycleReactorState();\n}\n\nclass _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {\n @override\n void initState() {\n super.initState();\n WidgetsBinding.instance.addObserver(this);\n }\n\n @override\n void dispose() {\n WidgetsBinding.instance.removeObserver(this);\n super.dispose();\n }\n\n AppLifecycleState _notification;\n\n @override\n void didChangeAppLifecycleState(AppLifecycleState state) {\n setState(() { _notification = state; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Text('Last notification: $_notification');\n }\n}\n```\n\nTo respond to other notifications, replace the [didChangeAppLifecycleState]\nmethod above with other methods from this class.", "detail": "", "kind": 7, "label": "WidgetsBindingObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material expansion panel. It has a header and a body and can be either\nexpanded or collapsed. The body of the panel is only visible when it is\nexpanded.\n\nExpansion panels are only intended to be used as children for\n[ExpansionPanelList].\n\nSee [ExpansionPanelList] for a sample implementation.\n\nSee also:\n\n * [ExpansionPanelList]\n * <https://material.io/design/components/lists.html#types>", "detail": "", "kind": 7, "label": "ExpansionPanel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTileTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An inherited widget that defines color and style parameters for [ListTile]s\nin this widget's subtree.\n\nValues specified here are used for [ListTile] properties that are not given\nan explicit non-null value.\n\nThe [Drawer] widget specifies a tile theme for its children which sets\n[style] to [ListTileStyle.drawer].", "detail": "", "kind": 7, "label": "ListTileTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the localized resource values used by the Material widgets.\n\nSee also:\n\n * [DefaultMaterialLocalizations], the default, English-only, implementation\n of this interface.\n * [GlobalMaterialLocalizations], which provides material localizations for\n many languages.", "detail": "", "kind": 7, "label": "MaterialLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuCanceled", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback invoked when a [PopupMenuButton] is dismissed\nwithout selecting an item.\n\nUsed by [PopupMenuButton.onCanceled].", "detail": "() → void", "kind": 7, "label": "PopupMenuCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls how [Scrollable] widgets behave in a subtree.\n\nThe scroll configuration determines the [ScrollPhysics] and viewport\ndecorations used by descendants of [child].", "detail": "", "kind": 7, "label": "ScrollConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interactive button within either material's [BottomNavigationBar]\nor the iOS themed [CupertinoTabBar] with an icon and title.\n\nThis class is rarely used in isolation. It is typically embedded in one of\nthe bottom navigation widgets above.\n\nSee also:\n\n * [BottomNavigationBar]\n * <https://material.io/design/components/bottom-navigation.html>\n * [CupertinoTabBar]\n * <https://developer.apple.com/ios/human-interface-guidelines/bars/tab-bars>", "detail": "", "kind": 7, "label": "BottomNavigationBarItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that enables inspecting the child widget's structure.\n\nSelect a location on your device or emulator and view what widgets and\nrender object that best matches the location. An outline of the selected\nwidget and terse summary information is shown on device with detailed\ninformation is shown in the observatory or in IntelliJ when using the\nFlutter Plugin.\n\nThe inspector has a select mode and a view mode.\n\nIn the select mode, tapping the device selects the widget that best matches\nthe location of the touch and switches to view mode. Dragging a finger on\nthe device selects the widget under the drag location but does not switch\nmodes. Touching the very edge of the bounding box of a widget triggers\nselecting the widget even if another widget that also overlaps that\nlocation would otherwise have priority.\n\nIn the view mode, the previously selected widget is outlined, however,\ntouching the device has the same effect it would have if the inspector\nwasn't present. This allows interacting with the application and viewing how\nthe selected widget changes position. Clicking on the select icon in the\nbottom left corner of the application switches back to select mode.", "detail": "", "kind": 7, "label": "WidgetInspector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using a rounded rectangle.\n\nBy default, [ClipRRect] uses its own bounds as the base rectangle for the\nclip, but the size and location of the clip can be customized using a custom\n[clipper].\n\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Hero", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that marks its child as being a candidate for\n[hero animations](https://flutter.dev/docs/development/ui/animations/hero-animations).\n\nWhen a [PageRoute] is pushed or popped with the [Navigator], the entire\nscreen's content is replaced. An old route disappears and a new route\nappears. If there's a common visual feature on both routes then it can\nbe helpful for orienting the user for the feature to physically move from\none page to the other during the routes' transition. Such an animation\nis called a *hero animation*. The hero widgets \"fly\" in the Navigator's\noverlay during the transition and while they're in-flight they're, by\ndefault, not shown in their original locations in the old and new routes.\n\nTo label a widget as such a feature, wrap it in a [Hero] widget. When\nnavigation happens, the [Hero] widgets on each route are identified\nby the [HeroController]. For each pair of [Hero] widgets that have the\nsame tag, a hero animation is triggered.\n\nIf a [Hero] is already in flight when navigation occurs, its\nflight animation will be redirected to its new destination. The\nwidget shown in-flight during the transition is, by default, the\ndestination route's [Hero]'s child.\n\nFor a Hero animation to trigger, the Hero has to exist on the very first\nframe of the new page's animation.\n\nRoutes must not contain more than one [Hero] for each [tag].\n\n\n## Discussion\n\nHeroes and the [Navigator]'s [Overlay] [Stack] must be axis-aligned for\nall this to work. The top left and bottom right coordinates of each animated\nHero will be converted to global coordinates and then from there converted\nto that [Stack]'s coordinate space, and the entire Hero subtree will, for\nthe duration of the animation, be lifted out of its original place, and\npositioned on that stack. If the [Hero] isn't axis aligned, this is going to\nfail in a rather ugly fashion. Don't rotate your heroes!\n\nTo make the animations look good, it's critical that the widget tree for the\nhero in both locations be essentially identical. The widget of the *target*\nis, by default, used to do the transition: when going from route A to route\nB, route B's hero's widget is placed over route A's hero's widget. If a\n[flightShuttleBuilder] is supplied, its output widget is shown during the\nflight transition instead.\n\nBy default, both route A and route B's heroes are hidden while the\ntransitioning widget is animating in-flight above the 2 routes.\n[placeholderBuilder] can be used to show a custom widget in their place\ninstead once the transition has taken flight.\n\nDuring the transition, the transition widget is animated to route B's hero's\nposition, and then the widget is inserted into route B. When going back from\nB to A, route A's hero's widget is, by default, placed over where route B's\nhero's widget was, and then the animation goes the other way.\n\n### Nested Navigators\n\nIf either or both routes contain nested [Navigator]s, only [Hero]s\ncontained in the top-most routes (as defined by [Route.isCurrent]) *of those\nnested [Navigator]s* are considered for animation. Just like in the\nnon-nested case the top-most routes containing these [Hero]s in the nested\n[Navigator]s have to be [PageRoute]s.\n\n## Parts of a Hero Transition\n\n![Diagrams with parts of the Hero transition.](https://flutter.github.io/assets-for-api-docs/assets/interaction/heroes.png)", "detail": "", "kind": 7, "label": "Hero" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Drawer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design panel that slides in horizontally from the edge of a\n[Scaffold] to show navigation links in an application.\n\nDrawers are typically used with the [Scaffold.drawer] property. The child of\nthe drawer is usually a [ListView] whose first child is a [DrawerHeader]\nthat displays status information about the current user. The remaining\ndrawer children are often constructed with [ListTile]s, often concluding\nwith an [AboutListTile].\n\nAn open drawer can be closed by calling [Navigator.pop]. For example\na drawer item might close the drawer when tapped:\n\n```dart\nListTile(\n leading: Icon(Icons.change_history),\n title: Text('Change history'),\n onTap: () {\n // change app state...\n Navigator.pop(context); // close the drawer\n },\n);\n```\n\nThe [AppBar] automatically displays an appropriate [IconButton] to show the\n[Drawer] when a [Drawer] is available in the [Scaffold]. The [Scaffold]\nautomatically handles the edge-swipe gesture to show the drawer.\n\nSee also:\n\n * [Scaffold.drawer], where one specifies a [Drawer] so that it can be\n shown.\n * [Scaffold.of], to obtain the current [ScaffoldState], which manages the\n display and animation of the drawer.\n * [ScaffoldState.openDrawer], which displays its [Drawer], if any.\n * <https://material.io/design/components/navigation-drawer.html>", "detail": "", "kind": 7, "label": "Drawer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [Scrollable] to build the viewport through which the\nscrollable content is displayed.", "detail": "(BuildContext context, ViewportOffset position) → Widget", "kind": 7, "label": "ViewportBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses an [InheritedWidget] as its configuration.", "detail": "", "kind": 7, "label": "InheritedElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SimpleDialog", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A simple material design dialog.\n\nA simple dialog offers the user a choice between several options. A simple\ndialog has an optional title that is displayed above the choices.\n\nChoices are normally represented using [SimpleDialogOption] widgets. If\nother widgets are used, see [contentPadding] for notes regarding the\nconventions for obtaining the spacing expected by Material Design.\n\nFor dialogs that inform the user about a situation, consider using an\n[AlertDialog].\n\nTypically passed as the child widget to [showDialog], which displays the\ndialog.\n\n\nIn this example, the user is asked to select between two options. These\noptions are represented as an enum. The [showDialog] method here returns\na [Future] that completes to a value of that enum. If the user cancels\nthe dialog (e.g. by hitting the back button on Android, or tapping on the\nmask behind the dialog) then the future completes with the null value.\n\nThe return value in this example is used as the index for a switch statement.\nOne advantage of using an enum as the return value and then using that to\ndrive a switch statement is that the analyzer will flag any switch statement\nthat doesn't mention every value in the enum.\n\n```dart\nFuture<void> _askedToLead() async {\n switch (await showDialog<Department>(\n context: context,\n builder: (BuildContext context) {\n return SimpleDialog(\n title: const Text('Select assignment'),\n children: <Widget>[\n SimpleDialogOption(\n onPressed: () { Navigator.pop(context, Department.treasury); },\n child: const Text('Treasury department'),\n ),\n SimpleDialogOption(\n onPressed: () { Navigator.pop(context, Department.state); },\n child: const Text('State department'),\n ),\n ],\n );\n }\n )) {\n case Department.treasury:\n // Let's go.\n // ...\n break;\n case Department.state:\n // ...\n break;\n }\n}\n```\n\nSee also:\n\n * [SimpleDialogOption], which are options used in this type of dialog.\n * [AlertDialog], for dialogs that have a row of buttons below the body.\n * [Dialog], on which [SimpleDialog] and [AlertDialog] are based.\n * [showDialog], which actually displays the dialog and returns its result.\n * <https://material.io/design/components/dialogs.html#simple-dialog>", "detail": "", "kind": 7, "label": "SimpleDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabPageSelectorIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a single circle with the specified border and background colors.\n\nUsed by [TabPageSelector] to indicate the selected page.", "detail": "", "kind": 7, "label": "TabPageSelectorIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformFollower", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that follows a [CompositedTransformTarget].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\napplies a transformation that causes it to provide its child with a\ncoordinate space that matches that of the linked [CompositedTransformTarget]\nwidget, offset by [offset].\n\nThe [LayerLink] object used as the [link] must be the same object as that\nprovided to the matching [CompositedTransformTarget].\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nthis [CompositedTransformFollower].\n\nHit testing on descendants of this widget will only work if the target\nposition is within the box that this widget's parent considers to be\nhittable. If the parent covers the screen, this is trivially achievable, so\nthis widget is usually used as the root of an [OverlayEntry] in an app-wide\n[Overlay] (e.g. as created by the [MaterialApp] widget's [Navigator]).\n\nSee also:\n\n * [CompositedTransformTarget], the widget that this widget can target.\n * [FollowerLayer], the layer that implements this widget's logic.\n * [Transform], which applies an arbitrary transform to a child.", "detail": "", "kind": 7, "label": "CompositedTransformFollower" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableText", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A basic text input field.\n\nThis widget interacts with the [TextInput] service to let the user edit the\ntext it contains. It also provides scrolling, selection, and cursor\nmovement. This widget does not provide any focus management (e.g.,\ntap-to-focus).\n\n## Input Actions\n\nA [TextInputAction] can be provided to customize the appearance of the\naction button on the soft keyboard for Android and iOS. The default action\nis [TextInputAction.done].\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\nEditableText receives focus. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\n## Lifecycle\n\nUpon completion of editing, like pressing the \"done\" button on the keyboard,\ntwo actions take place:\n\n 1st: Editing is finalized. The default behavior of this step includes\n an invocation of [onChanged]. That default behavior can be overridden.\n See [onEditingComplete] for details.\n\n 2nd: [onSubmitted] is invoked with the user's input value.\n\n[onSubmitted] can be used to manually move focus to another input widget\nwhen a user finishes with the currently focused input widget.\n\nRather than using this widget directly, consider using [TextField], which\nis a full-featured, material-design text input field with placeholder text,\nlabels, and [Form] integration.\n\n## Gesture Events Handling\n\nThis widget provides rudimentary, platform-agnostic gesture handling for\nuser actions such as tapping, long-pressing and scrolling when\n[rendererIgnoresPointer] is false (false by default). To tightly conform\nto the platform behavior with respect to input gestures in text fields, use\n[TextField] or [CupertinoTextField]. For custom selection behavior, call\nmethods such as [RenderEditable.selectPosition],\n[RenderEditable.selectWord], etc. programmatically.\n\nSee also:\n\n * [TextField], which is a full-featured, material-design text input field\n with placeholder text, labels, and [Form] integration.", "detail": "", "kind": 7, "label": "EditableText" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for an editable text field.\n\nWhenever the user modifies a text field with an associated\n[TextEditingController], the text field updates [value] and the controller\nnotifies its listeners. Listeners can then read the [text] and [selection]\nproperties to learn what the user has typed or how the selection has been\nupdated.\n\nSimilarly, if you modify the [text] or [selection] properties, the text\nfield will be notified and will update itself appropriately.\n\nA [TextEditingController] can also be used to provide an initial value for a\ntext field. If you build a text field with a controller that already has\n[text], the text field will use that text as its initial value.\n\nThe [text] or [selection] properties can be set from within a listener\nadded to this controller. If both properties need to be changed then the\ncontroller's [value] should be set instead.\n\nThis example creates a [TextField] with a [TextEditingController] whose\nchange listener forces the entered text to be lower case and keeps the\ncursor at the end of the input.\n\n```dart\nfinal _controller = TextEditingController();\n\nvoid initState() {\n _controller.addListener(() {\n final text = _controller.text.toLowerCase();\n _controller.value = _controller.value.copyWith(\n text: text,\n selection: TextSelection(baseOffset: text.length, extentOffset: text.length),\n composing: TextRange.empty,\n );\n });\n super.initState();\n}\n\nvoid dispose() {\n _controller.dispose();\n super.dispose();\n}\n\nWidget build(BuildContext context) {\n return Scaffold(\n body: Container(\n alignment: Alignment.center,\n padding: const EdgeInsets.all(6),\n child: TextFormField(\n controller: _controller,\n decoration: InputDecoration(border: OutlineInputBorder()),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [TextField], which is a Material Design text field that can be controlled\n with a [TextEditingController].\n * [EditableText], which is a raw region of editable text that can be\n controlled with a [TextEditingController].", "detail": "", "kind": 7, "label": "TextEditingController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnderlineTabIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [TabBar.indicator] to draw a horizontal line below the\nselected tab.\n\nThe selected tab underline is inset from the tab's boundary by [insets].\nThe [borderSide] defines the line's color and weight.\n\nThe [TabBar.indicatorSize] property can be used to define the indicator's\nbounds in terms of its (centered) widget with [TabIndicatorSize.label],\nor the entire tab with [TabIndicatorSize.tab].", "detail": "", "kind": 7, "label": "UnderlineTabIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspectorService", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Service used by GUI tools to interact with the [WidgetInspector].\n\nCalls to this object are typically made from GUI tools such as the [Flutter\nIntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nusing the [Dart VM Service protocol](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md).\nThis class uses its own object id and manages object lifecycles itself\ninstead of depending on the [object ids](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#getobject)\nspecified by the VM Service Protocol because the VM Service Protocol ids\nexpire unpredictably. Object references are tracked in groups so that tools\nthat clients can use dereference all objects in a group with a single\noperation making it easier to avoid memory leaks.\n\nAll methods in this class are appropriate to invoke from debugging tools\nusing the Observatory service protocol to evaluate Dart expressions of the\nform `WidgetInspectorService.instance.methodName(arg1, arg2, ...)`. If you\nmake changes to any instance method of this class you need to verify that\nthe [Flutter IntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nwidget inspector support still works with the changes.\n\nAll methods returning String values return JSON.", "detail": "", "kind": 7, "label": "WidgetInspectorService" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned without\ncommitting to a specific [TextDirection].\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nA [PositionedDirectional] widget must be a descendant of a [Stack], and the\npath from the [PositionedDirectional] widget to its enclosing [Stack] must\ncontain only [StatelessWidget]s or [StatefulWidget]s (not other kinds of\nwidgets, like [RenderObjectWidget]s).\n\nIf a widget is wrapped in a [PositionedDirectional], then it is a\n_positioned_ widget in its [Stack]. If the [top] property is non-null, the\ntop edge of this child/ will be positioned [top] layout units from the top\nof the stack widget. The [start], [bottom], and [end] properties work\nanalogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [start] and [end] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nSee also:\n\n * [Positioned], which specifies the widget's position visually.\n * [Positioned.directional], which also specifies the widget's horizontal\n position using [start] and [end] but has an explicit [TextDirection].", "detail": "", "kind": 7, "label": "PositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsDebugger", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that visualizes the semantics for the child.\n\nThis widget is useful for understand how an app presents itself to\naccessibility technology.", "detail": "", "kind": 7, "label": "SemanticsDebugger" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [SingleChildRenderObjectWidget] as its configuration.\n\nThe child is optional.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [RenderObjectWithChildMixin] mixin. Such widgets are\nexpected to inherit from [SingleChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "SingleChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQueryData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Information about a piece of media (e.g., a window).\n\nFor example, the [MediaQueryData.size] property contains the width and\nheight of the current window.\n\nTo obtain the current [MediaQueryData] for a given [BuildContext], use the\n[MediaQuery.of] function. For example, to obtain the size of the current\nwindow, use `MediaQuery.of(context).size`.\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nMediaQueryData includes two [EdgeInsets] values:\n[padding] and [viewInsets]. These\nvalues reflect the configuration of the device and are used by\nmany top level widgets, like [SafeArea] and the Cupertino and\nMaterial scaffold widgets. The padding value defines areas that\nmight not be completely visible, like the display \"notch\" on the\niPhone X. The viewInsets value defines areas that aren't visible at\nall, typically because they're obscured by the device's keyboard.\n\nThe viewInsets and padding values are independent, they're both\nmeasured from the edges of the MediaQuery widget's bounds. The\nbounds of the top level MediaQuery created by [WidgetsApp] are the\nsame as the window that contains the app.\n\nWidgets whose layouts consume space defined by [viewInsets] or\n[padding] should enclose their children in secondary MediaQuery\nwidgets that reduce those properties by the same amount.\nThe [removePadding] and [removeInsets] methods are useful for this.", "detail": "", "kind": 7, "label": "MediaQueryData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalBarrier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nSee also:\n\n * [ModalRoute], which indirectly uses this widget.\n * [AnimatedModalBarrier], which is similar but takes an animated [color]\n instead of a single color value.", "detail": "", "kind": 7, "label": "ModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputChip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design input chip.\n\nInput chips represent a complex piece of information, such as an entity\n(person, place, or thing) or conversational text, in a compact form.\n\nInput chips can be made selectable by setting [onSelected], deletable by\nsetting [onDeleted], and pressable like a button with [onPressed]. They have\na [label], and they can have a leading icon (see [avatar]) and a trailing\nicon ([deleteIcon]). Colors and padding can be customized.\n\nRequires one of its ancestors to be a [Material] widget.\n\nInput chips work together with other UI elements. They can appear:\n\n * In a [Wrap] widget.\n * In a horizontally scrollable list, like a [ListView] whose\n scrollDirection is [Axis.horizontal].\n\n\n```dart\nInputChip(\n avatar: CircleAvatar(\n backgroundColor: Colors.grey.shade800,\n child: Text('AB'),\n ),\n label: Text('Aaron Burr'),\n onPressed: () {\n print('I am the one thing in life.');\n }\n)\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "InputChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DialogTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a theme for [Dialog] widgets.\n\nDescendant widgets obtain the current [DialogTheme] object using\n`DialogTheme.of(context)`. Instances of [DialogTheme] can be customized with\n[DialogTheme.copyWith].\n\nWhen Shape is `null`, the dialog defaults to a [RoundedRectangleBorder] with\na border radius of 2.0 on all corners.\n\n[titleTextStyle] and [contentTextStyle] are used in [AlertDialogs].\nIf null, they default to [ThemeData.textTheme.title] and [ThemeData.textTheme.subhead],\nrespectively.\n\nSee also:\n\n * [Dialog], a material dialog that can be customized using this [DialogTheme].\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "DialogTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyleTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of a [DefaultTextStyle] that animates the different properties\nof its [TextStyle].\n\nSee also:\n\n * [DefaultTextStyle], which also defines a [TextStyle] for its descendants\n but is not animated.", "detail": "", "kind": 7, "label": "DefaultTextStyleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderNestedScrollViewViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [RenderViewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "RenderNestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have no children.", "detail": "", "kind": 7, "label": "LeafRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dialog", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design dialog.\n\nThis dialog widget does not have any opinion about the contents of the\ndialog. Rather than using this widget directly, consider using [AlertDialog]\nor [SimpleDialog], which implement specific kinds of material design\ndialogs.\n\nSee also:\n\n * [AlertDialog], for dialogs that have a message and some buttons.\n * [SimpleDialog], for dialogs that offer a variety of options.\n * [showDialog], which actually displays the dialog and returns its result.\n * <https://material.io/design/components/dialogs.html>", "detail": "", "kind": 7, "label": "Dialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQuery", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Establishes a subtree in which media queries resolve to the given data.\n\nFor example, to learn the size of the current media (e.g., the window\ncontaining your app), you can read the [MediaQueryData.size] property from\nthe [MediaQueryData] returned by [MediaQuery.of]:\n`MediaQuery.of(context).size`.\n\nQuerying the current media using [MediaQuery.of] will cause your widget to\nrebuild automatically whenever the [MediaQueryData] changes (e.g., if the\nuser rotates their device).\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nSee also:\n\n * [WidgetsApp] and [MaterialApp], which introduce a [MediaQuery] and keep\n it up to date with the current screen metrics as they change.\n * [MediaQueryData], the data structure that represents the metrics.", "detail": "", "kind": 7, "label": "MediaQuery" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design button for selecting from a list of items.\n\nA dropdown button lets the user select from a number of items. The button\nshows the currently selected item as well as an arrow that opens a menu for\nselecting another item.\n\nThe type `T` is the type of the [value] that each dropdown item represents.\nAll the entries in a given menu must represent values with consistent types.\nTypically, an enum is used. Each [DropdownMenuItem] in [items] must be\nspecialized with that same type argument.\n\nThe [onChanged] callback should update a state variable that defines the\ndropdown's value. It should also call [State.setState] to rebuild the\ndropdown with the new value.\n\n\nThis sample shows a `DropdownButton` whose value is one of\n\"One\", \"Two\", \"Free\", or \"Four\".\n\n```dart\nString dropdownValue = 'One';\n```\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n body: Center(\n child: DropdownButton<String>(\n value: dropdownValue,\n onChanged: (String newValue) {\n setState(() {\n dropdownValue = newValue;\n });\n },\n items: <String>['One', 'Two', 'Free', 'Four']\n .map<DropdownMenuItem<String>>((String value) {\n return DropdownMenuItem<String>(\n value: value,\n child: Text(value),\n );\n })\n .toList(),\n ),\n ),\n );\n}\n```\n\nIf the [onChanged] callback is null or the list of [items] is null\nthen the dropdown button will be disabled, i.e. its arrow will be\ndisplayed in grey and it will not respond to input. A disabled button\nwill display the [disabledHint] widget if it is non-null.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [DropdownMenuItem], the class used to represent the [items].\n * [DropdownButtonHideUnderline], which prevents its descendant dropdown buttons\n from displaying their underlines.\n * [RaisedButton], [FlatButton], ordinary buttons that trigger a single action.\n * <https://material.io/design/components/menus.html#dropdown-menu>", "detail": "", "kind": 7, "label": "DropdownButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionGestureDetector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A gesture detector to respond to non-exclusive event chains for a text field.\n\nAn ordinary [GestureDetector] configured to handle events like tap and\ndouble tap will only recognize one or the other. This widget detects both:\nfirst the tap and then, if another tap down occurs within a time limit, the\ndouble tap.\n\nSee also:\n\n * [TextField], a Material text field which uses this gesture detector.\n * [CupertinoTextField], a Cupertino text field which uses this gesture\n detector.", "detail": "", "kind": 7, "label": "TextSelectionGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexibleSpaceBarSettings", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides sizing and opacity information to a [FlexibleSpaceBar].\n\nSee also:\n\n * [FlexibleSpaceBar] which creates a flexible space bar.", "detail": "", "kind": 7, "label": "FlexibleSpaceBarSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LabeledGlobalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A global key with a debugging label.\n\nThe debug label is useful for documentation and for debugging. The label\ndoes not affect the key's identity.", "detail": "", "kind": 7, "label": "LabeledGlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPositionWithSingleContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scroll position that manages scroll activities for a single\n[ScrollContext].\n\nThis class is a concrete subclass of [ScrollPosition] logic that handles a\nsingle [ScrollContext], such as a [Scrollable]. An instance of this class\nmanages [ScrollActivity] instances, which change what content is visible in\nthe [Scrollable]'s [Viewport].\n\nSee also:\n\n * [ScrollPosition], which defines the underlying model for a position\n within a [Scrollable] but is agnostic as to how that position is\n changed.\n * [ScrollView] and its subclasses such as [ListView], which use\n [ScrollPositionWithSingleContext] to manage their scroll position.\n * [ScrollController], which can manipulate one or more [ScrollPosition]s,\n and which uses [ScrollPositionWithSingleContext] as its default class for\n scroll positions.", "detail": "", "kind": 7, "label": "ScrollPositionWithSingleContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlowingOverscrollIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual indication that a scroll view has overscrolled.\n\nA [GlowingOverscrollIndicator] listens for [ScrollNotification]s in order\nto control the overscroll indication. These notifications are typically\ngenerated by a [ScrollView], such as a [ListView] or a [GridView].\n\n[GlowingOverscrollIndicator] generates [OverscrollIndicatorNotification]\nbefore showing an overscroll indication. To prevent the indicator from\nshowing the indication, call [OverscrollIndicatorNotification.disallowGlow]\non the notification.\n\nCreated automatically by [ScrollBehavior.buildViewportChrome] on platforms\n(e.g., Android) that commonly use this type of overscroll indication.\n\nIn a [MaterialApp], the edge glow color is the [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "GlowingOverscrollIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverflowBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nSee also:\n\n * [RenderConstrainedOverflowBox] for details about how [OverflowBox] is\n rendered.\n * [SizedOverflowBox], a widget that is a specific size but passes its\n original constraints through to its child, which may then overflow.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], a box with a specified size.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "OverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragSelectionUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that's dragging to select text has moved again.\n\nThe first argument [startDetails] contains the details of the event that\ninitiated the dragging.\n\nThe second argument [updateDetails] contains the details of the current\npointer movement. It's the same as the one passed to [DragGestureRecognizer.onUpdate].\n\nThis signature is different from [GestureDragUpdateCallback] to make it\neasier for various text fields to use [TextSelectionGestureDetector] without\nhaving to store the start position.", "detail": "(DragStartDetails startDetails, DragUpdateDetails updateDetails) → void", "kind": 7, "label": "DragSelectionUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverWithKeepAliveWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for sliver that have [KeepAlive] children.", "detail": "", "kind": 7, "label": "SliverWithKeepAliveWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutChangedNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates that the layout of one of the descendants of the object receiving\nthis notification has changed in some way, and that therefore any\nassumptions about that layout are no longer valid.\n\nUseful if, for instance, you're trying to align multiple descendants.\n\nTo listen for notifications in a subtree, use a\n[NotificationListener<LayoutChangedNotification>].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].\n\nIn the widgets library, only the [SizeChangedLayoutNotifier] class and\n[Scrollable] classes dispatch this notification (specifically, they dispatch\n[SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).\nTransitions, in particular, do not. Changing one's layout in one's build\nfunction does not cause this notification to be dispatched automatically. If\nan ancestor expects to be notified for any layout change, make sure you\neither only use widgets that never change layout, or that notify their\nancestors when appropriate, or alternatively, dispatch the notifications\nyourself when appropriate.\n\nAlso, since this notification is sent when the layout is changed, it is only\nuseful for paint effects that depend on the layout. If you were to use this\nnotification to change the build, for instance, you would always be one\nframe behind, which would look really ugly and laggy.", "detail": "", "kind": 7, "label": "LayoutChangedNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatusTransitionWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that rebuilds when the given animation changes status.", "detail": "", "kind": 7, "label": "StatusTransitionWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's size.\n\nSimilar to the [Builder] widget except that the framework calls the [builder]\nfunction at layout time and provides the parent widget's constraints. This\nis useful when the parent constrains the child's size and doesn't depend on\nthe child's intrinsic size. The [LayoutBuilder]'s final size will match its\nchild's size.\n\n\nIf the child should be smaller than the parent, consider wrapping the child\nin an [Align] widget. If the child might want to be bigger, consider\nwrapping it in a [SingleChildScrollView].\n\nSee also:\n\n * [Builder], which calls a `builder` function at build time.\n * [StatefulBuilder], which passes its `builder` function a `setState` callback.\n * [CustomSingleChildLayout], which positions its child during layout.", "detail": "", "kind": 7, "label": "LayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScrollView] that creates custom scroll effects using slivers.\n\nA [CustomScrollView] lets you supply [slivers] directly to create various\nscrolling effects, such as lists, grids, and expanding headers. For example,\nto create a scroll view that contains an expanding app bar followed by a\nlist and a grid, use a list of three slivers: [SliverAppBar], [SliverList],\nand [SliverGrid].\n\n[Widget]s in these [slivers] must produce [RenderSliver] objects.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n\nThis sample code shows a scroll view that contains a flexible pinned app\nbar, a grid, and an infinite list.\n\n```dart\nCustomScrollView(\n slivers: <Widget>[\n const SliverAppBar(\n pinned: true,\n expandedHeight: 250.0,\n flexibleSpace: FlexibleSpaceBar(\n title: Text('Demo'),\n ),\n ),\n SliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n ),\n SliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n ),\n ],\n)\n```\n\n## Accessibility\n\nA [CustomScrollView] can allow Talkback/VoiceOver to make announcements\nto the user when the scroll state changes. For example, on Android an\nannouncement might be read as \"showing items 1 to 10 of 23\". To produce\nthis announcement, the scroll view needs three pieces of information:\n\n * The first visible child index.\n * The total number of children.\n * The total number of visible children.\n\nThe last value can be computed exactly by the framework, however the first\ntwo must be provided. Most of the higher-level scrollable widgets provide\nthis information automatically. For example, [ListView] provides each child\nwidget with a semantic index automatically and sets the semantic child\ncount to the length of the list.\n\nTo determine visible indexes, the scroll view needs a way to associate the\ngenerated semantics of each scrollable item with a semantic index. This can\nbe done by wrapping the child widgets in an [IndexedSemantics].\n\nThis semantic index is not necessarily the same as the index of the widget in\nthe scrollable, because some widgets may not contribute semantic\ninformation. Consider a [new ListView.separated()]: every other widget is a\ndivider with no semantic information. In this case, only odd numbered\nwidgets have a semantic index (equal to the index ~/ 2). Furthermore, the\ntotal number of children in this example would be half the number of\nwidgets. (The [new ListView.separated()] constructor handles this\nautomatically; this is only used here as an example.)\n\nThe total number of visible children can be provided by the constructor\nparameter `semanticChildCount`. This should always be the same as the\nnumber of widgets wrapped in [IndexedSemantics].\n\nSee also:\n\n * [SliverList], which is a sliver that displays linear list of children.\n * [SliverFixedExtentList], which is a more efficient sliver that displays\n linear list of children that have the same extent along the scroll axis.\n * [SliverGrid], which is a sliver that displays a 2D array of children.\n * [SliverPadding], which is a sliver that adds blank space around another\n sliver.\n * [SliverAppBar], which is a sliver that displays a header that can expand\n and float as the scroll view scrolls.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].\n * [IndexedSemantics], which allows annotating child lists with an index\n for scroll announcements.", "detail": "", "kind": 7, "label": "CustomScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Typography", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The color and geometry [TextThemes] for Material apps.\n\nThe text themes provided by the overall [Theme], like\n[ThemeData.textTheme], are based on the current locale's\n[MaterialLocalizations.scriptCategory] and are created\nby merging a color text theme, [black] or [white]\nand a geometry text theme, one of [englishLike], [dense],\nor [tall], depending on the locale.\n\nTo lookup a localized text theme use\n`Theme.of(context).textTheme` or\n`Theme.of(context).primaryTextTheme` or\n`Theme.of(context).accentTextTheme`.\n\nThe color text themes are [blackMountainView],\n[whiteMountainView], and [blackCupertino] and [whiteCupertino]. The\nMountain View theme [TextStyles] are based on the Roboto fonts and the\nCupertino themes are based on the San Francisco fonts.\n\nTwo sets of geometry themes are provided: 2014 and 2018. The 2014 themes\ncorrespond to the original version of the Material Design spec and are\nthe defaults. The 2018 themes correspond the second iteration of the\nspecification and feature different font sizes, font weights, and\nletter spacing values.\n\nBy default, [ThemeData.typography] is\n`Typography(platform: platform)` which uses [englishLike2014],\n[dense2014] and [tall2014]. To use the 2018 text theme\ngeometries, specify a typography value:\n\n```dart\nTypography(\n platorm: platform,\n englishLike: Typography.englishLike2018,\n dense: Typography.dense2018,\n tall: Typography.tall2018,\n)\n```\n\nSee also:\n\n * [ThemeData.typography], which can be used to configure the\n text themes used to create [ThemeData.textTheme],\n [ThemeData.primaryTextTheme], [ThemeData.accentTextTheme].\n * <https://material.io/design/typography/>", "detail": "", "kind": 7, "label": "Typography" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexibleSpaceBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The part of a material design [AppBar] that expands and collapses.\n\nMost commonly used in in the [SliverAppBar.flexibleSpace] field, a flexible\nspace bar expands and contracts as the app scrolls so that the [AppBar]\nreaches from the top of the app to the top of the scrolling contents of the\napp.\n\nThe widget that sizes the [AppBar] must wrap it in the widget returned by\n[FlexibleSpaceBar.createSettings], to convey sizing information down to the\n[FlexibleSpaceBar].\n\nSee also:\n\n * [SliverAppBar], which implements the expanding and contracting.\n * [AppBar], which is used by [SliverAppBar].\n * <https://material.io/design/components/app-bars-top.html#behavior>", "detail": "", "kind": 7, "label": "FlexibleSpaceBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputDecorator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the appearance of a Material Design text field.\n\n[InputDecorator] displays the visual elements of a Material Design text\nfield around its input [child]. The visual elements themselves are defined\nby an [InputDecoration] object and their layout and appearance depend\non the `baseStyle`, `textAlign`, `isFocused`, and `isEmpty` parameters.\n\n[TextField] uses this widget to decorate its [EditableText] child.\n\n[InputDecorator] can be used to create widgets that look and behave like a\n[TextField] but support other kinds of input.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [TextField], which uses an [InputDecorator] to display a border,\n labels, and icons, around its [EditableText] child.\n * [Decoration] and [DecoratedBox], for drawing arbitrary decorations\n around other widgets.", "detail": "", "kind": 7, "label": "InputDecorator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays a [dart:ui.Image] directly.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nThis widget is rarely used directly. Instead, consider using [Image].", "detail": "", "kind": 7, "label": "RawImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomAppBarTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [BottomAppBar] widgets.\n\nDescendant widgets obtain the current [BottomAppBarTheme] object using\n`BottomAppBarTheme.of(context)`. Instances of [BottomAppBarTheme] can be\ncustomized with [BottomAppBarTheme.copyWith].\n\nTypically a [BottomAppBarTheme] is specified as part of the overall [Theme]\nwith [ThemeData.bottomAppBarTheme].\n\nAll [BottomAppBarTheme] properties are `null` by default. When null, the\n[BottomAppBar] constructor provides defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "BottomAppBarTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageTransitionsBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a horizontal [MaterialPageRoute]\npage transition animation that matches native iOS page transitions.\n\nSee also:\n\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.", "detail": "", "kind": 7, "label": "CupertinoPageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDivider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A one device pixel thick vertical line, with padding on either\nside.\n\nIn the material design language, this represents a divider.\n\nDividers can be used in lists, [Drawer]s, and elsewhere to separate content\nhorizontally. To create a one-pixel divider between items in a list,\nconsider using [ListTile.divideTiles], which is optimized for this case.\n\nThe box's total width is controlled by [width]. The appropriate\npadding is automatically computed from the width.\n\nSee also:\n\n * [PopupMenuDivider], which is the equivalent but for popup menus.\n * [ListTile.divideTiles], another approach to dividing widgets in a list.\n * <https://material.io/design/components/dividers.html>", "detail": "", "kind": 7, "label": "VerticalDivider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSingleChildLayout", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.\n\nSee also:\n\n * [SingleChildLayoutDelegate], which controls the layout of the child.\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [FractionallySizedBox], which sizes its child based on a fraction of its own\n size and positions the child according to an [Alignment] value.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.", "detail": "", "kind": 7, "label": "CustomSingleChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates that the subtree through which this notification bubbles must be\nkept alive even if it would normally be discarded as an optimization.\n\nFor example, a focused text field might fire this notification to indicate\nthat it should not be disposed even if the user scrolls the field off\nscreen.\n\nEach [KeepAliveNotification] is configured with a [handle] that consists of\na [Listenable] that is triggered when the subtree no longer needs to be kept\nalive.\n\nThe [handle] should be triggered any time the sending widget is removed from\nthe tree (in [State.deactivate]). If the widget is then rebuilt and still\nneeds to be kept alive, it should immediately send a new notification\n(possible with the very same [Listenable]) during build.\n\nThis notification is listened to by the [AutomaticKeepAlive] widget, which\nis added to the tree automatically by [SliverList] (and [ListView]) and\n[SliverGrid] (and [GridView]) widgets.\n\nFailure to trigger the [handle] in the manner described above will likely\ncause the [AutomaticKeepAlive] to lose track of whether the widget should be\nkept alive or not, leading to memory leaks or lost data. For example, if the\nwidget that requested keep-alive is removed from the subtree but doesn't\ntrigger its [Listenable] on the way out, then the subtree will continue to\nbe kept alive until the list itself is disposed. Similarly, if the\n[Listenable] is triggered while the widget needs to be kept alive, but a new\n[KeepAliveNotification] is not immediately sent, then the widget risks being\ngarbage collected while it wants to be kept alive.\n\nIt is an error to use the same [handle] in two [KeepAliveNotification]s\nwithin the same [AutomaticKeepAlive] without triggering that [handle] before\nthe second notification is sent.\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses\n[KeepAliveNotification] internally.", "detail": "", "kind": 7, "label": "KeepAliveNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElementVisitor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback to [BuildContext.visitChildElements].\n\nThe argument is the child being visited.\n\nIt is safe to call `element.visitChildElements` reentrantly within\nthis callback.", "detail": "(Element element) → void", "kind": 7, "label": "ElementVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListenerCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for [Notification] listeners.\n\nReturn true to cancel the notification bubbling. Return false to allow the\nnotification to continue to be dispatched to further ancestors.\n\nUsed by [NotificationListener.onNotification].", "detail": "(T notification) → bool", "kind": 7, "label": "NotificationListenerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActionChip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design action chip.\n\nAction chips are a set of options which trigger an action related to primary\ncontent. Action chips should appear dynamically and contextually in a UI.\n\nAction chips can be tapped to trigger an action or show progress and\nconfirmation. They cannot be disabled; if the action is not applicable, the\nchip should not be included in the interface. (This contrasts with buttons,\nwhere unavailable choices are usually represented as disabled controls.)\n\nAction chips are displayed after primary content, such as below a card or\npersistently at the bottom of a screen.\n\nThe material button widgets, [RaisedButton], [FlatButton], and\n[OutlineButton], are an alternative to action chips, which should appear\nstatically and consistently in a UI.\n\nRequires one of its ancestors to be a [Material] widget.\n\n\n```dart\nActionChip(\n avatar: CircleAvatar(\n backgroundColor: Colors.grey.shade800,\n child: Text('AB'),\n ),\n label: Text('Aaron Burr'),\n onPressed: () {\n print(\"If you stand for nothing, Burr, what’ll you fall for?\");\n }\n)\n```\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "ActionChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserScrollNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that the user has changed the direction in which they are\nscrolling.\n\nSee also:\n\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "UserScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionTile", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single-line [ListTile] with a trailing button that expands or collapses\nthe tile to reveal or hide the [children].\n\nThis widget is typically used with [ListView] to create an\n\"expand / collapse\" list entry. When used with scrolling widgets like\n[ListView], a unique [PageStorageKey] must be specified to enable the\n[ExpansionTile] to save and restore its expanded state when it is scrolled\nin and out of view.\n\nSee also:\n\n * [ListTile], useful for creating expansion tile [children] when the\n expansion tile represents a sublist.\n * The \"Expand/collapse\" section of\n <https://material.io/guidelines/components/lists-controls.html>.", "detail": "", "kind": 7, "label": "ExpansionTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Align", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that aligns its child within itself and optionally sizes itself\nbased on the child's size.\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\n## How it works\n\nThe [alignment] property describes a point in the `child`'s coordinate system\nand a different point in the coordinate system of this widget. The [Align]\nwidget positions the `child` such that both points are lined up on top of\neach other.\n\nThe [Align] widget in this example uses one of the defined constants from\n[Alignment], [topRight]. This places the [FlutterLogo] in the top right corner\nof the parent blue [Container].\n\n![A blue square container with the Flutter logo in the top right corner.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_constant.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment.topRight,\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [Alignment] used in the following example defines a single point:\n\n * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height\n of [FlutterLogo]/2 + height of [FlutterLogo]/2) = (36.0, 48.0).\n\nThe [Alignment] class uses a coordinate system with an origin in the center\nof the [Container], as shown with the [Icon] above. [Align] will place the\n[FlutterLogo] at (36.0, 48.0) according to this coordinate system.\n\n![A blue square container with the Flutter logo positioned according to the\nAlignment specified above. A point is marked at the center of the container\nfor the origin of the Alignment coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_alignment.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [FractionalOffset] used in the following example defines two points:\n\n * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0)\n in the coordinate system of the blue container.\n * (0.2 * width of [Align], 0.6 * height of [Align]) = (24.0, 72.0) in the\n coordinate system of the [Align] widget.\n\nThe [Align] widget positions the [FlutterLogo] such that the two points are on\ntop of each other. In this example, the top left of the [FlutterLogo] will\nbe placed at (24.0, 72.0) - (12.0, 36.0) = (12.0, 36.0) from the top left of\nthe [Align] widget.\n\nThe [FractionalOffset] class uses a coordinate system with an origin in the top-left\ncorner of the [Container] in difference to the center-oriented system used in\nthe example above with [Alignment].\n\n![A blue square container with the Flutter logo positioned according to the\nFractionalOffset specified above. A point is marked at the top left corner\nof the container for the origin of the FractionalOffset coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_fractional_offset.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: FractionalOffset(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Center], which is the same as [Align] but with the [alignment] always\n set to [Alignment.center].\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Align" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that creates a widget for a given index, e.g., in a\nlist.\n\nUsed by [ListView.builder] and other APIs that use lazily-generated widgets.\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [TransitionBuilder], which is similar but also takes a child.", "detail": "(BuildContext context, int index) → Widget", "kind": 7, "label": "IndexedWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldValidator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for validating a form field.\n\nReturns an error string to display if the input is invalid, or null\notherwise.\n\nUsed by [FormField.validator].", "detail": "(T value) → String", "kind": 7, "label": "FormFieldValidator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotationTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the rotation of a widget.\n\nHere's an illustration of the [RotationTransition] widget, with it's [turns]\nanimated by a [CurvedAnimation] set to [Curves.elasticOut]:\nSee also:\n\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "RotationTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Stream].\n\n\nWidget rebuilding is scheduled by each interaction, using [State.setState],\nbut is otherwise decoupled from the timing of the stream. The [builder]\nis called at the discretion of the Flutter pipeline, and will thus receive a\ntiming-dependent sub-sequence of the snapshots that represent the\ninteraction with the stream.\n\nAs an example, when interacting with a stream producing the integers\n0 through 9, the [builder] may be called with any ordered sub-sequence\nof the following snapshots that includes the last one (the one with\nConnectionState.done):\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 0)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 1)`\n* ...\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 9)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.done, 9)`\n\nThe actual sequence of invocations of the [builder] depends on the relative\ntiming of events produced by the stream and the build rate of the Flutter\npipeline.\n\nChanging the [StreamBuilder] configuration to another stream during event\ngeneration introduces snapshot pairs of the form:\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.none, 5)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, 5)`\n\nThe latter will be produced only when the new stream is non-null, and the\nformer only when the old stream is non-null.\n\nThe stream may produce errors, resulting in snapshots of the form:\n\n* `new AsyncSnapshot<int>.withError(ConnectionState.active, 'some error')`\n\nThe data and error fields of snapshots produced are only changed when the\nstate is `ConnectionState.active`.\n\nThe initial snapshot data can be controlled by specifying [initialData].\nThis should be used to ensure that the first frame has the expected value,\nas the builder will always be called before the stream listener has a chance\nto be processed.\n\n\nThis sample shows a [StreamBuilder] configuring a text label to show the\nlatest bid received for a lot in an auction. Assume the `_lot` field is\nset by a selector elsewhere in the UI.\n\n```dart\nStreamBuilder<int>(\n stream: _lot?.bids, // a Stream<int> or null\n builder: (BuildContext context, AsyncSnapshot<int> snapshot) {\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n switch (snapshot.connectionState) {\n case ConnectionState.none: return Text('Select lot');\n case ConnectionState.waiting: return Text('Awaiting bids...');\n case ConnectionState.active: return Text('\\$${snapshot.data}');\n case ConnectionState.done: return Text('\\$${snapshot.data} (closed)');\n }\n return null; // unreachable\n },\n)\n```\n\nSee also:\n\n * [ValueListenableBuilder], which wraps a [ValueListenable] instead of a\n [Stream].\n * [StreamBuilderBase], which supports widget building based on a computation\n that spans all interactions made with the stream.", "detail": "", "kind": 7, "label": "StreamBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AboutDialog", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An about box. This is a dialog box with the application's icon, name,\nversion number, and copyright, plus a button to show licenses for software\nused by the application.\n\nTo show an [AboutDialog], use [showAboutDialog].\n\nIf the application has a [Drawer], the [AboutListTile] widget can make the\nprocess of showing an about dialog simpler.\n\nThe [AboutDialog] shown by [showAboutDialog] includes a button that calls\n[showLicensePage].\n\nThe licenses shown on the [LicensePage] are those returned by the\n[LicenseRegistry] API, which can be used to add more licenses to the list.", "detail": "", "kind": 7, "label": "AboutDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshIndicatorState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Contains the state for a [RefreshIndicator]. This class can be used to\nprogrammatically show the refresh indicator, see the [show] method.", "detail": "", "kind": 7, "label": "RefreshIndicatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserAccountsDrawerHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design [Drawer] header that identifies the app's user.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [DrawerHeader], for a drawer header that doesn't show user accounts.\n * <https://material.io/design/components/navigation-drawer.html#anatomy>", "detail": "", "kind": 7, "label": "UserAccountsDrawerHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialButtonWithIconMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The type of [MaterialButton]s created with [RaisedButton.icon], [FlatButton.icon],\nand [OutlineButton.icon].\n\nThis mixin only exists to give the \"label and icon\" button widgets a distinct\ntype for the sake of [ButtonTheme].", "detail": "", "kind": 7, "label": "MaterialButtonWithIconMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMask", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that applies a mask generated by a [Shader] to its child.\n\nFor example, [ShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.\n\n\nThis example makes the text look like it is on fire:\n\n```dart\nShaderMask(\n shaderCallback: (Rect bounds) {\n return RadialGradient(\n center: Alignment.topLeft,\n radius: 1.0,\n colors: <Color>[Colors.yellow, Colors.deepOrange.shade900],\n tileMode: TileMode.mirror,\n ).createShader(bounds);\n },\n child: const Text('I’m burning the memories'),\n)\n```\n\nSee also:\n\n * [Opacity], which can apply a uniform alpha effect to its child.\n * [CustomPaint], which lets you draw directly on the canvas.\n * [DecoratedBox], for another approach at decorating child widgets.\n * [BackdropFilter], which applies an image filter to the background.", "detail": "", "kind": 7, "label": "ShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Coordinates tab selection between a [TabBar] and a [TabBarView].\n\nThe [index] property is the index of the selected tab and the [animation]\nrepresents the current scroll positions of the tab bar and the tar bar view.\nThe selected tab's index can be changed with [animateTo].\n\nA stateful widget that builds a [TabBar] or a [TabBarView] can create\na [TabController] and share it directly.\n\nWhen the [TabBar] and [TabBarView] don't have a convenient stateful\nancestor, a [TabController] can be shared by providing a\n[DefaultTabController] inherited widget.\n\n\nThis widget introduces a [Scaffold] with an [AppBar] and a [TabBar].\n\n```dart\nclass MyTabbedPage extends StatefulWidget {\n const MyTabbedPage({ Key key }) : super(key: key);\n @override\n _MyTabbedPageState createState() => _MyTabbedPageState();\n}\n\nclass _MyTabbedPageState extends State<MyTabbedPage> with SingleTickerProviderStateMixin {\n final List<Tab> myTabs = <Tab>[\n Tab(text: 'LEFT'),\n Tab(text: 'RIGHT'),\n ];\n\n TabController _tabController;\n\n @override\n void initState() {\n super.initState();\n _tabController = TabController(vsync: this, length: myTabs.length);\n }\n\n @override\n void dispose() {\n _tabController.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n bottom: TabBar(\n controller: _tabController,\n tabs: myTabs,\n ),\n ),\n body: TabBarView(\n controller: _tabController,\n children: myTabs.map((Tab tab) {\n return Center(child: Text(tab.text));\n }).toList(),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "TabController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).", "detail": "(TextSelection selection, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTileStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the title font used for [ListTile] descendants of a [ListTileTheme].\n\nList tiles that appear in a [Drawer] use the theme's [TextTheme.body2]\ntext style, which is a little smaller than the theme's [TextTheme.subhead]\ntext style, which is used by default.", "detail": "", "kind": 13, "label": "ListTileStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialAccentColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a single accent color as well a swatch of four shades of the\naccent color.\n\nThe color's shades are referred to by index, the colors with smaller\nindices are lighter, larger indices are darker. There are four valid\nindices: 100, 200, 400, and 700. The value of this color should be the\nsame as the value of index 200 and [shade200].\n\nSee also:\n\n * [Colors], which defines all of the standard material colors.\n * <https://material.io/go/design-theming#color-color-schemes>", "detail": "", "kind": 7, "label": "MaterialAccentColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box in which a single widget can be scrolled.\n\nThis widget is useful when you have a single box that will normally be\nentirely visible, for example a clock face in a time picker, but you need to\nmake sure it can be scrolled if the container gets too small in one axis\n(the scroll direction).\n\nIt is also useful if you need to shrink-wrap in both axes (the main\nscrolling direction as well as the cross axis), as one might see in a dialog\nor pop-up menu. In that case, you might pair the [SingleChildScrollView]\nwith a [ListBody] child.\n\nWhen you have a list of children and do not require cross-axis\nshrink-wrapping behavior, for example a scrolling list that is always the\nwidth of the screen, consider [ListView], which is vastly more efficient\nthat a [SingleChildScrollView] containing a [ListBody] or [Column] with\nmany children.\n\n## Sample code: Using [SingleChildScrollView] with a [Column]\n\nSometimes a layout is designed around the flexible properties of a\n[Column], but there is the concern that in some cases, there might not\nbe enough room to see the entire contents. This could be because some\ndevices have unusually small screens, or because the application can\nbe used in landscape mode where the aspect ratio isn't what was\noriginally envisioned, or because the application is being shown in a\nsmall window in split-screen mode. In any case, as a result, it might\nmake sense to wrap the layout in a [SingleChildScrollView].\n\nSimply doing so, however, usually results in a conflict between the [Column],\nwhich typically tries to grow as big as it can, and the [SingleChildScrollView],\nwhich provides its children with an infinite amount of space.\n\nTo resolve this apparent conflict, there are a couple of techniques, as\ndiscussed below. These techniques should only be used when the content is\nnormally expected to fit on the screen, so that the lazy instantiation of\na sliver-based [ListView] or [CustomScrollView] is not expected to provide\nany performance benefit. If the viewport is expected to usually contain\ncontent beyond the dimensions of the screen, then [SingleChildScrollView]\nwould be very expensive.\n\n### Centering, spacing, or aligning fixed-height content\n\nIf the content has fixed (or intrinsic) dimensions but needs to be spaced out,\ncentered, or otherwise positioned using the [Flex] layout model of a [Column],\nthe following technique can be used to provide the [Column] with a minimum\ndimension while allowing it to shrink-wrap the contents when there isn't enough\nroom to apply these spacing or alignment needs.\n\nA [LayoutBuilder] is used to obtain the size of the viewport (implicitly via\nthe constraints that the [SingleChildScrollView] sees, since viewports\ntypically grow to fit their maximum height constraint). Then, inside the\nscroll view, a [ConstrainedBox] is used to set the minimum height of the\n[Column].\n\nThe [Column] has no [Expanded] children, so rather than take on the infinite\nheight from its [BoxConstraints.maxHeight], (the viewport provides no maximum height\nconstraint), it automatically tries to shrink to fit its children. It cannot\nbe smaller than its [BoxConstraints.minHeight], though, and It therefore\nbecomes the bigger of the minimum height provided by the\n[ConstrainedBox] and the sum of the heights of the children.\n\nIf the children aren't enough to fit that minimum size, the [Column] ends up\nwith some remaining space to allocate as specified by its\n[Column.mainAxisAlignment] argument.\n\nIn this example, the children are spaced out equally, unless there's no more\nroom, in which case they stack vertically and scroll.\n\nWhen using this technique, [Expanded] and [Flexible] are not useful, because\nin both cases the \"available space\" is infinite (since this is in a viewport).\nThe next section describes a technique for providing a maximum height constraint.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: Column(\n mainAxisSize: MainAxisSize.min,\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Container(\n // Another fixed-height child.\n color: const Color(0xff008000), // Green\n height: 120.0,\n ),\n ],\n ),\n ),\n );\n },\n );\n}\n```\n\n### Expanding content to fit the viewport\n\nThe following example builds on the previous one. In addition to providing a\nminimum dimension for the child [Column], an [IntrinsicHeight] widget is used\nto force the column to be exactly as big as its contents. This constraint\ncombines with the [ConstrainedBox] constraints discussed previously to ensure\nthat the column becomes either as big as viewport, or as big as the contents,\nwhichever is biggest.\n\nBoth constraints must be used to get the desired effect. If only the\n[IntrinsicHeight] was specified, then the column would not grow to fit the\nentire viewport when its children were smaller than the whole screen. If only\nthe size of the viewport was used, then the [Column] would overflow if the\nchildren were bigger than the viewport.\n\nThe widget that is to grow to fit the remaining space so provided is wrapped\nin an [Expanded] widget.\n\nThis technique is quite expensive, as it more or less requires that the contents\nof the viewport be laid out twice (once to find their intrinsic dimensions, and\nonce to actually lay them out). The number of widgets within the column should\ntherefore be kept small. Alternatively, subsets of the children that have known\ndimensions can be wrapped in a [SizedBox] that has tight vertical constraints,\nso that the intrinsic sizing algorithm can short-circuit the computation when it\nreaches those parts of the subtree.\n\nIn this example, the column becomes either as big as viewport, or as big as\nthe contents, whichever is biggest.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: IntrinsicHeight(\n child: Column(\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Expanded(\n // A flexible child that will grow to fit the viewport but\n // still be at least as big as necessary to fit its contents.\n child: Container(\n color: const Color(0xff800000), // Red\n height: 120.0,\n ),\n ),\n ],\n ),\n ),\n ),\n );\n },\n );\n}\n```\n\nSee also:\n\n * [ListView], which handles multiple children in a scrolling list.\n * [GridView], which handles multiple children in a scrolling grid.\n * [PageView], for a scrollable that works page by page.\n * [Scrollable], which handles arbitrary scrolling effects.", "detail": "", "kind": 7, "label": "SingleChildScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilderBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for widgets that build themselves based on interaction with\na specified [Stream].\n\nA [StreamBuilderBase] is stateful and maintains a summary of the interaction\nso far. The type of the summary and how it is updated with each interaction\nis defined by sub-classes.\n\nExamples of summaries include:\n\n* the running average of a stream of integers;\n* the current direction and speed based on a stream of geolocation data;\n* a graph displaying data points from a stream.\n\nIn general, the summary is the result of a fold computation over the data\nitems and errors received from the stream along with pseudo-events\nrepresenting termination or change of stream. The initial summary is\nspecified by sub-classes by overriding [initial]. The summary updates on\nreceipt of stream data and errors are specified by overriding [afterData] and\n[afterError], respectively. If needed, the summary may be updated on stream\ntermination by overriding [afterDone]. Finally, the summary may be updated\non change of stream by overriding [afterDisconnected] and [afterConnected].\n\n`T` is the type of stream events.\n\n`S` is the type of interaction summary.\n\nSee also:\n\n * [StreamBuilder], which is specialized for the case where only the most\n recent interaction is needed for widget building.", "detail": "", "kind": 7, "label": "StreamBuilderBase" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryConstructor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.constructor].", "detail": "() → T", "kind": 7, "label": "GestureRecognizerFactoryConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state for a [Navigator] widget.", "detail": "", "kind": 7, "label": "NavigatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Visibility", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether to show or hide a child.\n\nBy default, the [visible] property controls whether the [child] is included\nin the subtree or not; when it is not [visible], the [replacement] child\n(typically a zero-sized box) is included instead.\n\nA variety of flags can be used to tweak exactly how the child is hidden.\n(Changing the flags dynamically is discouraged, as it can cause the [child]\nsubtree to be rebuilt, with any state in the subtree being discarded.\nTypically, only the [visible] flag is changed dynamically.)\n\nThese widgets provide some of the facets of this one:\n\n * [Opacity], which can stop its child from being painted.\n * [Offstage], which can stop its child from being laid out or painted.\n * [TickerMode], which can stop its child from being animated.\n * [ExcludeSemantics], which can hide the child from accessibility tools.\n * [IgnorePointer], which can disable touch interactions with the child.\n\nUsing this widget is not necessary to hide children. The simplest way to\nhide a child is just to not include it, or, if a child _must_ be given (e.g.\nbecause the parent is a [StatelessWidget]) then to use [SizedBox.shrink]\ninstead of the child that would otherwise be included.\n\nSee also:\n\n * [AnimatedSwitcher], which can fade from one child to the next as the\n subtree changes.\n * [AnimatedCrossFade], which can fade between two specific children.", "detail": "", "kind": 7, "label": "Visibility" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaddleSliderValueIndicatorShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s value indicator.\n\nSee also:\n\n * [Slider], which includes a value indicator defined by this shape.\n * [SliderTheme], which can be used to configure the slider value indicator\n of all sliders in a widget subtree.", "detail": "", "kind": 7, "label": "PaddleSliderValueIndicatorShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a path.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\n[PhysicalModel] does the same but only supports shapes that can be expressed\nas rectangles with rounded corners.\n\nSee also:\n\n * [ShapeBorderClipper], which converts a [ShapeBorder] to a [CustomerClipper], as\n needed by this widget.", "detail": "", "kind": 7, "label": "PhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialBasedCupertinoThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [CupertinoThemeData] that defers unspecified theme attributes to an\nupstream Material [ThemeData].\n\nThis type of [CupertinoThemeData] is used by the Material [Theme] to\nharmonize the [CupertinoTheme] with the material theme's colors and text\nstyles.\n\nIn the most basic case, [ThemeData]'s `cupertinoOverrideTheme` is null and\nand descendant Cupertino widgets' styling is derived from the Material theme.\n\nTo override individual parts of the Material-derived Cupertino styling,\n`cupertinoOverrideTheme`'s construction parameters can be used.\n\nTo completely decouple the Cupertino styling from Material theme derivation,\nanother [CupertinoTheme] widget can be inserted as a descendant of the\nMaterial [Theme]. On a [MaterialApp], this can be done using the `builder`\nparameter on the constructor.\n\nSee also:\n\n * [CupertinoThemeData], whose null constructor parameters default to\n reasonable iOS styling defaults rather than harmonizing with a Material\n theme.\n * [Theme], widget which inserts a [CupertinoTheme] with this\n [MaterialBasedCupertinoThemeData].", "detail": "", "kind": 7, "label": "MaterialBasedCupertinoThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildOwner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manager class for the widgets framework.\n\nThis class tracks which widgets need rebuilding, and handles other tasks\nthat apply to widget trees as a whole, such as managing the inactive element\nlist for the tree and triggering the \"reassemble\" command when necessary\nduring hot reload when debugging.\n\nThe main build owner is typically owned by the [WidgetsBinding], and is\ndriven from the operating system along with the rest of the\nbuild/layout/paint pipeline.\n\nAdditional build owners can be built to manage off-screen widget trees.\n\nTo assign a build owner to a tree, use the\n[RootRenderObjectElement.assignOwner] method on the root element of the\nwidget tree.", "detail": "", "kind": 7, "label": "BuildOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderTickMarkShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for slider tick mark shapes.\n\nCreate a subclass of this if you would like a custom slider tick mark shape.\nThis is a simplified version of [SliderComponentShape] with a\n[SliderThemeData] passed when getting the preferred size.\n\nThe tick mark painting can be skipped by specifying [noTickMark] for\n[SliderThemeData.tickMarkShape].\n\nSee also:\n\n * [RoundSliderTickMarkShape] for a simple example of a tick mark shape.\n * [SliderTrackShape] for the base class for custom a track shape.\n * [SliderComponentShape] for the base class for custom a component shape.", "detail": "", "kind": 7, "label": "SliderTickMarkShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Stack] of entries that can be managed independently.\n\nOverlays let independent child widgets \"float\" visual elements on top of\nother widgets by inserting them into the overlay's [Stack]. The overlay lets\neach of these widgets manage their participation in the overlay using\n[OverlayEntry] objects.\n\nAlthough you can create an [Overlay] directly, it's most common to use the\noverlay created by the [Navigator] in a [WidgetsApp] or a [MaterialApp]. The\nnavigator uses its overlay to manage the visual appearance of its routes.\n\nSee also:\n\n * [OverlayEntry].\n * [OverlayState].\n * [WidgetsApp].\n * [MaterialApp].", "detail": "", "kind": 7, "label": "Overlay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the color, opacity, and size of icons.\n\nUsed by [IconTheme] to control the color, opacity, and size of icons in a\nwidget subtree.\n\nTo obtain the current icon theme, use [IconTheme.of]. To convert an icon\ntheme to a version with all the fields filled in, use [new\nIconThemeData.fallback].", "detail": "", "kind": 7, "label": "IconThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for sliver that have multiple box children.\n\nHelps subclasses build their children lazily using a [SliverChildDelegate].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedAlign", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Align] which automatically transitions the child's\nposition over a given duration whenever the given [alignment] changes.\n\nHere's an illustration of what this can look like, using a [curve] of\n[Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedPadding], which can animate the padding instead of the\n alignment.\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.", "detail": "", "kind": 7, "label": "AnimatedAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [ShapeBorder]s.\n\nThis class specializes the interpolation of [Tween] to use [ShapeBorder.lerp].", "detail": "", "kind": 7, "label": "ShapeBorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragAnchor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where the [Draggable] should be anchored during a drag.", "detail": "", "kind": 13, "label": "DragAnchor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A general-purpose widget for building animations.\n\nAnimatedBuilder is useful for more complex widgets that wish to include\nan animation as part of a larger build function. To use AnimatedBuilder,\nsimply construct the widget and pass it a builder function.\n\nFor simple cases without additional state, consider using\n[AnimatedWidget].\n\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nanimation, it's more efficient to build that subtree once instead of\nrebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\nAnimatedBuilder will pass it back to your builder function so that you\ncan incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedBuilder] and makes use of the\n[child] feature to avoid having to rebuild the [Container] each time.\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return AnimatedBuilder(\n animation: _controller,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n builder: (BuildContext context, Widget child) {\n return Transform.rotate(\n angle: _controller.value * 2.0 * math.pi,\n child: child,\n );\n },\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "AnimatedBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnconstrainedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that imposes no constraints on its child, allowing it to render\nat its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This container will then attempt\nto adopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the container, a warning will be\nprinted on the console, and black and yellow striped areas will appear where\nthe overflow occurs.\n\nSee also:\n\n * [ConstrainedBox], for a box which imposes constraints on its child.\n * [Align], which loosens the constraints given to the child rather than\n removing them entirely.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow\n the parent.", "detail": "", "kind": 7, "label": "UnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single list of children. (This superclass only provides the\nstorage for that child list, it doesn't actually provide the updating\nlogic.)", "detail": "", "kind": 7, "label": "MultiChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a callback that verifies that it's OK to call [Navigator.pop].\n\nUsed by [Form.onWillPop], [ModalRoute.addScopedWillPopCallback],\n[ModalRoute.removeScopedWillPopCallback], and [WillPopScope].", "detail": "() → Future<bool>", "kind": 7, "label": "WillPopCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedOverflowBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is a specific size but passes its original constraints\nthrough to its child, which may then overflow.\n\nSee also:\n\n * [OverflowBox], A widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Switch", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design switch.\n\nUsed to toggle the on/off state of a single setting.\n\nThe switch itself does not maintain any state. Instead, when the state of\nthe switch changes, the widget calls the [onChanged] callback. Most widgets\nthat use a switch will listen for the [onChanged] callback and rebuild the\nswitch with a new [value] to update the visual appearance of the switch.\n\nIf the [onChanged] callback is null, then the switch will be disabled (it\nwill not respond to input). A disabled switch's thumb and track are rendered\nin shades of grey by default. The default appearance of a disabled switch\ncan be overridden with [inactiveThumbColor] and [inactiveTrackColor].\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [SwitchListTile], which combines this widget with a [ListTile] so that\n you can give the switch a label.\n * [Checkbox], another widget with similar semantics.\n * [Radio], for selecting among a set of explicit values.\n * [Slider], for selecting a value in a range.\n * <https://material.io/design/components/selection-controls.html#switches>", "detail": "", "kind": 7, "label": "Switch" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current state of a [FormField]. Passed to the [FormFieldBuilder] method\nfor use in constructing the form field's widget.", "detail": "", "kind": 7, "label": "FormFieldState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that applies a filter to the existing painted content and then\npaints [child].\n\nThe filter will be applied to all the area within its parent or ancestor\nwidget's clip. If there's no clip, the filter will be applied to the full\nscreen.\n\n\nIf the [BackdropFilter] needs to be applied to an area that exactly matches\nits child, wraps the [BackdropFilter] with a clip widget that clips exactly\nto that child.\n\n```dart\nStack(\n fit: StackFit.expand,\n children: <Widget>[\n Text('0' * 10000),\n Center(\n child: ClipRect( // <-- clips to the 200x200 [Container] below\n child: BackdropFilter(\n filter: ui.ImageFilter.blur(\n sigmaX: 5.0,\n sigmaY: 5.0,\n ),\n child: Container(\n alignment: Alignment.center,\n width: 200.0,\n height: 200.0,\n child: Text('Hello World'),\n ),\n ),\n ),\n ),\n ],\n)\n```\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.\n\nSee also:\n\n * [DecoratedBox], which draws a background under (or over) a widget.\n * [Opacity], which changes the opacity of the widget itself.", "detail": "", "kind": 7, "label": "BackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Notification] related to scrolling.\n\n[Scrollable] widgets notify their ancestors about scrolling-related changes.\nThe notifications have the following lifecycle:\n\n * A [ScrollStartNotification], which indicates that the widget has started\n scrolling.\n * Zero or more [ScrollUpdateNotification]s, which indicate that the widget\n has changed its scroll position, mixed with zero or more\n [OverscrollNotification]s, which indicate that the widget has not changed\n its scroll position because the change would have caused its scroll\n position to go outside its scroll bounds.\n * Interspersed with the [ScrollUpdateNotification]s and\n [OverscrollNotification]s are zero or more [UserScrollNotification]s,\n which indicate that the user has changed the direction in which they are\n scrolling.\n * A [ScrollEndNotification], which indicates that the widget has stopped\n scrolling.\n * A [UserScrollNotification], with a [UserScrollNotification.direction] of\n [ScrollDirection.idle].\n\nNotifications bubble up through the tree, which means a given\n[NotificationListener] will receive notifications for all descendant\n[Scrollable] widgets. To focus on notifications from the nearest\n[Scrollable] descendant, check that the [depth] property of the notification\nis zero.\n\nWhen a scroll notification is received by a [NotificationListener], the\nlistener will have already completed build and layout, and it is therefore\ntoo late for that widget to call [State.setState]. Any attempt to adjust the\nbuild or layout based on a scroll notification would result in a layout that\nlagged one frame behind, which is a poor user experience. Scroll\nnotifications are therefore primarily useful for paint effects (since paint\nhappens after layout). The [GlowingOverscrollIndicator] and [Scrollbar]\nwidgets are examples of paint effects that use scroll notifications.\n\nTo drive layout based on the scroll position, consider listening to the\n[ScrollPosition] directly (or indirectly via a [ScrollController]).", "detail": "", "kind": 7, "label": "ScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Embeds an Android view in the Widget hierarchy.\n\nRequires Android API level 20 or greater.\n\nEmbedding Android views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\nThe embedded Android view is painted just like any other Flutter widget and transformations\napply to it as well.\n\nThe widget fills all available space, the parent of this object must provide bounded layout\nconstraints.\n\nThe widget participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified in the `gestureRecognizers` constructor parameter. If\nthe set of gesture recognizers is empty, a gesture will be dispatched to the platform\nview iff it was not claimed by any other gesture recognizer.\n\nThe Android view object is created using a [PlatformViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewFactory.html).\nPlugins can register platform view factories with [PlatformViewRegistry#registerViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewRegistry.html#registerViewFactory-java.lang.String-io.flutter.plugin.platform.PlatformViewFactory-).\n\nRegistration is typically done in the plugin's registerWith method, e.g:\n\n```java\n public static void registerWith(Registrar registrar) {\n registrar.platformViewRegistry().registerViewFactory(\"webview\", WebViewFactory(registrar.messenger()));\n }\n```\n\nThe platform view's lifetime is the same as the lifetime of the [State] object for this widget.\nWhen the [State] is disposed the platform view (and auxiliary resources) are lazily\nreleased (some resources are immediately released and some by platform garbage collector).\nA stateful widget's state is disposed when the widget is removed from the tree or when it is\nmoved within the tree. If the stateful widget has a key and it's only moved relative to its siblings,\nor it has a [GlobalKey] and it's moved within the tree, it will not be disposed.", "detail": "", "kind": 7, "label": "AndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGrid", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[SliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nThe main axis direction of a grid is the direction in which it scrolls; the\ncross axis direction is the orthogonal direction.\n\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows twenty boxes in a pretty teal grid:\n\n```dart\nSliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n)\n```\n\n\nSee also:\n\n * [SliverList], which places its children in a linear array.\n * [SliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.", "detail": "", "kind": 7, "label": "SliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An image that shows a [placeholder] image while the target [image] is\nloading, then fades in the new image when it loads.\n\nUse this class to display long-loading images, such as [new NetworkImage],\nso that the image appears on screen with a graceful animation rather than\nabruptly pops onto the screen.\n\n\nIf the [image] emits an [ImageInfo] synchronously, such as when the image\nhas been loaded and cached, the [image] is displayed immediately and the\n[placeholder] is never displayed.\n\n[fadeOutDuration] and [fadeOutCurve] control the fade-out animation of the\nplaceholder.\n\n[fadeInDuration] and [fadeInCurve] control the fade-in animation of the\ntarget [image].\n\nPrefer a [placeholder] that's already cached so that it is displayed in one\nframe. This prevents it from popping onto the screen.\n\nWhen [image] changes it is resolved to a new [ImageStream]. If the new\n[ImageStream.key] is different this widget subscribes to the new stream and\nreplaces the displayed image with images emitted by the new stream.\n\nWhen [placeholder] changes and the [image] has not yet emitted an\n[ImageInfo], then [placeholder] is resolved to a new [ImageStream]. If the\nnew [ImageStream.key] is different this widget subscribes to the new stream\nand replaces the displayed image to images emitted by the new stream.\n\nWhen either [placeholder] or [image] changes, this widget continues showing\nthe previously loaded image (if any) until the new image provider provides a\ndifferent image. This is known as \"gapless playback\" (see also\n[Image.gaplessPlayback]).\n\n\n```dart\nFadeInImage(\n // here `bytes` is a Uint8List containing the bytes for the in-memory image\n placeholder: MemoryImage(bytes),\n image: NetworkImage('https://backend.example.com/image.png'),\n)\n```", "detail": "", "kind": 7, "label": "FadeInImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Navigator] observer that manages [Hero] transitions.\n\nAn instance of [HeroController] should be used in [Navigator.observers].\nThis is done automatically by [MaterialApp].", "detail": "", "kind": 7, "label": "HeroController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModelElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [InheritedModel] as its configuration.", "detail": "", "kind": 7, "label": "InheritedModelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Metrics for a [PageView].\n\nThe metrics are available on [ScrollNotification]s generated from\n[PageView]s.", "detail": "", "kind": 7, "label": "PageMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSizeWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for widgets that can return the size this widget would prefer\nif it were otherwise unconstrained.\n\nThere are a few cases, notably [AppBar] and [TabBar], where it would be\nundesirable for the widget to constrain its own size but where the widget\nneeds to expose a preferred or \"default\" size. For example a primary\n[Scaffold] sets its app bar height to the app bar's preferred height\nplus the height of the system status bar.\n\nUse [PreferredSize] to give a preferred size to an arbitrary widget.", "detail": "", "kind": 7, "label": "PreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFixedExtentList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[SliverFixedExtentList] places its children in a linear array along the main\naxis starting at offset zero and without gaps. Each child is forced to have\nthe [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[SliverFixedExtentList] is more efficient than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis.\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows an infinite number of items in varying shades of blue:\n\n```dart\nSliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n)\n```\n\n\nSee also:\n\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Direction of the hero's flight based on the navigation operation.", "detail": "", "kind": 13, "label": "HeroFlightDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageTransitionsBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a [MaterialPageRoute] page\ntransition animation.\n\nApps can configure the map of builders for [ThemeData.platformTheme]\nto customize the default [MaterialPageRoute] page transition animation\nfor different platforms.\n\nSee also:\n\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "PageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A utility class for building Material buttons that depend on the\nambient [ButtonTheme] and [Theme].\n\nThe button's size will expand to fit the child widget, if necessary.\n\nMaterialButtons whose [onPressed] handler is null will be disabled. To have\nan enabled button, make sure to pass a non-null value for onPressed.\n\nRather than using this class directly, consider using [FlatButton],\n[OutlineButton], or [RaisedButton], which configure this class with\nappropriate defaults that match the material design specification.\n\nTo create a button directly, without inheriting theme defaults, use\n[RawMaterialButton].\n\nIf you want an ink-splash effect for taps, but don't want to use a button,\nconsider using [InkWell] directly.\n\nSee also:\n\n * [IconButton], to create buttons that contain icons rather than text.", "detail": "", "kind": 7, "label": "MaterialButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularProgressIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design circular progress indicator, which spins to indicate that\nthe application is busy.\n\nA widget that shows progress along a circle. There are two kinds of circular\nprogress indicators:\n\n * _Determinate_. Determinate progress indicators have a specific value at\n each point in time, and the value should increase monotonically from 0.0\n to 1.0, at which time the indicator is complete. To create a determinate\n progress indicator, use a non-null [value] between 0.0 and 1.0.\n * _Indeterminate_. Indeterminate progress indicators do not have a specific\n value at each point in time and instead indicate that progress is being\n made without indicating how much progress remains. To create an\n indeterminate progress indicator, use a null [value].\n\nThe indicator arc is displayed with [valueColor], an animated value. To\nspecify a constant color use: `AlwaysStoppedAnimation<Color>(color)`.\n\nSee also:\n\n * [LinearProgressIndicator], which displays progress along a line.\n * [RefreshIndicator], which automatically displays a [CircularProgressIndicator]\n when the underlying vertical scrollable is overscrolled.\n * <https://material.io/design/components/progress-indicators.html#circular-progress-indicators>", "detail": "", "kind": 7, "label": "CircularProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialApp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An application that uses material design.\n\nA convenience widget that wraps a number of widgets that are commonly\nrequired for material design applications. It builds upon a [WidgetsApp] by\nadding material-design specific functionality, such as [AnimatedTheme] and\n[GridPaper].\n\nThe [MaterialApp] configures the top-level [Navigator] to search for routes\nin the following order:\n\n 1. For the `/` route, the [home] property, if non-null, is used.\n\n 2. Otherwise, the [routes] table is used, if it has an entry for the route.\n\n 3. Otherwise, [onGenerateRoute] is called, if provided. It should return a\n non-null value for any _valid_ route not handled by [home] and [routes].\n\n 4. Finally if all else fails [onUnknownRoute] is called.\n\nIf a [Navigator] is created, at least one of these options must handle the\n`/` route, since it is used when an invalid [initialRoute] is specified on\nstartup (e.g. by another application launching this one with an intent on\nAndroid; see [Window.defaultRouteName]).\n\nThis widget also configures the observer of the top-level [Navigator] (if\nany) to perform [Hero] animations.\n\nIf [home], [routes], [onGenerateRoute], and [onUnknownRoute] are all null,\nand [builder] is not null, then no [Navigator] is created.\n\nSee also:\n\n * [Scaffold], which provides standard app elements like an [AppBar] and a [Drawer].\n * [Navigator], which is used to manage the app's stack of pages.\n * [MaterialPageRoute], which defines an app page that transitions in a material-specific way.\n * [WidgetsApp], which defines the basic app elements but does not depend on the material library.\n * The Flutter Internationalization Tutorial,\n <https://flutter.dev/tutorials/internationalization/>.", "detail": "", "kind": 7, "label": "MaterialApp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomAppBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A container that is typically used with [Scaffold.bottomNavigationBar], and\ncan have a notch along the top that makes room for an overlapping\n[FloatingActionButton].\n\nTypically used with a [Scaffold] and a [FloatingActionButton].\n\n```dart\nScaffold(\n bottomNavigationBar: BottomAppBar(\n color: Colors.white,\n child: bottomAppBarContents,\n ),\n floatingActionButton: FloatingActionButton(onPressed: null),\n)\n```\n\nSee also:\n\n * [ComputeNotch] a function used for creating a notch in a shape.\n * [ScaffoldGeometry.floatingActionBarComputeNotch] the [ComputeNotch] used to\n make a notch for the [FloatingActionButton].\n * [FloatingActionButton] which the [BottomAppBar] makes a notch for.\n * [AppBar] for a toolbar that is shown at the top of the screen.", "detail": "", "kind": 7, "label": "BottomAppBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showSnackBar]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself had been used, no [Scaffold] would have\nbeen found, and the [Scaffold.of] function would have returned null.\n\n```dart\n @override\n Widget build(BuildContext context) {\n // here, Scaffold.of(context) returns null\n return Scaffold(\n appBar: AppBar(title: Text('Demo')),\n body: Builder(\n builder: (BuildContext context) {\n return FlatButton(\n child: Text('BUTTON'),\n onPressed: () {\n // here, Scaffold.of(context) returns the locally created Scaffold\n Scaffold.of(context).showSnackBar(SnackBar(\n content: Text('Hello.')\n ));\n }\n );\n }\n )\n );\n }\n```\n\nThe [BuildContext] for a particular widget can change location over time as\nthe widget is moved around the tree. Because of this, values returned from\nthe methods on this class should not be cached beyond the execution of a\nsingle synchronous function.\n\n[BuildContext] objects are actually [Element] objects. The [BuildContext]\ninterface is used to discourage direct manipulation of [Element] objects.", "detail": "", "kind": 7, "label": "BuildContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Theme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a theme to descendant widgets.\n\nA theme describes the colors and typographic choices of an application.\n\nDescendant widgets obtain the current theme's [ThemeData] object using\n[Theme.of]. When a widget uses [Theme.of], it is automatically rebuilt if\nthe theme later changes, so that the changes can be applied.\n\nThe [Theme] widget implies an [IconTheme] widget, set to the value of the\n[ThemeData.iconTheme] of the [data] for the [Theme].\n\nSee also:\n\n * [ThemeData], which describes the actual configuration of a theme.\n * [AnimatedTheme], which animates the [ThemeData] when it changes rather\n than changing the theme all at once.\n * [MaterialApp], which includes an [AnimatedTheme] widget configured via\n the [MaterialApp.theme] argument.", "detail": "", "kind": 7, "label": "Theme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Divider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A one device pixel thick horizontal line, with padding on either\nside.\n\nIn the material design language, this represents a divider.\n\nDividers can be used in lists, [Drawer]s, and elsewhere to separate content\nvertically or horizontally depending on the value of the [axis] enum.\nTo create a one-pixel divider between items in a list, consider using\n[ListTile.divideTiles], which is optimized for this case.\n\nThe box's total height is controlled by [height]. The appropriate\npadding is automatically computed from the width or height.\n\nSee also:\n\n * [PopupMenuDivider], which is the equivalent but for popup menus.\n * [ListTile.divideTiles], another approach to dividing widgets in a list.\n * <https://material.io/design/components/dividers.html>", "detail": "", "kind": 7, "label": "Divider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataColumn", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Column configuration for a [DataTable].\n\nOne column configuration must be provided for each column to\ndisplay in the table. The list of [DataColumn] objects is passed\nas the `columns` argument to the [new DataTable] constructor.", "detail": "", "kind": 7, "label": "DataColumn" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTarget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that receives data when a [Draggable] widget is dropped.\n\nWhen a draggable is dragged on top of a drag target, the drag target is\nasked whether it will accept the data the draggable is carrying. If the user\ndoes drop the draggable on top of the drag target (and the drag target has\nindicated that it will accept the draggable's data), then the drag target is\nasked to accept the draggable's data.\n\nSee also:\n\n * [Draggable]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "DragTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Widget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the configuration for an [Element].\n\nWidgets are the central class hierarchy in the Flutter framework. A widget\nis an immutable description of part of a user interface. Widgets can be\ninflated into elements, which manage the underlying render tree.\n\nWidgets themselves have no mutable state (all their fields must be final).\nIf you wish to associate mutable state with a widget, consider using a\n[StatefulWidget], which creates a [State] object (via\n[StatefulWidget.createState]) whenever it is inflated into an element and\nincorporated into the tree.\n\nA given widget can be included in the tree zero or more times. In particular\na given widget can be placed in the tree multiple times. Each time a widget\nis placed in the tree, it is inflated into an [Element], which means a\nwidget that is incorporated into the tree multiple times will be inflated\nmultiple times.\n\nThe [key] property controls how one widget replaces another widget in the\ntree. If the [runtimeType] and [key] properties of the two widgets are\n[operator==], respectively, then the new widget replaces the old widget by\nupdating the underlying element (i.e., by calling [Element.update] with the\nnew widget). Otherwise, the old element is removed from the tree, the new\nwidget is inflated into an element, and the new element is inserted into the\ntree.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.", "detail": "", "kind": 7, "label": "Widget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerLocation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where to show a [Banner].\n\nThe start and end locations are relative to the ambient [Directionality]\n(which can be overridden by [Banner.layoutDirection]).", "detail": "", "kind": 13, "label": "BannerLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPhysicalModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [PhysicalModel].\n\nThe [borderRadius] and [elevation] are animated.\n\nThe [color] is animated if the [animateColor] property is set; otherwise,\nthe color changes immediately at the start of the animation for the other\ntwo properties. This allows the color to be animated independently (e.g.\nbecause it is being driven by an [AnimatedTheme]).\n\nThe [shape] is not animated.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].", "detail": "", "kind": 7, "label": "AnimatedPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapInjector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [SliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [Viewport], so that it will always be laid out before the\n[SliverOverlapInjector] during a particular frame.\n\nSee also:\n\n * [NestedScrollView], which uses a [SliverOverlapAbsorber] to align its\n children, and which shows sample usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightShuttleBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A function that lets [Hero]s self supply a [Widget] that is shown during the\nhero's flight from one route to another instead of default (which is to\nshow the destination route's instance of the Hero).", "detail": "(BuildContext flightContext, Animation<double> animation, HeroFlightDirection flightDirection, BuildContext fromHeroContext, BuildContext toHeroContext) → Widget", "kind": 7, "label": "HeroFlightShuttleBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a menu when pressed and calls [onSelected] when the menu is dismissed\nbecause an item was selected. The value passed to [onSelected] is the value of\nthe selected menu item.\n\nOne of [child] or [icon] may be provided, but not both. If [icon] is provided,\nthen [PopupMenuButton] behaves like an [IconButton].\n\nIf both are null, then a standard overflow icon is created (depending on the\nplatform).\n\n\nThis example shows a menu with four items, selecting between an enum's\nvalues and setting a `_selection` field based on the selection.\n\n```dart\n// This is the type used by the popup menu below.\nenum WhyFarther { harder, smarter, selfStarter, tradingCharter }\n\n// This menu button widget updates a _selection field (of type WhyFarther,\n// not shown here).\nPopupMenuButton<WhyFarther>(\n onSelected: (WhyFarther result) { setState(() { _selection = result; }); },\n itemBuilder: (BuildContext context) => <PopupMenuEntry<WhyFarther>>[\n const PopupMenuItem<WhyFarther>(\n value: WhyFarther.harder,\n child: Text('Working a lot harder'),\n ),\n const PopupMenuItem<WhyFarther>(\n value: WhyFarther.smarter,\n child: Text('Being a lot smarter'),\n ),\n const PopupMenuItem<WhyFarther>(\n value: WhyFarther.selfStarter,\n child: Text('Being a self-starter'),\n ),\n const PopupMenuItem<WhyFarther>(\n value: WhyFarther.tradingCharter,\n child: Text('Placed in charge of trading charter'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [PopupMenuItem], a popup menu entry for a single value.\n * [PopupMenuDivider], a popup menu entry that is just a horizontal line.\n * [CheckedPopupMenuItem], a popup menu item with a checkmark.\n * [showMenu], a method to dynamically show a popup menu at a given location.", "detail": "", "kind": 7, "label": "PopupMenuButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that manages a pair of text selection handles.\n\nThe selection handles are displayed in the [Overlay] that most closely\nencloses the given [BuildContext].", "detail": "", "kind": 7, "label": "TextSelectionOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundSliderTickMarkShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of each [Slider] tick mark.\n\nTick marks are only displayed if the slider is discrete, which can be done\nby setting the [Slider.divisions] as non-null.\n\nIt paints a solid circle, centered in the on the track.\nThe color is determined by the [Slider]'s enabled state and track's active\nstates. These colors are defined in:\n [SliderThemeData.activeTrackColor],\n [SliderThemeData.inactiveTrackColor],\n [SliderThemeData.disabledActiveTrackColor],\n [SliderThemeData.disabledInactiveTrackColor].\n\nSee also:\n\n * [Slider], which includes tick marks defined by this shape.\n * [SliderTheme], which can be used to configure the tick mark shape of all\n sliders in a widget subtree.", "detail": "", "kind": 7, "label": "RoundSliderTickMarkShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Navigator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that manages a set of child widgets with a stack discipline.\n\nMany apps have a navigator near the top of their widget hierarchy in order\nto display their logical history using an [Overlay] with the most recently\nvisited pages visually on top of the older pages. Using this pattern lets\nthe navigator visually transition from one page to another by moving the widgets\naround in the overlay. Similarly, the navigator can be used to show a dialog\nby positioning the dialog widget above the current page.\n\n## Using the Navigator\n\nMobile apps typically reveal their contents via full-screen elements\ncalled \"screens\" or \"pages\". In Flutter these elements are called\nroutes and they're managed by a [Navigator] widget. The navigator\nmanages a stack of [Route] objects and provides methods for managing\nthe stack, like [Navigator.push] and [Navigator.pop].\n\n### Displaying a full-screen route\n\nAlthough you can create a navigator directly, it's most common to use\nthe navigator created by a [WidgetsApp] or a [MaterialApp] widget. You\ncan refer to that navigator with [Navigator.of].\n\nA [MaterialApp] is the simplest way to set things up. The [MaterialApp]'s\nhome becomes the route at the bottom of the [Navigator]'s stack. It is what\nyou see when the app is launched.\n\n```dart\nvoid main() {\n runApp(MaterialApp(home: MyAppHome()));\n}\n```\n\nTo push a new route on the stack you can create an instance of\n[MaterialPageRoute] with a builder function that creates whatever you\nwant to appear on the screen. For example:\n\n```dart\nNavigator.push(context, MaterialPageRoute<void>(\n builder: (BuildContext context) {\n return Scaffold(\n appBar: AppBar(title: Text('My Page')),\n body: Center(\n child: FlatButton(\n child: Text('POP'),\n onPressed: () {\n Navigator.pop(context);\n },\n ),\n ),\n );\n },\n));\n```\n\nThe route defines its widget with a builder function instead of a\nchild widget because it will be built and rebuilt in different\ncontexts depending on when it's pushed and popped.\n\nAs you can see, the new route can be popped, revealing the app's home\npage, with the Navigator's pop method:\n\n```dart\nNavigator.pop(context);\n```\n\nIt usually isn't necessary to provide a widget that pops the Navigator\nin a route with a [Scaffold] because the Scaffold automatically adds a\n'back' button to its AppBar. Pressing the back button causes\n[Navigator.pop] to be called. On Android, pressing the system back\nbutton does the same thing.\n\n### Using named navigator routes\n\nMobile apps often manage a large number of routes and it's often\neasiest to refer to them by name. Route names, by convention,\nuse a path-like structure (for example, '/a/b/c').\nThe app's home page route is named '/' by default.\n\nThe [MaterialApp] can be created\nwith a [Map<String, WidgetBuilder>] which maps from a route's name to\na builder function that will create it. The [MaterialApp] uses this\nmap to create a value for its navigator's [onGenerateRoute] callback.\n\n```dart\nvoid main() {\n runApp(MaterialApp(\n home: MyAppHome(), // becomes the route named '/'\n routes: <String, WidgetBuilder> {\n '/a': (BuildContext context) => MyPage(title: 'page A'),\n '/b': (BuildContext context) => MyPage(title: 'page B'),\n '/c': (BuildContext context) => MyPage(title: 'page C'),\n },\n ));\n}\n```\n\nTo show a route by name:\n\n```dart\nNavigator.pushNamed(context, '/b');\n```\n\n### Routes can return a value\n\nWhen a route is pushed to ask the user for a value, the value can be\nreturned via the [pop] method's result parameter.\n\nMethods that push a route return a [Future]. The Future resolves when the\nroute is popped and the [Future]'s value is the [pop] method's `result`\nparameter.\n\nFor example if we wanted to ask the user to press 'OK' to confirm an\noperation we could `await` the result of [Navigator.push]:\n\n```dart\nbool value = await Navigator.push(context, MaterialPageRoute<bool>(\n builder: (BuildContext context) {\n return Center(\n child: GestureDetector(\n child: Text('OK'),\n onTap: () { Navigator.pop(context, true); }\n ),\n );\n }\n));\n```\n\nIf the user presses 'OK' then value will be true. If the user backs\nout of the route, for example by pressing the Scaffold's back button,\nthe value will be null.\n\nWhen a route is used to return a value, the route's type parameter must\nmatch the type of [pop]'s result. That's why we've used\n`MaterialPageRoute<bool>` instead of `MaterialPageRoute<void>` or just\n`MaterialPageRoute`. (If you prefer to not specify the types, though, that's\nfine too.)\n\n### Popup routes\n\nRoutes don't have to obscure the entire screen. [PopupRoute]s cover the\nscreen with a [ModalRoute.barrierColor] that can be only partially opaque to\nallow the current screen to show through. Popup routes are \"modal\" because\nthey block input to the widgets below.\n\nThere are functions which create and show popup routes. For\nexample: [showDialog], [showMenu], and [showModalBottomSheet]. These\nfunctions return their pushed route's Future as described above.\nCallers can await the returned value to take an action when the\nroute is popped, or to discover the route's value.\n\nThere are also widgets which create popup routes, like [PopupMenuButton] and\n[DropdownButton]. These widgets create internal subclasses of PopupRoute\nand use the Navigator's push and pop methods to show and dismiss them.\n\n### Custom routes\n\nYou can create your own subclass of one of the widget library route classes\nlike [PopupRoute], [ModalRoute], or [PageRoute], to control the animated\ntransition employed to show the route, the color and behavior of the route's\nmodal barrier, and other aspects of the route.\n\nThe [PageRouteBuilder] class makes it possible to define a custom route\nin terms of callbacks. Here's an example that rotates and fades its child\nwhen the route appears or disappears. This route does not obscure the entire\nscreen because it specifies `opaque: false`, just as a popup route does.\n\n```dart\nNavigator.push(context, PageRouteBuilder(\n opaque: false,\n pageBuilder: (BuildContext context, _, __) {\n return Center(child: Text('My PageRoute'));\n },\n transitionsBuilder: (___, Animation<double> animation, ____, Widget child) {\n return FadeTransition(\n opacity: animation,\n child: RotationTransition(\n turns: Tween<double>(begin: 0.5, end: 1.0).animate(animation),\n child: child,\n ),\n );\n }\n));\n```\n\nThe page route is built in two parts, the \"page\" and the\n\"transitions\". The page becomes a descendant of the child passed to\nthe `transitionsBuilder` function. Typically the page is only built once,\nbecause it doesn't depend on its animation parameters (elided with `_`\nand `__` in this example). The transition is built on every frame\nfor its duration.\n\n### Nesting Navigators\n\nAn app can use more than one Navigator. Nesting one Navigator below\nanother Navigator can be used to create an \"inner journey\" such as tabbed\nnavigation, user registration, store checkout, or other independent journeys\nthat represent a subsection of your overall application.\n\n#### Real World Example\n\nIt is standard practice for iOS apps to use tabbed navigation where each\ntab maintains its own navigation history. Therefore, each tab has its own\n[Navigator], creating a kind of \"parallel navigation.\"\n\nIn addition to the parallel navigation of the tabs, it is still possible to\nlaunch full-screen pages that completely cover the tabs. For example: an\non-boarding flow, or an alert dialog. Therefore, there must exist a \"root\"\n[Navigator] that sits above the tab navigation. As a result, each of the\ntab's [Navigator]s are actually nested [Navigator]s sitting below a single\nroot [Navigator].\n\nThe nested [Navigator]s for tabbed navigation sit in [WidgetApp] and\n[CupertinoTabView], so you don't need to worry about nested [Navigator]s\nin this situation, but it's a real world example where nested [Navigator]s\nare used.\n\nThe following example demonstrates how a nested [Navigator] can be used to\npresent a standalone user registration journey.\n\nEven though this example uses two [Navigator]s to demonstrate nested\n[Navigator]s, a similar result is possible using only a single [Navigator].\n\nRun this example with `flutter run --route=/signup` to start it with\nthe signup flow instead of on the home page.\n\n```dart\nimport 'package:flutter/material.dart';\n```\n\n```dart\nvoid main() => runApp(new MyApp());\n```\n\n```dart\nclass MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Code Sample for Navigator',\n // MaterialApp contains our top-level Navigator\n initialRoute: '/',\n routes: {\n '/': (BuildContext context) => HomePage(),\n '/signup': (BuildContext context) => SignUpPage(),\n },\n );\n }\n}\n\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: Text('Home Page'),\n ),\n );\n }\n}\n\nclass CollectPersonalInfoPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: GestureDetector(\n onTap: () {\n // This moves from the personal info page to the credentials page,\n // replacing this page with that one.\n Navigator.of(context)\n .pushReplacementNamed('signup/choose_credentials');\n },\n child: Container(\n color: Colors.lightBlue,\n alignment: Alignment.center,\n child: Text('Collect Personal Info Page'),\n ),\n ),\n );\n }\n}\n\nclass ChooseCredentialsPage extends StatelessWidget {\n const ChooseCredentialsPage({\n this.onSignupComplete,\n });\n\n final VoidCallback onSignupComplete;\n\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: onSignupComplete,\n child: DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.pinkAccent,\n alignment: Alignment.center,\n child: Text('Choose Credentials Page'),\n ),\n ),\n );\n }\n}\n\nclass SignUpPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n // SignUpPage builds its own Navigator which ends up being a nested\n // Navigator in our app.\n return Navigator(\n initialRoute: 'signup/personal_info',\n onGenerateRoute: (RouteSettings settings) {\n WidgetBuilder builder;\n switch (settings.name) {\n case 'signup/personal_info':\n // Assume CollectPersonalInfoPage collects personal info and then\n // navigates to 'signup/choose_credentials'.\n builder = (BuildContext _) => CollectPersonalInfoPage();\n break;\n case 'signup/choose_credentials':\n // Assume ChooseCredentialsPage collects new credentials and then\n // invokes 'onSignupComplete()'.\n builder = (BuildContext _) => ChooseCredentialsPage(\n onSignupComplete: () {\n // Referencing Navigator.of(context) from here refers to the\n // top level Navigator because SignUpPage is above the\n // nested Navigator that it created. Therefore, this pop()\n // will pop the entire \"sign up\" journey and return to the\n // \"/\" route, AKA HomePage.\n Navigator.of(context).pop();\n },\n );\n break;\n default:\n throw Exception('Invalid route: ${settings.name}');\n }\n return MaterialPageRoute(builder: builder, settings: settings);\n },\n );\n }\n}\n```\n\n[Navigator.of] operates on the nearest ancestor [Navigator] from the given\n[BuildContext]. Be sure to provide a [BuildContext] below the intended\n[Navigator], especially in large [build] methods where nested [Navigator]s\nare created. The [Builder] widget can be used to access a [BuildContext] at\na desired location in the widget subtree.", "detail": "", "kind": 7, "label": "Navigator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverSafeArea", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that insets another sliver by sufficient padding to avoid\nintrusions by the operating system.\n\nFor example, this will indent the sliver by enough to avoid the status bar\nat the top of the screen.\n\nIt will also indent the sliver by the amount necessary to avoid The Notch\non the iPhone X, or other similar creative physical features of the\ndisplay.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\nSee also:\n\n * [SafeArea], for insetting widgets to avoid operating system intrusions.\n * [SliverPadding], for insetting slivers in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SliverSafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Checkbox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design checkbox.\n\nThe checkbox itself does not maintain any state. Instead, when the state of\nthe checkbox changes, the widget calls the [onChanged] callback. Most\nwidgets that use a checkbox will listen for the [onChanged] callback and\nrebuild the checkbox with a new [value] to update the visual appearance of\nthe checkbox.\n\nThe checkbox can optionally display three values - true, false, and null -\nif [tristate] is true. When [value] is null a dash is displayed. By default\n[tristate] is false and the checkbox's [value] must be true or false.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [CheckboxListTile], which combines this widget with a [ListTile] so that\n you can give the checkbox a label.\n * [Switch], a widget with semantics similar to [Checkbox].\n * [Radio], for selecting among a set of explicit values.\n * [Slider], for selecting a value in a range.\n * <https://material.io/design/components/selection-controls.html#checkboxes>\n * <https://material.io/design/components/lists.html#types>", "detail": "", "kind": 7, "label": "Checkbox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlatButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design \"flat button\".\n\nA flat button is a text label displayed on a (zero elevation) [Material]\nwidget that reacts to touches by filling with color.\n\nUse flat buttons on toolbars, in dialogs, or inline with other content but\noffset from that content with padding so that the button's presence is\nobvious. Flat buttons intentionally do not have visible borders and must\ntherefore rely on their position relative to other content for context. In\ndialogs and cards, they should be grouped together in one of the bottom\ncorners. Avoid using flat buttons where they would blend in with other\ncontent, for example in the middle of lists.\n\nMaterial design flat buttons have an all-caps label, some internal padding,\nand some defined dimensions. To have a part of your application be\ninteractive, with ink splashes, without also committing to these stylistic\nchoices, consider using [InkWell] instead.\n\nIf the [onPressed] callback is null, then the button will be disabled,\nwill not react to touch, and will be colored as specified by\nthe [disabledColor] property instead of the [color] property. If you are\ntrying to change the button's [color] and it is not having any effect, check\nthat you are passing a non-null [onPressed] handler.\n\nFlat buttons have a minimum size of 88.0 by 36.0 which can be overridden\nwith [ButtonTheme].\n\nThe [clipBehavior] argument must not be null.\n\n\nThis example shows a simple [FlatButton].\n\n```dart\nFlatButton(\n onPressed: () {\n /*...*/\n },\n child: Text(\n \"Flat Button\",\n ),\n)\n```\n\n\nThis example shows a [FlatButton] that is normally white-on-blue,\nwith splashes rendered in a different shade of blue.\nIt turns black-on-grey when disabled.\nThe button has 8px of padding on each side, and the text is 20px high.\n\n```dart\nFlatButton(\n color: Colors.blue,\n textColor: Colors.white,\n disabledColor: Colors.grey,\n disabledTextColor: Colors.black,\n padding: EdgeInsets.all(8.0),\n splashColor: Colors.blueAccent,\n onPressed: () {\n /*...*/\n },\n child: Text(\n \"Flat Button\",\n style: TextStyle(fontSize: 20.0),\n ),\n)\n```\n\nSee also:\n\n * [RaisedButton], a filled button whose material elevates when pressed.\n * [DropdownButton], which offers the user a choice of a number of options.\n * [SimpleDialogOption], which is used in [SimpleDialog]s.\n * [IconButton], to create buttons that just contain icons.\n * [InkWell], which implements the ink splash part of a flat button.\n * [RawMaterialButton], the widget this widget is based on.\n * <https://material.io/design/components/buttons.html>", "detail": "", "kind": 7, "label": "FlatButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "RenderObjectWidgets provide the configuration for [RenderObjectElement]s,\nwhich wrap [RenderObject]s, which provide the actual rendering of the\napplication.", "detail": "", "kind": 7, "label": "RenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that detects gestures described by the given gesture\nfactories.\n\nFor common gestures, use a [GestureRecognizer].\n[RawGestureDetector] is useful primarily when developing your\nown gesture recognizers.\n\nConfiguring the gesture recognizers requires a carefully constructed map, as\ndescribed in [gestures] and as shown in the example below.\n\n\nThis example shows how to hook up a [TapGestureRecognizer]. It assumes that\nthe code is being used inside a [State] object with a `_last` field that is\nthen displayed as the child of the gesture detector.\n\n```dart\nRawGestureDetector(\n gestures: <Type, GestureRecognizerFactory>{\n TapGestureRecognizer: GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(\n () => TapGestureRecognizer(),\n (TapGestureRecognizer instance) {\n instance\n ..onTapDown = (TapDownDetails details) { setState(() { _last = 'down'; }); }\n ..onTapUp = (TapUpDetails details) { setState(() { _last = 'up'; }); }\n ..onTap = () { setState(() { _last = 'tap'; }); }\n ..onTapCancel = () { setState(() { _last = 'cancel'; }); };\n },\n ),\n },\n child: Container(width: 300.0, height: 300.0, color: Colors.yellow, child: Text(_last)),\n)\n```\n\nSee also:\n\n * [GestureDetector], a less flexible but much simpler widget that does the same thing.\n * [Listener], a widget that reports raw pointer events.\n * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.", "detail": "", "kind": 7, "label": "RawGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedModeBanner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a [Banner] saying \"DEBUG\" when running in checked mode.\n[MaterialApp] builds one of these by default.\nDoes nothing in release mode.", "detail": "", "kind": 7, "label": "CheckedModeBanner" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Embeds an iOS view in the Widget hierarchy.\n\n\nEmbedding iOS views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\n\n\n\nConstruction of UIViews is done asynchronously, before the UIView is ready this widget paints\nnothing while maintaining the same layout constraints.", "detail": "", "kind": 7, "label": "UiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state for a scrolling container that animates items when they are\ninserted or removed.\n\nWhen an item is inserted with [insertItem] an animation begins running. The\nanimation is passed to [AnimatedList.itemBuilder] whenever the item's widget\nis needed.\n\nWhen an item is removed with [removeItem] its animation is reversed.\nThe removed item's animation is passed to the [removeItem] builder\nparameter.\n\nAn app that needs to insert or remove items in response to an event\ncan refer to the [AnimatedList]'s state with a global key:\n\n```dart\nGlobalKey<AnimatedListState> listKey = GlobalKey<AnimatedListState>();\n...\nAnimatedList(key: listKey, ...);\n...\nlistKey.currentState.insert(123);\n```\n\n[AnimatedList] item input handlers can also refer to their [AnimatedListState]\nwith the static [AnimatedList.of] method.", "detail": "", "kind": 7, "label": "AnimatedListState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the layout and behavior of a [BottomNavigationBar].\n\nSee also:\n\n * [BottomNavigationBar]\n * [BottomNavigationBarItem]\n * <https://material.io/design/components/bottom-navigation.html#specs>", "detail": "", "kind": 13, "label": "BottomNavigationBarType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialRectCenterArcTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that interpolates a [Rect] by moving it along a circular arc from\n[begin]'s [Rect.center] to [end]'s [Rect.center] while interpolating the\nrectangle's width and height.\n\nThe arc that defines that center of the interpolated rectangle as it morphs\nfrom [begin] to [end] is a [MaterialPointArcTween].\n\nSee also:\n\n * [MaterialRectArcTween], A [Tween] that interpolates a [Rect] by having\n its opposite corners follow circular arcs.\n * [Tween], for a discussion on how to use interpolation objects.\n * [MaterialPointArcTween], the analogue for [Offset] interpolation.\n * [RectTween], which does a linear rectangle interpolation.\n * [Hero.createRectTween], which can be used to specify the tween that defines\n a hero's path.", "detail": "", "kind": 7, "label": "MaterialRectCenterArcTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dismissible", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that can be dismissed by dragging in the indicated [direction].\n\nDragging or flinging this widget in the [DismissDirection] causes the child\nto slide out of view. Following the slide animation, if [resizeDuration] is\nnon-null, the Dismissible widget animates its height (or width, whichever is\nperpendicular to the dismiss direction) to zero over the [resizeDuration].\n\n\nBackgrounds can be used to implement the \"leave-behind\" idiom. If a background\nis specified it is stacked behind the Dismissible's child and is exposed when\nthe child moves.\n\nThe widget calls the [onDismissed] callback either after its size has\ncollapsed to zero (if [resizeDuration] is non-null) or immediately after\nthe slide animation (if [resizeDuration] is null). If the Dismissible is a\nlist item, it must have a key that distinguishes it from the other items and\nits [onDismissed] callback must remove the item from the list.", "detail": "", "kind": 7, "label": "Dismissible" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionHandleType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Which type of selection handle to be displayed.\n\nWith mixed-direction text, both handles may be the same type. Examples:\n\n* LTR text: 'the <quick brown> fox':\n\n The '<' is drawn with the [left] type, the '>' with the [right]\n\n* RTL text: 'XOF <NWORB KCIUQ> EHT':\n\n Same as above.\n\n* mixed text: '<the NWOR<B KCIUQ fox'\n\n Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn\n with the [left] type.\n\nSee also:\n\n * [TextDirection], which discusses left-to-right and right-to-left text in\n more detail.", "detail": "", "kind": 13, "label": "TextSelectionHandleType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stack", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that positions its children relative to the edges of its box.\n\nThis class is useful if you want to overlap several children in a simple\nway, for example having some text and an image, overlaid with a gradient and\na button attached to the bottom.\n\nEach child of a [Stack] widget is either _positioned_ or _non-positioned_.\nPositioned children are those wrapped in a [Positioned] widget that has at\nleast one non-null property. The stack sizes itself to contain all the\nnon-positioned children, which are positioned according to [alignment]\n(which defaults to the top-left corner in left-to-right environments and the\ntop-right corner in right-to-left environments). The positioned children are\nthen placed relative to the stack according to their top, right, bottom, and\nleft properties.\n\nThe stack paints its children in order with the first child being at the\nbottom. If you want to change the order in which the children paint, you\ncan rebuild the stack with the children in the new order. If you reorder\nthe children in this way, consider giving the children non-null keys.\nThese keys will cause the framework to move the underlying objects for\nthe children to their new locations rather than recreate them at their\nnew location.\n\nFor more details about the stack layout algorithm, see [RenderStack].\n\nIf you want to lay a number of children out in a particular pattern, or if\nyou want to make a custom layout manager, you probably want to use\n[CustomMultiChildLayout] instead. In particular, when using a [Stack] you\ncan't position children relative to their size or the stack's own size.\n\n\nUsing a [Stack] you can position widgets over one another.\n\n```dart\nStack(\n children: <Widget>[\n Container(\n width: 100,\n height: 100,\n color: Colors.red,\n ),\n Container(\n width: 90,\n height: 90,\n color: Colors.green,\n ),\n Container(\n width: 80,\n height: 80,\n color: Colors.blue,\n ),\n ],\n)\n```\n\n\nThis example shows how [Stack] can be used to enhance text visibility\nby adding gradient backdrops.\n\n```dart\nSizedBox(\n width: 250,\n height: 250,\n child: Stack(\n children: <Widget>[\n Container(\n width: 250,\n height: 250,\n color: Colors.white,\n ),\n Container(\n padding: EdgeInsets.all(5.0),\n alignment: Alignment.bottomCenter,\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: <Color>[\n Colors.black.withAlpha(0),\n Colors.black12,\n Colors.black45\n ],\n ),\n ),\n child: Text(\n \"Foreground Text\",\n style: TextStyle(color: Colors.white, fontSize: 20.0),\n ),\n ),\n ],\n ),\n)\n```\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * [Flow], which provides paint-time control of its children using transform\n matrices.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Stack" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DayPicker", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays the days of a given month and allows choosing a day.\n\nThe days are arranged in a rectangular grid with one column for each day of\nthe week.\n\nThe day picker widget is rarely used directly. Instead, consider using\n[showDatePicker], which creates a date picker dialog.\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.\n * [showTimePicker], which shows a dialog that contains a material design\n time picker.", "detail": "", "kind": 7, "label": "DayPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that annotates the child semantics with an index.\n\nSemantic indexes are used by TalkBack/Voiceover to make announcements about\nthe current scroll state. Certain widgets like the [ListView] will\nautomatically provide a child index for building semantics. A user may wish\nto manually provide semantic indexes if not all child of the scrollable\ncontribute semantics.\n\n\nThe example below handles spacers in a scrollable that don't contribute\nsemantics. The automatic indexes would give the spaces a semantic index,\ncausing scroll announcements to erroneously state that there are four items\nvisible.\n\n```dart\nListView(\n addSemanticIndexes: false,\n semanticChildCount: 2,\n children: const <Widget>[\n IndexedSemantics(index: 0, child: Text('First')),\n Spacer(),\n IndexedSemantics(index: 1, child: Text('Second')),\n Spacer(),\n ],\n)\n```\n\nSee also:\n\n * [CustomScrollView], for an explanation of index semantics.", "detail": "", "kind": 7, "label": "IndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridPaper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that draws a rectilinear grid of lines one pixel wide.\n\nUseful with a [Stack] for visualizing your layout along a grid.\n\nThe grid's origin (where the first primary horizontal line and the first\nprimary vertical line intersect) is at the top left of the widget.\n\nThe grid is drawn over the [child] widget.", "detail": "", "kind": 7, "label": "GridPaper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directionality", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that determines the ambient directionality of text and\ntext-direction-sensitive render objects.\n\nFor example, [Padding] depends on the [Directionality] to resolve\n[EdgeInsetsDirectional] objects into absolute [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "Directionality" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that paints a [Decoration] either before or after its child paints.\n\n[Container] insets its child by the widths of the borders; this widget does\nnot.\n\nCommonly used with [BoxDecoration].\n\nThe [child] is not clipped. To clip a child to the shape of a particular\n[ShapeDecoration], consider using a [ClipPath] widget.\n\n\nThis sample shows a radial gradient that draws a moon on a night sky:\n\n```dart\nDecoratedBox(\n decoration: BoxDecoration(\n gradient: RadialGradient(\n center: const Alignment(-0.5, -0.6),\n radius: 0.15,\n colors: <Color>[\n const Color(0xFFEEEEEE),\n const Color(0xFF111133),\n ],\n stops: <double>[0.9, 1.0],\n ),\n ),\n)\n```\n\nSee also:\n\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * [DecoratedBoxTransition], the version of this class that animates on the\n [decoration] property.\n * [Decoration], which you can extend to provide other effects with\n [DecoratedBox].\n * [CustomPaint], another way to draw custom effects from the widget layer.", "detail": "", "kind": 7, "label": "DecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TappableChipAttributes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be tapped.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "TappableChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelRadio", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An expansion panel that allows for radio-like functionality.\nThis means that at any given time, at most, one [ExpansionPanelRadio]\ncan remain expanded.\n\nA unique identifier [value] must be assigned to each panel.\nThis identifier allows the [ExpansionPanelList] to determine\nwhich [ExpansionPanelRadio] instance should be expanded.\n\nSee [ExpansionPanelList.radio] for a sample implementation.", "detail": "", "kind": 7, "label": "ExpansionPanelRadio" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Title", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that describes this app in the operating system.", "detail": "", "kind": 7, "label": "Title" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProgressIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for material design progress indicators.\n\nThis widget cannot be instantiated directly. For a linear progress\nindicator, see [LinearProgressIndicator]. For a circular progress indicator,\nsee [CircularProgressIndicator].\n\nSee also:\n\n * <https://material.io/design/components/progress-indicators.html>", "detail": "", "kind": 7, "label": "ProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's orientation\n(distinct from the device orientation).\n\nSee also:\n\n * [LayoutBuilder], which exposes the complete constraints, not just the\n orientation.\n * [CustomSingleChildLayout], which positions its child during layout.\n * [CustomMultiChildLayout], with which you can define the precise layout\n of a list of children during the layout phase.\n * [MediaQueryData.orientation], which exposes whether the device is in\n landscape or portrait mode.", "detail": "", "kind": 7, "label": "OrientationBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expanded", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that expands a child of a [Row], [Column], or [Flex]\nso that the child fills the available space.\n\nUsing an [Expanded] widget makes a child of a [Row], [Column], or [Flex]\nexpand to fill the available space along the main axis (e.g., horizontally for\na [Row] or vertically for a [Column]). If multiple children are expanded,\nthe available space is divided among them according to the [flex] factor.\n\nAn [Expanded] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Expanded] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\n\nThis example shows how to use an [Expanded] widget in a [Column] so that\nit's middle child, a [Container] here, expands to fill the space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Column Sample'),\n ),\n body: Center(\n child: Column(\n children: <Widget>[\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n Expanded(\n child: Container(\n color: Colors.blue,\n width: 100,\n ),\n ),\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n ],\n ),\n ),\n );\n}\n```\n\nThis example shows how to use an [Expanded] widget in a [Row] with multiple\nchildren expanded, utilizing the [flex] factor to prioritize available space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Row Sample'),\n ),\n body: Center(\n child: Row(\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n Container(\n color: Colors.blue,\n height: 100,\n width: 50,\n ),\n Expanded(\n flex: 1,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Flexible], which does not force the child to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Expanded" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DayPeriod", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether the [TimeOfDay] is before or after noon.", "detail": "", "kind": 13, "label": "DayPeriod" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextFormField", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [FormField] that contains a [TextField].\n\nThis is a convenience widget that wraps a [TextField] widget in a\n[FormField].\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nWhen a [controller] is specified, its [TextEditingController.text]\ndefines the [initialValue]. If this [FormField] is part of a scrolling\ncontainer that lazily constructs its children, like a [ListView] or a\n[CustomScrollView], then a [controller] should be specified.\nThe controller's lifetime should be managed by a stateful widget ancestor\nof the scrolling container.\n\nIf a [controller] is not specified, [initialValue] can be used to give\nthe automatically generated controller an initial value.\n\nFor a documentation about the various parameters, see [TextField].\n\n\nCreates a [TextFormField] with an [InputDecoration] and validator function.\n\n```dart\nTextFormField(\n decoration: const InputDecoration(\n icon: Icon(Icons.person),\n hintText: 'What do people call you?',\n labelText: 'Name *',\n ),\n onSaved: (String value) {\n // This optional block of code can be used to run\n // code when the user saves the form.\n },\n validator: (String value) {\n return value.contains('@') ? 'Do not use the @ char.' : null;\n },\n)\n```\n\nSee also:\n\n * <https://material.io/design/components/text-fields.html>\n * [TextField], which is the underlying text field without the [Form]\n integration.\n * [InputDecorator], which shows the labels and other visual elements that\n surround the actual text editing widget.", "detail": "", "kind": 7, "label": "TextFormField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BallisticScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An activity that animates a scroll view based on a physics [Simulation].\n\nA [BallisticScrollActivity] is typically used when the user lifts their\nfinger off the screen to continue the scrolling gesture with the current velocity.\n\n[BallisticScrollActivity] is also used to restore a scroll view to a valid\nscroll offset when the geometry of the scroll view changes. In these\nsituations, the [Simulation] typically starts with a zero velocity.\n\nSee also:\n\n * [DrivenScrollActivity], which animates a scroll view based on a set of\n animation parameters.", "detail": "", "kind": 7, "label": "BallisticScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverAppBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design app bar that integrates with a [CustomScrollView].\n\nAn app bar consists of a toolbar and potentially other widgets, such as a\n[TabBar] and a [FlexibleSpaceBar]. App bars typically expose one or more\ncommon actions with [IconButton]s which are optionally followed by a\n[PopupMenuButton] for less common operations.\n\n\nSliver app bars are typically used as the first child of a\n[CustomScrollView], which lets the app bar integrate with the scroll view so\nthat it can vary in height according to the scroll offset or float above the\nother content in the scroll view. For a fixed-height app bar at the top of\nthe screen see [AppBar], which is used in the [Scaffold.appBar] slot.\n\nThe AppBar displays the toolbar widgets, [leading], [title], and\n[actions], above the [bottom] (if any). If a [flexibleSpace] widget is\nspecified then it is stacked behind the toolbar and the bottom widget.\n\n\nThis is an example that could be included in a [CustomScrollView]'s\n[CustomScrollView.slivers] list:\n\n```dart\nSliverAppBar(\n expandedHeight: 150.0,\n flexibleSpace: const FlexibleSpaceBar(\n title: Text('Available seats'),\n ),\n actions: <Widget>[\n IconButton(\n icon: const Icon(Icons.add_circle),\n tooltip: 'Add new entry',\n onPressed: () { /* ... */ },\n ),\n ]\n)\n```\n\n## Animated Examples\n\nThe following animations show how app bars with different configurations\nbehave when a user scrolls up and then down again.\n\n* App bar with [floating]: false, [pinned]: false, [snap]: false:\n\n* App bar with [floating]: true, [pinned]: false, [snap]: false:\n\n* App bar with [floating]: true, [pinned]: false, [snap]: true:\n\n* App bar with [floating]: true, [pinned]: true, [snap]: false:\n\n* App bar with [floating]: true, [pinned]: true, [snap]: true:\n\n* App bar with [floating]: false, [pinned]: true, [snap]: false:\n\nThe property [snap] can only be set to true if [floating] is also true.\n\nSee also:\n\n * [CustomScrollView], which integrates the [SliverAppBar] into its\n scrolling.\n * [AppBar], which is a fixed-height app bar for use in [Scaffold.appBar].\n * [TabBar], which is typically placed in the [bottom] slot of the [AppBar]\n if the screen has multiple pages arranged in tabs.\n * [IconButton], which is used with [actions] to show buttons on the app bar.\n * [PopupMenuButton], to show a popup menu on the app bar, via [actions].\n * [FlexibleSpaceBar], which is used with [flexibleSpace] when the app bar\n can expand and collapse.\n * <https://material.io/design/components/app-bars-top.html>", "detail": "", "kind": 7, "label": "SliverAppBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenVisitor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks passed to [AnimatedWidgetBaseState.forEachTween].", "detail": "(Tween<T> tween, T targetValue, TweenConstructor<T> constructor) → Tween<T>", "kind": 7, "label": "TweenVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An action the user has requested the text input control to perform.\n\nEach action represents a logical meaning, and also configures the soft\nkeyboard to display a certain kind of action button. The visual appearance\nof the action button might differ between versions of the same OS.\n\nDespite the logical meaning of each action, choosing a particular\n[TextInputAction] does not necessarily cause any specific behavior to\nhappen. It is up to the developer to ensure that the behavior that occurs\nwhen an action button is pressed is appropriate for the action button chosen.\n\nFor example: If the user presses the keyboard action button on iOS when it\nreads \"Emergency Call\", the result should not be a focus change to the next\nTextField. This behavior is not logically appropriate for a button that says\n\"Emergency Call\".\n\nSee [EditableText] for more information about customizing action button\nbehavior.\n\nMost [TextInputAction]s are supported equally by both Android and iOS.\nHowever, there is not a complete, direct mapping between Android's IME input\ntypes and iOS's keyboard return types. Therefore, some [TextInputAction]s\nare inappropriate for one of the platforms. If a developer chooses an\ninappropriate [TextInputAction] when running in debug mode, an error will be\nthrown. If the same thing is done in release mode, then instead of sending\nthe inappropriate value, Android will use \"unspecified\" on the platform\nside and iOS will use \"default\" on the platform side.\n\nSee also:\n\n * [TextInput], which configures the platform's keyboard setup.\n * [EditableText], which invokes callbacks when the action button is pressed.", "detail": "", "kind": 13, "label": "TextInputAction" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two relative rects.\n\nThis class specializes the interpolation of [Tween<RelativeRect>] to\nuse [RelativeRect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RelativeRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonBarLayoutBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonTheme] and [ButtonThemeData] to define how the button bar\nshould size itself with either constraints or internal padding.", "detail": "", "kind": 13, "label": "ButtonBarLayoutBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkResponse", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An area of a [Material] that responds to touch. Has a configurable shape and\ncan be configured to clip splashes that extend outside its bounds or not.\n\nFor a variant of this widget that is specialized for rectangular areas that\nalways clip splashes, see [InkWell].\n\nAn [InkResponse] widget does two things when responding to a tap:\n\n * It starts to animate a _highlight_. The shape of the highlight is\n determined by [highlightShape]. If it is a [BoxShape.circle], the\n default, then the highlight is a circle of fixed size centered in the\n [InkResponse]. If it is [BoxShape.rectangle], then the highlight is a box\n the size of the [InkResponse] itself, unless [getRectCallback] is\n provided, in which case that callback defines the rectangle. The color of\n the highlight is set by [highlightColor].\n\n * Simultaneously, it starts to animate a _splash_. This is a growing circle\n initially centered on the tap location. If this is a [containedInkWell],\n the splash grows to the [radius] while remaining centered at the tap\n location. Otherwise, the splash migrates to the center of the box as it\n grows.\n\nThe following two diagrams show how [InkResponse] looks when tapped if the\n[highlightShape] is [BoxShape.circle] (the default) and [containedInkWell]\nis false (also the default).\n\nThe first diagram shows how it looks if the [InkResponse] is relatively\nlarge:\n\n![The highlight is a disc centered in the box, smaller than the child widget.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_response_large.png)\n\nThe second diagram shows how it looks if the [InkResponse] is small:\n\n![The highlight is a disc overflowing the box, centered on the child.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_response_small.png)\n\nThe main thing to notice from these diagrams is that the splashes happily\nexceed the bounds of the widget (because [containedInkWell] is false).\n\nThe following diagram shows the effect when the [InkResponse] has a\n[highlightShape] of [BoxShape.rectangle] with [containedInkWell] set to\ntrue. These are the values used by [InkWell].\n\n![The highlight is a rectangle the size of the box.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_well.png)\n\nThe [InkResponse] widget must have a [Material] widget as an ancestor. The\n[Material] widget is where the ink reactions are actually painted. This\nmatches the material design premise wherein the [Material] is what is\nactually reacting to touches by spreading ink.\n\nIf a Widget uses this class directly, it should include the following line\nat the top of its build function to call [debugCheckHasMaterial]:\n\n```dart\nassert(debugCheckHasMaterial(context));\n```\n\n## Troubleshooting\n\n### The ink splashes aren't visible!\n\nIf there is an opaque graphic, e.g. painted using a [Container], [Image], or\n[DecoratedBox], between the [Material] widget and the [InkResponse] widget,\nthen the splash won't be visible because it will be under the opaque graphic.\nThis is because ink splashes draw on the underlying [Material] itself, as\nif the ink was spreading inside the material.\n\nThe [Ink] widget can be used as a replacement for [Image], [Container], or\n[DecoratedBox] to ensure that the image or decoration also paints in the\n[Material] itself, below the ink.\n\nIf this is not possible for some reason, e.g. because you are using an\nopaque [CustomPaint] widget, alternatively consider using a second\n[Material] above the opaque widget but below the [InkResponse] (as an\nancestor to the ink response). The [MaterialType.transparency] material\nkind can be used for this purpose.\n\nSee also:\n\n * [GestureDetector], for listening for gestures without ink splashes.\n * [RaisedButton] and [FlatButton], two kinds of buttons in material design.\n * [IconButton], which combines [InkResponse] with an [Icon].", "detail": "", "kind": 7, "label": "InkResponse" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that has mutable state.\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\nA stateful widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\nStateful widgets are useful when the part of the user interface you are\ndescribing can change dynamically, e.g. due to having an internal\nclock-driven state, or depending on some system state. For compositions that\ndepend only on the configuration information in the object itself and the\n[BuildContext] in which the widget is inflated, consider using\n[StatelessWidget].\n\n\n[StatefulWidget] instances themselves are immutable and store their mutable\nstate either in separate [State] objects that are created by the\n[createState] method, or in objects to which that [State] subscribes, for\nexample [Stream] or [ChangeNotifier] objects, to which references are stored\nin final fields on the [StatefulWidget] itself.\n\nThe framework calls [createState] whenever it inflates a\n[StatefulWidget], which means that multiple [State] objects might be\nassociated with the same [StatefulWidget] if that widget has been inserted\ninto the tree in multiple places. Similarly, if a [StatefulWidget] is\nremoved from the tree and later inserted in to the tree again, the framework\nwill call [createState] again to create a fresh [State] object, simplifying\nthe lifecycle of [State] objects.\n\nA [StatefulWidget] keeps the same [State] object when moving from one\nlocation in the tree to another if its creator used a [GlobalKey] for its\n[key]. Because a widget with a [GlobalKey] can be used in at most one\nlocation in the tree, a widget that uses a [GlobalKey] has at most one\nassociated element. The framework takes advantage of this property when\nmoving a widget with a global key from one location in the tree to another\nby grafting the (unique) subtree associated with that widget from the old\nlocation to the new location (instead of recreating the subtree at the new\nlocation). The [State] objects associated with [StatefulWidget] are grafted\nalong with the rest of the subtree, which means the [State] object is reused\n(instead of being recreated) in the new location. However, in order to be\neligible for grafting, the widget must be inserted into the new location in\nthe same animation frame in which it was removed from the old location.\n\n## Performance considerations\n\nThere are two primary categories of [StatefulWidget]s.\n\nThe first is one which allocates resources in [State.initState] and disposes\nof them in [State.dispose], but which does not depend on [InheritedWidget]s\nor call [State.setState]. Such widgets are commonly used at the root of an\napplication or page, and communicate with subwidgets via [ChangeNotifier]s,\n[Stream]s, or other such objects. Stateful widgets following such a pattern\nare relatively cheap (in terms of CPU and GPU cycles), because they are\nbuilt once then never update. They can, therefore, have somewhat complicated\nand deep build methods.\n\nThe second category is widgets that use [State.setState] or depend on\n[InheritedWidget]s. These will typically rebuild many times during the\napplication's lifetime, and it is therefore important to minimize the impact\nof rebuilding such a widget. (They may also use [State.initState] or\n[State.didChangeDependencies] and allocate resources, but the important part\nis that they rebuild.)\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateful widget:\n\n * Push the state to the leaves. For example, if your page has a ticking\n clock, rather than putting the state at the top of the page and\n rebuilding the entire page each time the clock ticks, create a dedicated\n clock widget that only updates itself.\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. Ideally, a stateful widget would only create a\n single widget, and that widget would be a [RenderObjectWidget].\n (Obviously this isn't always practical, but the closer a widget gets to\n this ideal, the more efficient it will be.)\n\n * If a subtree does not change, cache the widget that represents that\n subtree and re-use it each time it can be used. It is massively more\n efficient for a widget to be re-used than for a new (but\n identically-configured) widget to be created. Factoring out the stateful\n part into a widget that takes a child argument is a common way of doing\n this.\n\n * Use `const` widgets where possible. (This is equivalent to caching a\n widget and re-using it.)\n\n * Avoid changing the depth of any created subtrees or changing the type of\n any widgets in the subtree. For example, rather than returning either the\n child or the child wrapped in an [IgnorePointer], always wrap the child\n widget in an [IgnorePointer] and control the [IgnorePointer.ignoring]\n property. This is because changing the depth of the subtree requires\n rebuilding, laying out, and painting the entire subtree, whereas just\n changing the property will require the least possible change to the\n render tree (in the case of [IgnorePointer], for example, no layout or\n repaint is necessary at all).\n\n * If the depth must be changed for some reason, consider wrapping the\n common parts of the subtrees in widgets that have a [GlobalKey] that\n remains consistent for the life of the stateful widget. (The\n [KeyedSubtree] widget may be useful for this purpose if no other widget\n can conveniently be assigned the key.)\n\n\nThis is a skeleton of a stateful widget subclass called `YellowBird`.\n\nIn this example. the [State] has no actual state. State is normally\nrepresented as private member fields. Also, normally widgets have more\nconstructor arguments, each of which corresponds to a `final` property.\n\n```dart\nclass YellowBird extends StatefulWidget {\n const YellowBird({ Key key }) : super(key: key);\n\n @override\n _YellowBirdState createState() => _YellowBirdState();\n}\n\nclass _YellowBirdState extends State<YellowBird> {\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFFFFE306));\n }\n}\n```\n\nThis example shows the more generic widget `Bird` which can be given a\ncolor and a child, and which has some internal state with a method that\ncan be called to mutate it:\n\n```dart\nclass Bird extends StatefulWidget {\n const Bird({\n Key key,\n this.color = const Color(0xFFFFE306),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n _BirdState createState() => _BirdState();\n}\n\nclass _BirdState extends State<Bird> {\n double _size = 1.0;\n\n void grow() {\n setState(() { _size += 0.1; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(\n color: widget.color,\n transform: Matrix4.diagonal3Values(_size, _size, 1.0),\n child: widget.child,\n );\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [State], where the logic behind a [StatefulWidget] is hosted.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatefulWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildListDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using an\nexplicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for slivers.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. Rather than receiving\ntheir children as an explicit [List], they receive their children using a\n[SliverChildDelegate].\n\nIt's uncommon to subclass [SliverChildDelegate]. Instead, consider using one\nof the existing subclasses that provide adaptors to builder callbacks or\nexplicit child lists.\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as in the\ncase of [SliverChildListDelegate]) or lazily provided ones (such as in the\ncase of [SliverChildBuilderDelegate]).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree, states\nand render objects are destroyed. A new child at the same position in the\nsliver will be lazily recreated along with new elements, states and render\nobjects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the sliver child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the sliver child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child widget\n subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the sliver child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the sliver keeps the child's\n render object (and by extension, its associated elements and states) in a\n cache list instead of destroying them. When scrolled back into view, the\n render object is repainted as-is (if it wasn't marked dirty in the\n interim).\n\n This only works if the [SliverChildDelegate] subclasses don't wrap the\n child widget subtree with other widgets such as [AutomaticKeepAlive] and\n [RepaintBoundary] via `addAutomaticKeepAlives` and\n `addRepaintBoundaries`.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default in\n [SliverChildListDelegate] or [SliverChildListDelegate]). Instead of\n unconditionally caching the child element subtree when scrolling\n off-screen like [KeepAlive], [AutomaticKeepAlive] can let whether to\n cache the subtree be determined by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its sliver child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the sliver child element subtree will be\n destroyed when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive by\n using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.", "detail": "", "kind": 7, "label": "SliverChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollIndicatorNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that an [GlowingOverscrollIndicator] will start showing an\noverscroll indication.\n\nTo prevent the indicator from showing the indication, call [disallowGlow] on\nthe notification.\n\nSee also:\n\n * [GlowingOverscrollIndicator], which generates this type of notification.", "detail": "", "kind": 7, "label": "OverscrollIndicatorNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OpenUpwardsPageTransitionsBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a vertical [MaterialPageRoute] page\ntransition animation that looks like the default page transition\nused on Android P.\n\nSee also:\n\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "OpenUpwardsPageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButtonAnimator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provider of animations to move the [FloatingActionButton] between [FloatingActionButtonLocation]s.\n\nThe [Scaffold] uses [Scaffold.floatingActionButtonAnimator] to define:\n\n * The [Offset] of the [FloatingActionButton] between the old and new\n [FloatingActionButtonLocation]s as part of the transition animation.\n * An [Animation] to scale the [FloatingActionButton] during the transition.\n * An [Animation] to rotate the [FloatingActionButton] during the transition.\n * Where to start a new animation from if an animation is interrupted.\n\nSee also:\n\n * [FloatingActionButton], which is a circular button typically shown in the\n bottom right corner of the app.\n * [FloatingActionButtonLocation], which the [Scaffold] uses to place the\n [Scaffold.floatingActionButton] within the [Scaffold]'s layout.", "detail": "", "kind": 7, "label": "FloatingActionButtonAnimator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that supports the Material \"swipe to refresh\" idiom.\n\nWhen the child's [Scrollable] descendant overscrolls, an animated circular\nprogress indicator is faded into view. When the scroll ends, if the\nindicator has been dragged far enough for it to become completely opaque,\nthe [onRefresh] callback is called. The callback is expected to update the\nscrollable's contents and then complete the [Future] it returns. The refresh\nindicator disappears after the callback's [Future] has completed.\n\nIf the [Scrollable] might not have enough content to overscroll, consider\nsettings its `physics` property to [AlwaysScrollableScrollPhysics]:\n\n```dart\nListView(\n physics: const AlwaysScrollableScrollPhysics(),\n children: ...\n```\n\nUsing [AlwaysScrollableScrollPhysics] will ensure that the scroll view is\nalways scrollable and, therefore, can trigger the [RefreshIndicator].\n\nA [RefreshIndicator] can only be used with a vertical scroll view.\n\nSee also:\n\n * <https://material.io/design/platform-guidance/android-swipe-to-refresh.html>\n * [RefreshIndicatorState], can be used to programmatically show the refresh indicator.\n * [RefreshProgressIndicator], widget used by [RefreshIndicator] to show\n the inner circular progress spinner during refreshes.\n * [CupertinoSliverRefreshControl], an iOS equivalent of the pull-to-refresh pattern.\n Must be used as a sliver inside a [CustomScrollView] instead of wrapping\n around a [ScrollView] because it's a part of the scrollable instead of\n being overlaid on top of it.", "detail": "", "kind": 7, "label": "RefreshIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReorderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The callback used by [ReorderableListView] to move an item to a new\nposition in a list.\n\nImplementations should remove the corresponding list item at [oldIndex]\nand reinsert it at [newIndex].\n\nIf [oldIndex] is before [newIndex], removing the item at [oldIndex] from the\nlist will reduce the list's length by one. Implementations used by\n[ReorderableListView] will need to account for this when inserting before\n[newIndex].\n\n\n```dart\nfinal List<MyDataObject> backingList = <MyDataObject>[/* ... */];\n\nvoid handleReorder(int oldIndex, int newIndex) {\n if (oldIndex < newIndex) {\n // removing the item at oldIndex will shorten the list by 1.\n newIndex -= 1;\n }\n final MyDataObject element = backingList.removeAt(oldIndex);\n backingList.insert(newIndex, element);\n}\n```", "detail": "(int oldIndex, int newIndex) → void", "kind": 7, "label": "ReorderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollbarPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [CustomPainter] for painting scrollbars.\n\nUnlike [CustomPainter]s that subclasses [CustomPainter] and only repaint\nwhen [shouldRepaint] returns true (which requires this [CustomPainter] to\nbe rebuilt), this painter has the added optimization of repainting and not\nrebuilding when:\n\n * the scroll position changes; and\n * when the scrollbar fades away.\n\nCalling [update] with the new [ScrollMetrics] will repaint the new scrollbar\nposition.\n\nUpdating the value on the provided [fadeoutOpacityAnimation] will repaint\nwith the new opacity.\n\nYou must call [dispose] on this [ScrollbarPainter] when it's no longer used.\n\nSee also:\n\n * [Scrollbar] for a widget showing a scrollbar around a [Scrollable] in the\n Material Design style.\n * [CupertinoScrollbar] for a widget showing a scrollbar around a\n [Scrollable] in the iOS style.", "detail": "", "kind": 7, "label": "ScrollbarPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeUpwardsPageTransitionsBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used by [PageTransitionsTheme] to define a default [MaterialPageRoute] page\ntransition animation.\n\nThe default animation fades the new page in while translating it upwards,\nstarting from about 25% below the top of the screen.\n\nSee also:\n\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "FadeUpwardsPageTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design widget that displays a horizontal row of tabs.\n\nTypically created as the [AppBar.bottom] part of an [AppBar] and in\nconjunction with a [TabBarView].\n\nIf a [TabController] is not provided, then a [DefaultTabController] ancestor\nmust be provided instead. The tab controller's [TabController.length] must\nequal the length of the [tabs] list.\n\nRequires one of its ancestors to be a [Material] widget.\n\nUses values from [TabBarTheme] if it is set in the current context.\n\nSee also:\n\n * [TabBarView], which displays page views that correspond to each tab.", "detail": "", "kind": 7, "label": "TabBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListItemBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedList].", "detail": "(BuildContext context, int index, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionControls", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for building the selection UI, to be provided by the\nimplementor of the toolbar widget.\n\nOverride text operations such as [handleCut] if needed.", "detail": "", "kind": 7, "label": "TextSelectionControls" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animates the opacity of a widget.\n\nFor a widget that automatically animates between the sizes of two children,\nfading between them, see [AnimatedCrossFade].\n\n\nHere's an illustration of the [FadeTransition] widget, with it's [opacity]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:", "detail": "", "kind": 7, "label": "FadeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that listens for [Notification]s bubbling up the tree.\n\nNotifications will trigger the [onNotification] callback only if their\n[runtimeType] is a subtype of `T`.\n\nTo dispatch notifications, use the [Notification.dispatch] method.", "detail": "", "kind": 7, "label": "NotificationListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics used by a [PageView].\n\nThese physics cause the page view to snap to page boundaries.\n\nSee also:\n\n * [ScrollPhysics], the base class which defines the API for scrolling\n physics.\n * [PageView.physics], which can override the physics used by a page view.", "detail": "", "kind": 7, "label": "PageScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Metrics for a [ScrollPosition] to a scroll view with fixed item sizes.\n\nThe metrics are available on [ScrollNotification]s generated from a scroll\nviews such as [ListWheelScrollView]s with a [FixedExtentScrollController] and\nexposes the current [itemIndex] and the scroll view's [itemExtent].\n\n`FixedExtent` refers to the fact that the scrollable items have the same size.\nThis is distinct from `Fixed` in the parent class name's [FixedScrollMetric]\nwhich refers to its immutability.", "detail": "", "kind": 7, "label": "FixedExtentMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimeOfDay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A value representing a time during the day, independent of the date that\nday might fall on or the time zone.\n\nThe time is represented by [hour] and [minute] pair. Once created, both\nvalues cannot be changed.\n\nYou can create TimeOfDay using the constructor which requires both hour and\nminute or using [DateTime] object.\nHours are specified between 0 and 23, as in a 24-hour clock.\n\n\n```dart\nTimeOfDay now = TimeOfDay.now();\nTimeOfDay releaseTime = TimeOfDay(hour: 15, minute: 0); // 3:00pm\nTimeOfDay roomBooked = TimeOfDay.fromDateTime(DateTime.parse('2018-10-20 16:30:04Z')); // 4:30pm\n```\n\nSee also:\n\n * [showTimePicker], which returns this type.\n * [MaterialLocalizations], which provides methods for formatting values of\n this type according to the chosen [Locale].\n * [DateTime], which represents date and time, and is subject to eras and\n time zones.", "detail": "", "kind": 7, "label": "TimeOfDay" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFade", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that cross-fades between two given children and animates itself\nbetween their sizes.\n\nThe animation is controlled through the [crossFadeState] parameter.\n[firstCurve] and [secondCurve] represent the opacity curves of the two\nchildren. The [firstCurve] is inverted, i.e. it fades out when providing a\ngrowing curve like [Curves.linear]. The [sizeCurve] is the curve used to\nanimate between the size of the fading-out child and the size of the\nfading-in child.\n\nThis widget is intended to be used to fade a pair of widgets with the same\nwidth. In the case where the two children have different heights, the\nanimation crops overflowing children during the animation by aligning their\ntop edge, which means that the bottom will be clipped.\n\nThe animation is automatically triggered when an existing\n[AnimatedCrossFade] is rebuilt with a different value for the\n[crossFadeState] property.\n\n\nThis code fades between two representations of the Flutter logo. It depends\non a boolean field `_first`; when `_first` is true, the first logo is shown,\notherwise the second logo is shown. When the field changes state, the\n[AnimatedCrossFade] widget cross-fades between the two forms of the logo\nover three seconds.\n\n```dart\nAnimatedCrossFade(\n duration: const Duration(seconds: 3),\n firstChild: const FlutterLogo(style: FlutterLogoStyle.horizontal, size: 100.0),\n secondChild: const FlutterLogo(style: FlutterLogoStyle.stacked, size: 100.0),\n crossFadeState: _first ? CrossFadeState.showFirst : CrossFadeState.showSecond,\n)\n```\n\nSee also:\n\n * [AnimatedSize], the lower-level widget which [AnimatedCrossFade] uses to\n automatically change size.\n * [AnimatedSwitcher], which switches out a child for a new one with a\n customizable transition.", "detail": "", "kind": 7, "label": "AnimatedCrossFade" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScriptCategory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A characterization of the of a [TextTheme]'s glyphs that is used to define\nits localized [TextStyle] geometry for [ThemeData.textTheme].\n\nThe script category defines the overall geometry of a [TextTheme] for\nthe static [MaterialTextGeometry.localizedFor] method in terms of the\nthree language categories defined in <https://material.io/go/design-typography>.\n\nGenerally speaking, font sizes for [ScriptCategory.tall] and\n[ScriptCategory.dense] scripts - for text styles that are smaller than the\ntitle style - are one unit larger than they are for\n[ScriptCategory.englishLike] scripts.", "detail": "", "kind": 13, "label": "ScriptCategory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tooltip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design tooltip.\n\nTooltips provide text labels that help explain the function of a button or\nother user interface action. Wrap the button in a [Tooltip] widget to\nshow a label when the widget long pressed (or when the user takes some\nother appropriate action).\n\n\nMany widgets, such as [IconButton], [FloatingActionButton], and\n[PopupMenuButton] have a `tooltip` property that, when non-null, causes the\nwidget to include a [Tooltip] in its build.\n\nTooltips improve the accessibility of visual widgets by proving a textual\nrepresentation of the widget, which, for example, can be vocalized by a\nscreen reader.\n\nSee also:\n\n * <https://material.io/design/components/tooltips.html>", "detail": "", "kind": 7, "label": "Tooltip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrivenScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An activity that animates a scroll view based on animation parameters.\n\nFor example, a [DrivenScrollActivity] is used to implement\n[ScrollController.animateTo].\n\nSee also:\n\n * [BallisticScrollActivity], which animates a scroll view based on a\n physics [Simulation].", "detail": "", "kind": 7, "label": "DrivenScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Spacer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Spacer creates an adjustable, empty spacer that can be used to tune the\nspacing between widgets in a [Flex] container, like [Row] or [Column].\n\nThe [Spacer] widget will take up any available space, so setting the\n[Flex.mainAxisAlignment] on a flex container that contains a [Spacer] to\n[MainAxisAlignment.spaceAround], [MainAxisAlignment.spaceBetween], or\n[MainAxisAlignment.spaceEvenly] will not have any visible effect: the\n[Spacer] has taken up all of the additional space, therefore there is none\nleft to redistribute.\n\n\n```dart\nRow(\n children: <Widget>[\n Text('Begin'),\n Spacer(), // Defaults to a flex of one.\n Text('Middle'),\n // Gives twice the space between Middle and End than Begin and Middle.\n Spacer(flex: 2),\n Text('End'),\n ],\n)\n```\n\nSee also:\n\n * [Row] and [Column], which are the most common containers to use a Spacer\n in.\n * [SizedBox], to create a box with a specific size and an optional child.", "detail": "", "kind": 7, "label": "Spacer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollStartNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has started scrolling.\n\nSee also:\n\n * [ScrollEndNotification], which indicates that scrolling has stopped.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollStartNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveHandle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Listenable] which can be manually triggered.\n\nUsed with [KeepAliveNotification] objects as their\n[KeepAliveNotification.handle].\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses a\n[KeepAliveHandle] internally.", "detail": "", "kind": 7, "label": "KeepAliveHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SafeArea", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that insets its child by sufficient padding to avoid intrusions by\nthe operating system.\n\nFor example, this will indent the child by enough to avoid the status bar at\nthe top of the screen.\n\nIt will also indent the child by the amount necessary to avoid The Notch on\nthe iPhone X, or other similar creative physical features of the display.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\n\nSee also:\n\n * [SliverSafeArea], for insetting slivers to avoid operating system\n intrusions.\n * [Padding], for insetting widgets in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTileControlAffinity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Where to place the control in widgets that use [ListTile] to position a\ncontrol next to a label.\n\nSee also:\n\n * [CheckboxListTile], which combines a [ListTile] with a [Checkbox].\n * [RadioListTile], which combines a [ListTile] with a [Radio] button.", "detail": "", "kind": 13, "label": "ListTileControlAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedDefaultTextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [DefaultTextStyle] which automatically transitions the\ndefault text style (the text style to apply to descendant [Text] widgets\nwithout explicit style) over a given duration whenever the given style\nchanges.\n\nThe [textAlign], [softWrap], [textOverflow], and [maxLines] properties are\nnot animated and take effect immediately when changed.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].", "detail": "", "kind": 7, "label": "AnimatedDefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that composes other [Element]s.\n\nRather than creating a [RenderObject] directly, a [ComponentElement] creates\n[RenderObject]s indirectly by creating other [Element]s.\n\nContrast with [RenderObjectElement].", "detail": "", "kind": 7, "label": "ComponentElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialTapTargetSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures the tap target and layout size of certain Material widgets.\n\nChanging the value in [ThemeData.materialTapTargetSize] will affect the\naccessibility experience.\n\nSome of the impacted widgets include:\n\n * [FloatingActionButton], only the mini tap target size is increased.\n * [MaterialButton]\n * [OutlineButton]\n * [FlatButton]\n * [RaisedButton]\n * [TimePicker]\n * [SnackBar]\n * [Chip]\n * [RawChip]\n * [InputChip]\n * [ChoiceChip]\n * [FilterChip]\n * [ActionChip]\n * [Radio]\n * [Switch]\n * [Checkbox]", "detail": "", "kind": 13, "label": "MaterialTapTargetSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleListResolutionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.localeListResolutionCallback].\n\nA [LocaleListResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the list of\nlocales for the device.\n\nThe [locales] list is the device's preferred locales when the app started, or the\ndevice's preferred locales the user selected after the app was started. This list\nis in order of preference. If this list is null or empty, then Flutter has not yet\nreceived the locale information from the platform. The [supportedLocales] parameter\nis just the value of [WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleResolutionCallback], which takes only one default locale (instead of a list)\n and is attempted only after this callback fails or is null. [LocaleListResolutionCallback]\n is recommended over [LocaleResolutionCallback].", "detail": "(List<Locale> locales, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleListResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SnackBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A lightweight message with an optional action which briefly displays at the\nbottom of the screen.\n\nTo display a snack bar, call `Scaffold.of(context).showSnackBar()`, passing\nan instance of [SnackBar] that describes the message.\n\nTo control how long the [SnackBar] remains visible, specify a [duration].\n\nA SnackBar with an action will not time out when TalkBack or VoiceOver are\nenabled. This is controlled by [AccessibilityFeatures.accessibleNavigation].\n\nSee also:\n\n * [Scaffold.of], to obtain the current [ScaffoldState], which manages the\n display and animation of snack bars.\n * [ScaffoldState.showSnackBar], which displays a [SnackBar].\n * [ScaffoldState.removeCurrentSnackBar], which abruptly hides the currently\n displayed snack bar, if any, and allows the next to be displayed.\n * [SnackBarAction], which is used to specify an [action] button to show\n on the snack bar.\n * <https://material.io/design/components/snackbars.html>", "detail": "", "kind": 7, "label": "SnackBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of a [Scrollable]'s contents, useful for modeling the state\nof its viewport.\n\nThis class defines a current position, [pixels], and a range of values\nconsidered \"in bounds\" for that position. The range has a minimum value at\n[minScrollExtent] and a maximum value at [maxScrollExtent] (inclusive). The\nviewport scrolls in the direction and axis described by [axisDirection]\nand [axis].\n\nThe [outOfRange] getter will return true if [pixels] is outside this defined\nrange. The [atEdge] getter will return true if the [pixels] position equals\neither the [minScrollExtent] or the [maxScrollExtent].\n\nThe dimensions of the viewport in the given [axis] are described by\n[viewportDimension].\n\nThe above values are also exposed in terms of [extentBefore],\n[extentInside], and [extentAfter], which may be more useful for use cases\nsuch as scroll bars; for example, see [Scrollbar].\n\nSee also:\n\n * [FixedScrollMetrics], which is an immutable object that implements this\n interface.", "detail": "", "kind": 7, "label": "ScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAliveClientMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin with convenience methods for clients of [AutomaticKeepAlive]. Used\nwith [State] subclasses.\n\nSubclasses must implement [wantKeepAlive], and their [build] methods must\ncall `super.build` (the return value will always return null, and should be\nignored).\n\nThen, whenever [wantKeepAlive]'s value changes (or might change), the\nsubclass should call [updateKeepAlive].\n\nThe type argument `T` is the type of the [StatefulWidget] subclass of the\n[State] into which this class is being mixed.\n\nSee also:\n\n * [AutomaticKeepAlive], which listens to messages from this mixin.\n * [KeepAliveNotification], the notifications sent by this mixin.", "detail": "", "kind": 7, "label": "AutomaticKeepAliveClientMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offstage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that lays the child out as if it was in the tree, but without\npainting anything, without making the child available for hit testing, and\nwithout taking any room in the parent.\n\nAnimations continue to run in offstage children, and therefore use battery\nand CPU time, regardless of whether the animations end up being visible.\n\n[Offstage] can be used to measure the dimensions of a widget without\nbringing it on screen (yet). To hide a widget from view while it is not\nneeded, prefer removing the widget from the tree entirely rather than\nkeeping it alive in an [Offstage] subtree.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly).\n * [TickerMode], which can be used to disable animations in a subtree.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Offstage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialGap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that represents a gap within [MergeableMaterial].\n\nAll [MaterialGap] objects need a [LocalKey].", "detail": "", "kind": 7, "label": "MaterialGap" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state of connection to an asynchronous computation.\n\nSee also:\n\n * [AsyncSnapshot], which augments a connection state with information\n received from the asynchronous computation.", "detail": "", "kind": 13, "label": "ConnectionState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [ParentDataWidget] as its configuration.", "detail": "", "kind": 7, "label": "ParentDataElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderToggleable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for material style toggleable controls with toggle animations.\n\nThis class handles storing the current value, dispatching ValueChanged on a\ntap gesture and driving a changed animation. Subclasses are responsible for\npainting.", "detail": "", "kind": 7, "label": "RenderToggleable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A viewport showing a subset of children on a wheel.\n\nTypically used with [ListWheelScrollView], this viewport is similar to\n[Viewport] in that it shows a subset of children in a scrollable based\non the scrolling offset and the children's dimensions. But uses\n[RenderListWheelViewport] to display the children on a wheel.\n\nSee also:\n\n * [ListWheelScrollView], widget that combines this viewport with a scrollable.\n * [RenderListWheelViewport], the render object that renders the children\n on a wheel.", "detail": "", "kind": 7, "label": "ListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that creates a widget, e.g. [StatelessWidget.build]\nor [State.build].\n\nUsed by [Builder.builder], [OverlayEntry.builder], etc.\n\nSee also:\n\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [TransitionBuilder], which is similar but also takes a child.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context) → Widget", "kind": 7, "label": "WidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the draggable is dropped.\n\nThe velocity and offset at which the pointer was moving when the draggable\nwas dropped is available in the [DraggableDetails]. Also included in the\n`details` is whether the draggable's [DragTarget] accepted it.\n\nUsed by [Draggable.onDragEnd]", "detail": "(DraggableDetails details) → void", "kind": 7, "label": "DragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewHeaderSliversBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [NestedScrollView] for building its header.\n\nThe `innerBoxIsScrolled` argument is typically used to control the\n[SliverAppBar.forceElevated] property to ensure that the app bar shows a\nshadow, since it would otherwise not necessarily be aware that it had\ncontent ostensibly below it.", "detail": "(BuildContext context, bool innerBoxIsScrolled) → List<Widget>", "kind": 7, "label": "NestedScrollViewHeaderSliversBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialPageRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A modal route that replaces the entire screen with a platform-adaptive\ntransition.\n\nFor Android, the entrance transition for the page slides the page upwards\nand fades it in. The exit transition is the same, but in reverse.\n\nThe transition is adaptive to the platform and on iOS, the page slides in\nfrom the right and exits in reverse. The page also shifts to the left in\nparallax when another page enters to cover it. (These directions are flipped\nin environments with a right-to-left reading direction.)\n\nBy default, when a modal route is replaced by another, the previous route\nremains in memory. To free all the resources when this is not necessary, set\n[maintainState] to false.\n\nThe `fullscreenDialog` property specifies whether the incoming page is a\nfullscreen modal dialog. On iOS, those pages animate from the bottom to the\ntop rather than horizontally.\n\nThe type `T` specifies the return type of the route which can be supplied as\nthe route is popped from the stack via [Navigator.pop] by providing the\noptional `result` argument.\n\nSee also:\n\n * [PageTransitionsTheme], which defines the default page transitions used\n by [MaterialPageRoute.buildTransitions].", "detail": "", "kind": 7, "label": "MaterialPageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AspectRatio", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that attempts to size the child to a specific aspect ratio.\n\nThe widget first tries the largest width permitted by the layout\nconstraints. The height of the widget is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The widget will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the widget would\ncontinue iterating through the constraints. If the widget does not\nfind a feasible size after consulting each constraint, the widget\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "AspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A modal route that overlays a widget over the current route.", "detail": "", "kind": 7, "label": "PopupRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design app bar.\n\nAn app bar consists of a toolbar and potentially other widgets, such as a\n[TabBar] and a [FlexibleSpaceBar]. App bars typically expose one or more\ncommon [actions] with [IconButton]s which are optionally followed by a\n[PopupMenuButton] for less common operations (sometimes called the \"overflow\nmenu\").\n\nApp bars are typically used in the [Scaffold.appBar] property, which places\nthe app bar as a fixed-height widget at the top of the screen. For a\nscrollable app bar, see [SliverAppBar], which embeds an [AppBar] in a sliver\nfor use in a [CustomScrollView].\n\nThe AppBar displays the toolbar widgets, [leading], [title], and [actions],\nabove the [bottom] (if any). The [bottom] is usually used for a [TabBar]. If\na [flexibleSpace] widget is specified then it is stacked behind the toolbar\nand the bottom widget. The following diagram shows where each of these slots\nappears in the toolbar when the writing language is left-to-right (e.g.\nEnglish):\n\n![The leading widget is in the top left, the actions are in the top right,\nthe title is between them. The bottom is, naturally, at the bottom, and the\nflexibleSpace is behind all of them.](https://flutter.github.io/assets-for-api-docs/assets/material/app_bar.png)\n\nIf the [leading] widget is omitted, but the [AppBar] is in a [Scaffold] with\na [Drawer], then a button will be inserted to open the drawer. Otherwise, if\nthe nearest [Navigator] has any previous routes, a [BackButton] is inserted\ninstead. This behavior can be turned off by setting the [automaticallyImplyLeading]\nto false. In that case a null leading widget will result in the middle/title widget\nstretching to start.\n\n\n```dart\nAppBar(\n title: Text('My Fancy Dress'),\n actions: <Widget>[\n IconButton(\n icon: Icon(Icons.playlist_play),\n tooltip: 'Air it',\n onPressed: _airDress,\n ),\n IconButton(\n icon: Icon(Icons.playlist_add),\n tooltip: 'Restitch it',\n onPressed: _restitchDress,\n ),\n IconButton(\n icon: Icon(Icons.playlist_add_check),\n tooltip: 'Repair it',\n onPressed: _repairDress,\n ),\n ],\n)\n```\n\nSee also:\n\n * [Scaffold], which displays the [AppBar] in its [Scaffold.appBar] slot.\n * [SliverAppBar], which uses [AppBar] to provide a flexible app bar that\n can be used in a [CustomScrollView].\n * [TabBar], which is typically placed in the [bottom] slot of the [AppBar]\n if the screen has multiple pages arranged in tabs.\n * [IconButton], which is used with [actions] to show buttons on the app bar.\n * [PopupMenuButton], to show a popup menu on the app bar, via [actions].\n * [FlexibleSpaceBar], which is used with [flexibleSpace] when the app bar\n can expand and collapse.\n * <https://material.io/design/components/app-bars-top.html>", "detail": "", "kind": 7, "label": "AppBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Feedback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides platform-specific acoustic and/or haptic feedback for certain\nactions.\n\nFor example, to play the Android-typically click sound when a button is\ntapped, call [forTap]. For the Android-specific vibration when long pressing\nan element, call [forLongPress]. Alternatively, you can also wrap your\n[GestureDetector.onTap] or [GestureDetector.onLongPress] callback in\n[wrapForTap] or [wrapForLongPress] to achieve the same (see example code\nbelow).\n\nCalling any of these methods is a no-op on iOS as actions on that platform\ntypically don't provide haptic or acoustic feedback.\n\nAll methods in this class are usually called from within a\n[StatelessWidget.build] method or from a [State]'s methods as you have to\nprovide a [BuildContext].\n\n\nTo trigger platform-specific feedback before executing the actual callback:\n\n```dart\nclass WidgetWithWrappedHandler extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: Feedback.wrapForTap(_onTapHandler, context),\n onLongPress: Feedback.wrapForLongPress(_onLongPressHandler, context),\n child: const Text('X'),\n );\n }\n\n void _onTapHandler() {\n // Respond to tap.\n }\n\n void _onLongPressHandler() {\n // Respond to long press.\n }\n}\n```\n\nAlternatively, you can also call [forTap] or [forLongPress] directly within\nyour tap or long press handler:\n\n```dart\nclass WidgetWithExplicitCall extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: () {\n // Do some work (e.g. check if the tap is valid)\n Feedback.forTap(context);\n // Do more work (e.g. respond to the tap)\n },\n onLongPress: () {\n // Do some work (e.g. check if the long press is valid)\n Feedback.forLongPress(context);\n // Do more work (e.g. respond to the long press)\n },\n child: const Text('X'),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "Feedback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for building the widget representing the form field.\n\nUsed by [FormField.builder].", "detail": "(FormFieldState<T> field) → Widget", "kind": 7, "label": "FormFieldBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridTileBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A header used in a material design [GridTile].\n\nTypically used to add a one or two line header or footer on a [GridTile].\n\nFor a one-line header, include a [title] widget. To add a second line, also\ninclude a [subtitle] widget. Use [leading] or [trailing] to add an icon.\n\nSee also:\n\n * [GridTile]\n * <https://material.io/design/components/image-lists.html#anatomy>", "detail": "", "kind": 7, "label": "GridTileBar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Builder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A platonic widget that calls a closure to obtain its child widget.\n\nSee also:\n\n * [StatefulBuilder], a platonic widget which also has state.", "detail": "", "kind": 7, "label": "Builder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A decoration on a part of a [Material].\n\nThis object is rarely created directly. Instead of creating an ink\ndecoration directly, consider using an [Ink] widget, which uses this class\nin combination with [Padding] and [ConstrainedBox] to draw a decoration on a\n[Material].\n\nSee also:\n\n * [Ink], the corresponding widget.\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink is painted.", "detail": "", "kind": 7, "label": "InkDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Center", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that centers its child within itself.\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\nSee also:\n\n * [Align], which lets you arbitrarily position a child within itself,\n rather than just centering it.\n * [Row], a widget that displays its children in a horizontal array.\n * [Column], a widget that displays its children in a vertical array.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Center" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Text", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A run of text with a single style.\n\nThe [Text] widget displays a string of text with single style. The string\nmight break across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nThe [style] argument is optional. When omitted, the text will use the style\nfrom the closest enclosing [DefaultTextStyle]. If the given style's\n[TextStyle.inherit] property is true (the default), the given style will\nbe merged with the closest enclosing [DefaultTextStyle]. This merging\nbehavior is useful, for example, to make the text bold while using the\ndefault font family and size.\n\n\n```dart\nText(\n 'Hello, $_name! How are you?',\n textAlign: TextAlign.center,\n overflow: TextOverflow.ellipsis,\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\nUsing the [Text.rich] constructor, the [Text] widget can\ndisplay a paragraph with differently styled [TextSpan]s. The sample\nthat follows displays \"Hello beautiful world\" with different styles\nfor each word.\n\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'Hello', // default text style\n children: <TextSpan>[\n TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),\n TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),\n ],\n ),\n)\n```\n\n## Interactivity\n\nTo make [Text] react to touch events, wrap it in a [GestureDetector] widget\nwith a [GestureDetector.onTap] handler.\n\nIn a material design application, consider using a [FlatButton] instead, or\nif that isn't appropriate, at least using an [InkWell] instead of\n[GestureDetector].\n\nTo make sections of the text interactive, use [RichText] and specify a\n[TapGestureRecognizer] as the [TextSpan.recognizer] of the relevant part of\nthe text.\n\nSee also:\n\n * [RichText], which gives you more control over the text styles.\n * [DefaultTextStyle], which sets default styles for [Text] widgets.", "detail": "", "kind": 7, "label": "Text" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes and positions children efficiently, according to the\nlogic in a [FlowDelegate].\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow, which happens\nwithout the children being laid out again (contrast this with a [Stack],\nwhich does the sizing and positioning together during layout).\n\nThe most efficient way to trigger a repaint of the flow is to supply an\nanimation to the constructor of the [FlowDelegate]. The flow will listen to\nthis animation and repaint whenever the animation ticks, avoiding both the\nbuild and layout phases of the pipeline.\n\nSee also:\n\n * [Wrap], which provides the layout model that some other frameworks call\n \"flow\", and is otherwise unrelated to [Flow].\n * [FlowDelegate], which controls the visual presentation of the children.\n * [Stack], which arranges children relative to the edges of the container.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A platonic widget that both has state and calls a closure to obtain its child widget.\n\nSee also:\n\n * [Builder], the platonic stateless widget.", "detail": "", "kind": 7, "label": "StatefulBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A bridge from a [RenderObject] to an [Element] tree.\n\nThe given container is the [RenderObject] that the [Element] tree should be\ninserted into. It must be a [RenderObject] that implements the\n[RenderObjectWithChildMixin] protocol. The type argument `T` is the kind of\n[RenderObject] that the container expects as its child.\n\nUsed by [runApp] to bootstrap applications.", "detail": "", "kind": 7, "label": "RenderObjectToWidgetAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaffoldGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Geometry information for [Scaffold] components after layout is finished.\n\nTo get a [ValueNotifier] for the scaffold geometry of a given\n[BuildContext], use [Scaffold.geometryOf].\n\nThe ScaffoldGeometry is only available during the paint phase, because\nits value is computed during the animation and layout phases prior to painting.\n\nFor an example of using the [ScaffoldGeometry], see the [BottomAppBar],\nwhich uses the [ScaffoldGeometry] to paint a notch around the\n[FloatingActionButton].\n\nFor information about the [Scaffold]'s geometry that is used while laying\nout the [FloatingActionButton], see [ScaffoldPrelayoutGeometry].", "detail": "", "kind": 7, "label": "ScaffoldGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridTile", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A tile in a material design grid list.\n\nA grid list is a [GridView] of tiles in a vertical and horizontal\narray. Each tile typically contains some visually rich content (e.g., an\nimage) together with a [GridTileBar] in either a [header] or a [footer].\n\nSee also:\n\n * [GridView], which is a scrollable grid of tiles.\n * [GridTileBar], which is typically used in either the [header] or\n [footer].\n * <https://material.io/design/components/image-lists.html>", "detail": "", "kind": 7, "label": "GridTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LimitedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box that limits its size only when it's unconstrained.\n\nIf this widget's maximum width is unconstrained then its child's width is\nlimited to [maxWidth]. Similarly, if this widget's maximum height is\nunconstrained then its child's height is limited to [maxHeight].\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).\n\nSee also:\n\n * [ConstrainedBox], which applies its constraints in all cases, not just\n when the incoming constraints are unbounded.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "LimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialRectArcTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that interpolates a [Rect] by having its opposite corners follow\ncircular arcs.\n\nThis class specializes the interpolation of [Tween<Rect>] so that instead of\ngrowing or shrinking linearly, opposite corners of the rectangle follow arcs\nin a manner consistent with material design principles.\n\nSpecifically, the rectangle corners whose diagonals are closest to the overall\ndirection of the animation follow arcs defined with [MaterialPointArcTween].\n\nSee also:\n\n * [MaterialRectCenterArcTween], which interpolates a rect along a circular\n arc between the begin and end [Rect]'s centers.\n * [Tween], for a discussion on how to use interpolation objects.\n * [MaterialPointArcTween], the analogue for [Offset] interpolation.\n * [RectTween], which does a linear rectangle interpolation.\n * [Hero.createRectTween], which can be used to specify the tween that defines\n a hero's path.", "detail": "", "kind": 7, "label": "MaterialRectArcTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncSnapshot", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Immutable representation of the most recent interaction with an asynchronous\ncomputation.\n\nSee also:\n\n * [StreamBuilder], which builds itself based on a snapshot from interacting\n with a [Stream].\n * [FutureBuilder], which builds itself based on a snapshot from interacting\n with a [Future].", "detail": "", "kind": 7, "label": "AsyncSnapshot" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultAssetBundle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that determines the default asset bundle for its descendants.\n\nFor example, used by [Image] to determine which bundle to use for\n[AssetImage]s if no bundle is specified explicitly.\n\n\nThis can be used in tests to override what the current asset bundle is, thus\nallowing specific resources to be injected into the widget under test.\n\nFor example, a test could create a test asset bundle like this:\n\n```dart\nclass TestAssetBundle extends CachingAssetBundle {\n @override\n Future<ByteData> load(String key) async {\n if (key == 'resources/test')\n return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);\n return null;\n }\n}\n```\n\n...then wrap the widget under test with a [DefaultAssetBundle] using this\nbundle implementation:\n\n```dart\nawait tester.pumpWidget(\n MaterialApp(\n home: DefaultAssetBundle(\n bundle: TestAssetBundle(),\n child: TestWidget(),\n ),\n ),\n);\n```\n\nAssuming that `TestWidget` uses [DefaultAssetBundle.of] to obtain its\n[AssetBundle], it will now see the [TestAssetBundle]'s \"Hello World!\" data\nwhen requesting the \"resources/test\" asset.\n\nSee also:\n\n * [AssetBundle], the interface for asset bundles.\n * [rootBundle], the default default asset bundle.", "detail": "", "kind": 7, "label": "DefaultAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChipTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Applies a chip theme to descendant [RawChip]-based widgets, like [Chip],\n[InputChip], [ChoiceChip], [FilterChip], and [ActionChip].\n\nA chip theme describes the color, shape and text styles for the chips it is\napplied to\n\nDescendant widgets obtain the current theme's [ChipThemeData] object using\n[ChipTheme.of]. When a widget uses [ChipTheme.of], it is automatically\nrebuilt if the theme later changes.\n\nThe [ThemeData] object given by the [Theme.of] call also contains a default\n[Theme.chipTheme] that can be customized by copying it (using\n[ChipThemeData.copyWith]).\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [ChipThemeData], which describes the actual configuration of a chip\n theme.\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "ChipTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataTable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design data table.\n\nDisplaying data in a table is expensive, because to lay out the\ntable all the data must be measured twice, once to negotiate the\ndimensions to use for each column, and once to actually lay out\nthe table given the results of the negotiation.\n\nFor this reason, if you have a lot of data (say, more than a dozen\nrows with a dozen columns, though the precise limits depend on the\ntarget device), it is suggested that you use a\n[PaginatedDataTable] which automatically splits the data into\nmultiple pages.\n\nSee also:\n\n * [DataColumn], which describes a column in the data table.\n * [DataRow], which contains the data for a row in the data table.\n * [DataCell], which contains the data for a single cell in the data table.\n * [PaginatedDataTable], which shows part of the data in a data table and\n provides controls for paging through the remainder of the data.\n * <https://material.io/design/components/data-tables.html>", "detail": "", "kind": 7, "label": "DataTable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Banner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a diagonal message above the corner of another widget.\n\nUseful for showing the execution mode of an app (e.g., that asserts are\nenabled.)\n\nSee also:\n\n * [CheckedModeBanner], which the [WidgetsApp] widget includes by default in\n debug mode, to show a banner that says \"DEBUG\".", "detail": "", "kind": 7, "label": "Banner" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppBarTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [AppBar] widgets.\n\nDescendant widgets obtain the current [AppBarTheme] object using\n`AppBarTheme.of(context)`. Instances of [AppBarTheme] can be customized\nwith [AppBarTheme.copyWith].\n\nTypically an [AppBarTheme] is specified as part of the overall [Theme] with\n[ThemeData.appBarTheme].\n\nAll [AppBarTheme] properties are `null` by default. When null, the [AppBar]\nwill use the values from [ThemeData] if they exist, otherwise it will\nprovide its own defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "AppBarTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetectorState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [RawGestureDetector].", "detail": "", "kind": 7, "label": "RawGestureDetectorState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [ProxyWidget] as its configuration.", "detail": "", "kind": 7, "label": "ProxyElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExpansionPanelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that's called when an [ExpansionPanel] is\nexpanded or collapsed.\n\nThe position of the panel within an [ExpansionPanelList] is given by\n[panelIndex].", "detail": "(int panelIndex, bool isExpanded) → void", "kind": 7, "label": "ExpansionPanelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListTile", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single fixed-height row that typically contains some text as well as\na leading or trailing icon.\n\nA list tile contains one to three lines of text optionally flanked by icons or\nother widgets, such as check boxes. The icons (or other widgets) for the\ntile are defined with the [leading] and [trailing] parameters. The first\nline of text is not optional and is specified with [title]. The value of\n[subtitle], which _is_ optional, will occupy the space allocated for an\nadditional line of text, or two lines if [isThreeLine] is true. If [dense]\nis true then the overall height of this tile and the size of the\n[DefaultTextStyle]s that wrap the [title] and [subtitle] widget are reduced.\n\nIt is the responsibility of the caller to ensure that [title] does not wrap,\nand to ensure that [subtitle] doesn't wrap (if [isThreeLine] is false) or\nwraps to two lines (if it is true).\n\nThe heights of the [leading] and [trailing] widgets are constrained\naccording to the\n[Material spec](https://material.io/design/components/lists.html).\nAn exception is made for one-line ListTiles for accessibility. Please\nsee the example below to see how to adhere to both Material spec and\naccessibility requirements.\n\nNote that [leading] and [trailing] widgets can expand as far as they wish\nhorizontally, so ensure that they are properly constrained.\n\nList tiles are typically used in [ListView]s, or arranged in [Column]s in\n[Drawer]s and [Card]s.\n\nRequires one of its ancestors to be a [Material] widget.\n\n\nThis example uses a [ListView] to demonstrate different configurations of\n[ListTile]s in [Card]s.\n\n![Different variations of ListTile](https://flutter.github.io/assets-for-api-docs/assets/material/list_tile.png)\n\n```dart\nListView(\n children: const <Widget>[\n Card(child: ListTile(title: Text('One-line ListTile'))),\n Card(\n child: ListTile(\n leading: FlutterLogo(),\n title: Text('One-line with leading widget'),\n ),\n ),\n Card(\n child: ListTile(\n title: Text('One-line with trailing widget'),\n trailing: Icon(Icons.more_vert),\n ),\n ),\n Card(\n child: ListTile(\n leading: FlutterLogo(),\n title: Text('One-line with both widgets'),\n trailing: Icon(Icons.more_vert),\n ),\n ),\n Card(\n child: ListTile(\n title: Text('One-line dense ListTile'),\n dense: true,\n ),\n ),\n Card(\n child: ListTile(\n leading: FlutterLogo(size: 56.0),\n title: Text('Two-line ListTile'),\n subtitle: Text('Here is a second line'),\n trailing: Icon(Icons.more_vert),\n ),\n ),\n Card(\n child: ListTile(\n leading: FlutterLogo(size: 72.0),\n title: Text('Three-line ListTile'),\n subtitle: Text(\n 'A sufficiently long subtitle warrants three lines.'\n ),\n trailing: Icon(Icons.more_vert),\n isThreeLine: true,\n ),\n ),\n ],\n)\n```\n\nTiles can be much more elaborate. Here is a tile which can be tapped, but\nwhich is disabled when the `_act` variable is not 2. When the tile is\ntapped, the whole row has an ink splash effect (see [InkWell]).\n\n```dart\nint _act = 1;\n// ...\nListTile(\n leading: const Icon(Icons.flight_land),\n title: const Text('Trix\\'s airplane'),\n subtitle: _act != 2 ? const Text('The airplane is only in Act II.') : null,\n enabled: _act == 2,\n onTap: () { /* react to the tile being tapped */ }\n)\n```\n\nTo be accessible, tappable [leading] and [trailing] widgets have to\nbe at least 48x48 in size. However, to adhere to the Material spec,\n[trailing] and [leading] widgets in one-line ListTiles should visually be\nat most 32 ([dense]: true) or 40 ([dense]: false) in height, which may\nconflict with the accessibility requirement.\n\nFor this reason, a one-line ListTile allows the height of [leading]\nand [trailing] widgets to be constrained by the height of the ListTile.\nThis allows for the creation of tappable [leading] and [trailing] widgets\nthat are large enough, but it is up to the developer to ensure that\ntheir widgets follow the Material spec.\n\n\nHere is an example of a one-line, non-[dense] ListTile with a\ntappable leading widget that adheres to accessibility requirements and\nthe Material spec. To adjust the use case below for a one-line, [dense]\nListTile, adjust the vertical padding to 8.0.\n\n```dart\nListTile(\n leading: GestureDetector(\n behavior: HitTestBehavior.translucent,\n onTap: () {},\n child: Container(\n width: 48,\n height: 48,\n padding: EdgeInsets.symmetric(vertical: 4.0),\n alignment: Alignment.center,\n child: CircleAvatar(),\n ),\n ),\n title: Text('title'),\n dense: false,\n),\n```\n\n## The ListTile layout isn't exactly what I want\n\nIf the way ListTile pads and positions its elements isn't quite what\nyou're looking for, it's easy to create custom list items with a\ncombination of other widgets, such as [Row]s and [Column]s.\n\n\nHere is an example of a custom list item that resembles a Youtube related\nvideo list item created with [Expanded] and [Container] widgets.\n\n![Custom list item a](https://flutter.github.io/assets-for-api-docs/assets/widgets/custom_list_item_a.png)\n\n```dart\nclass CustomListItem extends StatelessWidget {\n const CustomListItem({\n this.thumbnail,\n this.title,\n this.user,\n this.viewCount,\n });\n\n final Widget thumbnail;\n final String title;\n final String user;\n final int viewCount;\n\n @override\n Widget build(BuildContext context) {\n return Padding(\n padding: const EdgeInsets.symmetric(vertical: 5.0),\n child: Row(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n Expanded(\n flex: 2,\n child: thumbnail,\n ),\n Expanded(\n flex: 3,\n child: _VideoDescription(\n title: title,\n user: user,\n viewCount: viewCount,\n ),\n ),\n const Icon(\n Icons.more_vert,\n size: 16.0,\n ),\n ],\n ),\n );\n }\n}\n\nclass _VideoDescription extends StatelessWidget {\n const _VideoDescription({\n Key key,\n this.title,\n this.user,\n this.viewCount,\n }) : super(key: key);\n\n final String title;\n final String user;\n final int viewCount;\n\n @override\n Widget build(BuildContext context) {\n return Padding(\n padding: const EdgeInsets.fromLTRB(5.0, 0.0, 0.0, 0.0),\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n Text(\n title,\n style: const TextStyle(\n fontWeight: FontWeight.w500,\n fontSize: 14.0,\n ),\n ),\n const Padding(padding: EdgeInsets.symmetric(vertical: 2.0)),\n Text(\n user,\n style: const TextStyle(fontSize: 10.0),\n ),\n const Padding(padding: EdgeInsets.symmetric(vertical: 1.0)),\n Text(\n '$viewCount views',\n style: const TextStyle(fontSize: 10.0),\n ),\n ],\n ),\n );\n }\n}\n```\n\n```dart\nWidget build(BuildContext context) {\n return ListView(\n padding: const EdgeInsets.all(8.0),\n itemExtent: 106.0,\n children: <CustomListItem>[\n CustomListItem(\n user: 'Flutter',\n viewCount: 999000,\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.blue),\n ),\n title: 'The Flutter YouTube Channel',\n ),\n CustomListItem(\n user: 'Dash',\n viewCount: 884000,\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.yellow),\n ),\n title: 'Announcing Flutter 1.0',\n ),\n ],\n );\n}\n```\n\n\nHere is an example of an article list item with multi-line titles and\nsubtitles. It utilizes [Row]s and [Column]s, as well as [Expanded] and\n[AspectRatio] widgets to organize its layout.\n\n![Custom list item b](https://flutter.github.io/assets-for-api-docs/assets/widgets/custom_list_item_b.png)\n\n```dart\nclass _ArticleDescription extends StatelessWidget {\n _ArticleDescription({\n Key key,\n this.title,\n this.subtitle,\n this.author,\n this.publishDate,\n this.readDuration,\n }) : super(key: key);\n\n final String title;\n final String subtitle;\n final String author;\n final String publishDate;\n final String readDuration;\n\n @override\n Widget build(BuildContext context) {\n return Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n Text(\n '$title',\n maxLines: 2,\n overflow: TextOverflow.ellipsis,\n style: const TextStyle(\n fontWeight: FontWeight.bold,\n ),\n ),\n const Padding(padding: EdgeInsets.only(bottom: 2.0)),\n Text(\n '$subtitle',\n maxLines: 2,\n overflow: TextOverflow.ellipsis,\n style: const TextStyle(\n fontSize: 12.0,\n color: Colors.black54,\n ),\n ),\n ],\n ),\n ),\n Expanded(\n flex: 1,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisAlignment: MainAxisAlignment.end,\n children: <Widget>[\n Text(\n '$author',\n style: const TextStyle(\n fontSize: 12.0,\n color: Colors.black87,\n ),\n ),\n Text(\n '$publishDate · $readDuration ★',\n style: const TextStyle(\n fontSize: 12.0,\n color: Colors.black54,\n ),\n ),\n ],\n ),\n ),\n ],\n );\n }\n}\n\nclass CustomListItemTwo extends StatelessWidget {\n CustomListItemTwo({\n Key key,\n this.thumbnail,\n this.title,\n this.subtitle,\n this.author,\n this.publishDate,\n this.readDuration,\n }) : super(key: key);\n\n final Widget thumbnail;\n final String title;\n final String subtitle;\n final String author;\n final String publishDate;\n final String readDuration;\n\n @override\n Widget build(BuildContext context) {\n return Padding(\n padding: const EdgeInsets.symmetric(vertical: 10.0),\n child: SizedBox(\n height: 100,\n child: Row(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n AspectRatio(\n aspectRatio: 1.0,\n child: thumbnail,\n ),\n Expanded(\n child: Padding(\n padding: const EdgeInsets.fromLTRB(20.0, 0.0, 2.0, 0.0),\n child: _ArticleDescription(\n title: title,\n subtitle: subtitle,\n author: author,\n publishDate: publishDate,\n readDuration: readDuration,\n ),\n ),\n )\n ],\n ),\n ),\n );\n }\n}\n```\n\n```dart\nWidget build(BuildContext context) {\n return ListView(\n padding: const EdgeInsets.all(10.0),\n children: <Widget>[\n CustomListItemTwo(\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.pink),\n ),\n title: 'Flutter 1.0 Launch',\n subtitle:\n 'Flutter continues to improve and expand its horizons.'\n 'This text should max out at two lines and clip',\n author: 'Dash',\n publishDate: 'Dec 28',\n readDuration: '5 mins',\n ),\n CustomListItemTwo(\n thumbnail: Container(\n decoration: const BoxDecoration(color: Colors.blue),\n ),\n title: 'Flutter 1.2 Release - Continual updates to the framework',\n subtitle: 'Flutter once again improves and makes updates.',\n author: 'Flutter',\n publishDate: 'Feb 26',\n readDuration: '12 mins',\n ),\n ],\n );\n}\n```\n\nSee also:\n\n * [ListTileTheme], which defines visual properties for [ListTile]s.\n * [ListView], which can display an arbitrary number of [ListTile]s\n in a scrolling list.\n * [CircleAvatar], which shows an icon representing a person and is often\n used as the [leading] element of a ListTile.\n * [Card], which can be used with [Column] to show a few [ListTile]s.\n * [Divider], which can be used to separate [ListTile]s.\n * [ListTile.divideTiles], a utility for inserting [Divider]s in between [ListTile]s.\n * [CheckboxListTile], [RadioListTile], and [SwitchListTile], widgets\n that combine [ListTile] with other controls.\n * <https://material.io/design/components/lists.html>", "detail": "", "kind": 7, "label": "ListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scaffold", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Implements the basic material design visual layout structure.\n\nThis class provides APIs for showing drawers, snack bars, and bottom sheets.\n\nTo display a snackbar or a persistent bottom sheet, obtain the\n[ScaffoldState] for the current [BuildContext] via [Scaffold.of] and use the\n[ScaffoldState.showSnackBar] and [ScaffoldState.showBottomSheet] functions.\n\nThis example shows a [Scaffold] with an [AppBar], a [BottomAppBar] and a\n[FloatingActionButton]. The [body] is a [Text] placed in a [Center] in order\nto center the text within the [Scaffold] and the [FloatingActionButton] is\ncentered and docked within the [BottomAppBar] using\n[FloatingActionButtonLocation.centerDocked]. The [FloatingActionButton] is\nconnected to a callback that increments a counter.\n\n```dart\nint _count = 0;\n\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Sample Code'),\n ),\n body: Center(\n child: Text('You have pressed the button $_count times.'),\n ),\n bottomNavigationBar: BottomAppBar(\n child: Container(height: 50.0,),\n ),\n floatingActionButton: FloatingActionButton(\n onPressed: () => setState(() {\n _count++;\n }),\n tooltip: 'Increment Counter',\n child: Icon(Icons.add),\n ),\n floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,\n );\n}\n```\n\n## Scaffold layout, the keyboard, and display \"notches\"\n\nThe scaffold will expand to fill the available space. That usually\nmeans that it will occupy its entire window or device screen. When\nthe device's keyboard appears the Scaffold's ancestor [MediaQuery]\nwidget's [MediaQueryData.viewInsets] changes and the Scaffold will\nbe rebuilt. By default the scaffold's [body] is resized to make\nroom for the keyboard. To prevent the resize set\n[resizeToAvoidBottomInset] to false. In either case the focused\nwidget will be scrolled into view if it's within a scrollable\ncontainer.\n\nThe [MediaQueryData.padding] value defines areas that might\nnot be completely visible, like the display \"notch\" on the iPhone\nX. The scaffold's [body] is not inset by this padding value\nalthough an [appBar] or [bottomNavigationBar] will typically\ncause the body to avoid the padding. The [SafeArea]\nwidget can be used within the scaffold's body to avoid areas\nlike display notches.\n\n## Troubleshooting\n\n### Nested Scaffolds\n\nThe Scaffold was designed to be the single top level container for\na [MaterialApp] and it's typically not necessary to nest\nscaffolds. For example in a tabbed UI, where the\n[bottomNavigationBar] is a [TabBar] and the body is a\n[TabBarView], you might be tempted to make each tab bar view a\nscaffold with a differently titled AppBar. It would be better to add a\nlistener to the [TabController] that updates the AppBar.\n\nAdd a listener to the app's tab controller so that the [AppBar] title of the\napp's one and only scaffold is reset each time a new tab is selected.\n\n```dart\nTabController(vsync: tickerProvider, length: tabCount)..addListener(() {\n if (!tabController.indexIsChanging) {\n setState(() {\n // Rebuild the enclosing scaffold with a new AppBar title\n appBarTitle = 'Tab ${tabController.index}';\n });\n }\n})\n```\n\nAlthough there are some use cases, like a presentation app that\nshows embedded flutter content, where nested scaffolds are\nappropriate, it's best to avoid nesting scaffolds.\n\nSee also:\n\n * [AppBar], which is a horizontal bar typically shown at the top of an app\n using the [appBar] property.\n * [BottomAppBar], which is a horizontal bar typically shown at the bottom\n of an app using the [bottomNavigationBar] property.\n * [FloatingActionButton], which is a circular button typically shown in the\n bottom right corner of the app using the [floatingActionButton] property.\n * [Drawer], which is a vertical panel that is typically displayed to the\n left of the body (and often hidden on phones) using the [drawer]\n property.\n * [BottomNavigationBar], which is a horizontal array of buttons typically\n shown along the bottom of the app using the [bottomNavigationBar]\n property.\n * [SnackBar], which is a temporary notification typically shown near the\n bottom of the app using the [ScaffoldState.showSnackBar] method.\n * [BottomSheet], which is an overlay typically shown near the bottom of the\n app. A bottom sheet can either be persistent, in which case it is shown\n using the [ScaffoldState.showBottomSheet] method, or modal, in which case\n it is shown using the [showModalBottomSheet] function.\n * [ScaffoldState], which is the state associated with this widget.\n * <https://material.io/design/layout/responsive-layout-grid.html>", "detail": "", "kind": 7, "label": "Scaffold" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CreateRectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for a function that takes two [Rect] instances and returns a\n[RectTween] that transitions between them.\n\nThis is typically used with a [HeroController] to provide an animation for\n[Hero] positions that looks nicer than a linear movement. For example, see\n[MaterialRectArcTween].", "detail": "(Rect begin, Rect end) → Tween<Rect>", "kind": 7, "label": "CreateRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataColumnSortCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for [DataColumn.onSort] callback.", "detail": "(int columnIndex, bool ascending) → void", "kind": 7, "label": "DataColumnSortCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for strategies that build widgets based on asynchronous\ninteraction.\n\nSee also:\n\n * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Stream].\n * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Future].", "detail": "(BuildContext context, AsyncSnapshot<T> snapshot) → Widget", "kind": 7, "label": "AsyncWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshProgressIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An indicator for the progress of refreshing the contents of a widget.\n\nTypically used for swipe-to-refresh interactions. See [RefreshIndicator] for\na complete implementation of swipe-to-refresh driven by a [Scrollable]\nwidget.\n\nThe indicator arc is displayed with [valueColor], an animated value. To\nspecify a constant color use: `AlwaysStoppedAnimation<Color>(color)`.\n\nSee also:\n\n * [RefreshIndicator], which automatically displays a [CircularProgressIndicator]\n when the underlying vertical scrollable is overscrolled.", "detail": "", "kind": 7, "label": "RefreshProgressIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for scrolling activities like dragging and flinging.\n\nSee also:\n\n * [ScrollPosition], which uses [ScrollActivity] objects to manage the\n [ScrollPosition] of a [Scrollable].", "detail": "", "kind": 7, "label": "ScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageIcon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An icon that comes from an [ImageProvider], e.g. an [AssetImage].\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for icons based on glyphs from fonts instead of images.\n * [Icons], a predefined font based set of icons from the material design library.", "detail": "", "kind": 7, "label": "ImageIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorberHandle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Handle to provide to a [SliverOverlapAbsorber], a [SliverOverlapInjector],\nand an [NestedScrollViewViewport], to shift overlap in a [NestedScrollView].\n\nA particular [SliverOverlapAbsorberHandle] can only be assigned to a single\n[SliverOverlapAbsorber] at a time. It can also be (and normally is) assigned\nto one or more [SliverOverlapInjector]s, which must be later descendants of\nthe same [NestedScrollViewViewport] as the [SliverOverlapAbsorber]. The\n[SliverOverlapAbsorber] must be a direct descendant of the\n[NestedScrollViewViewport], taking part in the same sliver layout. (The\n[SliverOverlapInjector] can be a descendant that takes part in a nested\nscroll view's sliver layout.)\n\nWhenever the [NestedScrollViewViewport] is marked dirty for layout, it will\ncause its assigned [SliverOverlapAbsorberHandle] to fire notifications. It\nis the responsibility of the [SliverOverlapInjector]s (and any other\nclients) to mark themselves dirty when this happens, in case the geometry\nsubsequently changes during layout.\n\nSee also:\n\n * [NestedScrollView], which uses a [NestedScrollViewViewport] and a\n [SliverOverlapAbsorber] to align its children, and which shows sample\n usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorberHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nSee also the discussions at [Key] and [Widget.key].", "detail": "", "kind": 7, "label": "ObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectangularSliderTrackShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s track.\n\nIt paints a solid colored rectangle, vertically centered in the\n[parentBox]. The track rectangle extends to the bounds of the [parentBox],\nbut is padded by the [RoundSliderOverlayShape] radius. The height is defined\nby the [SliderThemeData.trackHeight]. The color is determined by the\n[Slider]'s enabled state and the track piece's active state which are\ndefined by:\n [SliderThemeData.activeTrackColor],\n [SliderThemeData.inactiveTrackColor],\n [SliderThemeData.disabledActiveTrackColor],\n [SliderThemeData.disabledInactiveTrackColor].\n\nSee also:\n\n * [Slider] for the component that this is meant to display this shape.\n * [SliderThemeData] where an instance of this class is set to inform the\n slider of the visual details of the its track.\n * [SliderTrackShape] Base component for creating other custom track\n shapes.", "detail": "", "kind": 7, "label": "RectangularSliderTrackShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabPageSelector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Displays a row of small circular indicators, one per tab. The selected\ntab's indicator is highlighted. Often used in conjunction with a [TabBarView].\n\nIf a [TabController] is not provided, then there must be a [DefaultTabController]\nancestor.", "detail": "", "kind": 7, "label": "TabPageSelector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackButtonIcon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A \"back\" icon that's appropriate for the current [TargetPlatform].\n\nThe current platform is determined by querying for the ambient [Theme].\n\nSee also:\n\n * [BackButton], an [IconButton] with a [BackButtonIcon] that calls\n [Navigator.maybePop] to return to the previous route.\n * [IconButton], which is a more general widget for creating buttons\n with icons.\n * [Icon], a material design icon.\n * [ThemeData.platform], which specifies the current platform.", "detail": "", "kind": 7, "label": "BackButtonIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectButtonBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by\n[WidgetInspector.selectButtonBuilder].", "detail": "(BuildContext context, VoidCallback onPressed) → Widget", "kind": 7, "label": "InspectorSelectButtonBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PersistentBottomSheetController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScaffoldFeatureController] for persistent bottom sheets.\n\nThis is the type of objects returned by [ScaffoldState.showBottomSheet].", "detail": "", "kind": 7, "label": "PersistentBottomSheetController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design back button.\n\nA [BackButton] is an [IconButton] with a \"back\" icon appropriate for the\ncurrent [TargetPlatform]. When pressed, the back button calls\n[Navigator.maybePop] to return to the previous route.\n\nWhen deciding to display a [BackButton], consider using\n`ModalRoute.of(context)?.canPop` to check whether the current route can be\npopped. If that value is false (e.g., because the current route is the\ninitial route), the [BackButton] will not have any effect when pressed,\nwhich could frustrate the user.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [AppBar], which automatically uses a [BackButton] in its\n [AppBar.leading] slot when the [Scaffold] has no [Drawer] and the\n current [Route] is not the [Navigator]'s first route.\n * [BackButtonIcon], which is useful if you need to create a back button\n that responds differently to being pressed.\n * [IconButton], which is a more general widget for creating buttons with\n icons.\n * [CloseButton], an alternative which may be more appropriate for leaf\n node pages in the navigation tree.", "detail": "", "kind": 7, "label": "BackButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOval", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildBuilderDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using a builder\ncallback.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot have to be built until they are displayed.", "detail": "", "kind": 7, "label": "ListWheelChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetLeave", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a [Draggable] leaves a [DragTarget].\n\nUsed by [DragTarget.onLeave].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetLeave" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Represents the details when a specific pointer event occurred on\nthe [Draggable].\n\nThis includes the [Velocity] at which the pointer was moving and [Offset]\nwhen the draggable event occurred, and whether its [DragTarget] accepted it.\n\nAlso, this is the details object for callbacks that use [DragEndCallback].", "detail": "", "kind": 7, "label": "DraggableDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [MultiChildRenderObjectWidget] as its configuration.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [ContainerRenderObjectMixin] mixin with a parent data\ntype that implements [ContainerParentDataMixin<RenderObject>]. Such widgets\nare expected to inherit from [MultiChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "MultiChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonTextTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonTheme] and [ButtonThemeData] to define a button's base\ncolors, and the defaults for the button's minimum size, internal padding,\nand shape.\n\nSee also:\n\n * [RaisedButton], [FlatButton], [OutlineButton], which are configured\n based on the ambient [ButtonTheme].", "detail": "", "kind": 13, "label": "ButtonTextTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Localizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the [Locale] for its `child` and the localized resources that the\nchild depends on.\n\nLocalized resources are loaded by the list of [LocalizationsDelegate]\n`delegates`. Each delegate is essentially a factory for a collection\nof localized resources. There are multiple delegates because there are\nmultiple sources for localizations within an app.\n\nDelegates are typically simple subclasses of [LocalizationsDelegate] that\noverride [LocalizationsDelegate.load]. For example a delegate for the\n`MyLocalizations` class defined below would be:\n\n```dart\nclass _MyDelegate extends LocalizationsDelegate<MyLocalizations> {\n @override\n Future<MyLocalizations> load(Locale locale) => MyLocalizations.load(locale);\n\n @override\n bool shouldReload(MyLocalizationsDelegate old) => false;\n}\n```\n\nEach delegate can be viewed as a factory for objects that encapsulate a\na set of localized resources. These objects are retrieved with\nby runtime type with [Localizations.of].\n\nThe [WidgetsApp] class creates a `Localizations` widget so most apps\nwill not need to create one. The widget app's `Localizations` delegates can\nbe initialized with [WidgetsApp.localizationsDelegates]. The [MaterialApp]\nclass also provides a `localizationsDelegates` parameter that's just\npassed along to the [WidgetsApp].\n\nApps should retrieve collections of localized resources with\n`Localizations.of<MyLocalizations>(context, MyLocalizations)`,\nwhere MyLocalizations is an app specific class defines one function per\nresource. This is conventionally done by a static `.of` method on the\nMyLocalizations class.\n\nFor example, using the `MyLocalizations` class defined below, one would\nlookup a localized title string like this:\n```dart\nMyLocalizations.of(context).title()\n```\nIf `Localizations` were to be rebuilt with a new `locale` then\nthe widget subtree that corresponds to [BuildContext] `context` would\nbe rebuilt after the corresponding resources had been loaded.\n\nThis class is effectively an [InheritedWidget]. If it's rebuilt with\na new `locale` or a different list of delegates or any of its\ndelegates' [LocalizationsDelegate.shouldReload()] methods returns true,\nthen widgets that have created a dependency by calling\n`Localizations.of(context)` will be rebuilt after the resources\nfor the new locale have been loaded.\n\n\nThis following class is defined in terms of the\n[Dart `intl` package](https://github.com/dart-lang/intl). Using the `intl`\npackage isn't required.\n\n```dart\nclass MyLocalizations {\n MyLocalizations(this.locale);\n\n final Locale locale;\n\n static Future<MyLocalizations> load(Locale locale) {\n return initializeMessages(locale.toString())\n .then((void _) {\n return MyLocalizations(locale);\n });\n }\n\n static MyLocalizations of(BuildContext context) {\n return Localizations.of<MyLocalizations>(context, MyLocalizations);\n }\n\n String title() => Intl.message('<title>', name: 'title', locale: locale.toString());\n // ... more Intl.message() methods like title()\n}\n```\nA class based on the `intl` package imports a generated message catalog that provides\nthe `initializeMessages()` function and the per-locale backing store for `Intl.message()`.\nThe message catalog is produced by an `intl` tool that analyzes the source code for\nclasses that contain `Intl.message()` calls. In this case that would just be the\n`MyLocalizations` class.\n\nOne could choose another approach for loading localized resources and looking them up while\nstill conforming to the structure of this example.", "detail": "", "kind": 7, "label": "Localizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the color, shape, and typography values for a material design slider\ntheme.\n\nUse this class to configure a [SliderTheme] widget, or to set the\n[ThemeData.sliderTheme] for a [Theme] widget.\n\nTo obtain the current ambient slider theme, use [SliderTheme.of].\n\nThe parts of a slider are:\n\n * The \"thumb\", which is a shape that slides horizontally when the user\n drags it.\n * The \"track\", which is the line that the slider thumb slides along.\n * The \"tick marks\", which are regularly spaced marks that are drawn when\n using discrete divisions.\n * The \"value indicator\", which appears when the user is dragging the thumb\n to indicate the value being selected.\n * The \"overlay\", which appears around the thumb, and is shown when the\n thumb is pressed, focused, or hovered. It is painted underneath the\n thumb, so it must extend beyond the bounds of the thumb itself to\n actually be visible.\n * The \"active\" side of the slider is the side between the thumb and the\n minimum value.\n * The \"inactive\" side of the slider is the side between the thumb and the\n maximum value.\n * The [Slider] is disabled when it is not accepting user input. See\n [Slider] for details on when this happens.\n\nThe thumb, track, tick marks, value indicator, and overlay can be customized\nby creating subclasses of [SliderTrackShape],\n[SliderComponentShape], and/or [SliderTickMarkShape]. See\n[RoundSliderThumbShape], [RectangularSliderTrackShape],\n[RoundSliderTickMarkShape], [PaddleSliderValueIndicatorShape], and\n[RoundSliderOverlayShape] for examples.\n\nThe track painting can be skipped by specifying 0 for [trackHeight].\nThe thumb painting can be skipped by specifying\n[SliderComponentShape.noThumb] for [SliderThemeData.thumbShape].\nThe overlay painting can be skipped by specifying\n[SliderComponentShape.noOverlay] for [SliderThemeData.overlayShape].\nThe tick mark painting can be skipped by specifying\n[SliderTickMarkShape.noTickMark] for [SliderThemeData.tickMarkShape].\nThe value indicator painting can be skipped by specifying the\nappropriate [ShowValueIndicator] for [SliderThemeData.showValueIndicator].\n\nSee also:\n\n * [SliderTheme] widget, which can override the slider theme of its\n children.\n * [Theme] widget, which performs a similar function to [SliderTheme],\n but for overall themes.\n * [ThemeData], which has a default [SliderThemeData].\n * [SliderTrackShape], to define custom slider track shapes.\n * [SliderComponentShape], to define custom slider component shapes.\n * [SliderTickMarkShape], to define custom slider tick mark shapes.", "detail": "", "kind": 7, "label": "SliderThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFadeBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the [AnimatedCrossFade.layoutBuilder] callback.\n\nThe `topChild` is the child fading in, which is normally drawn on top. The\n`bottomChild` is the child fading out, normally drawn on the bottom.\n\nFor good performance, the returned widget tree should contain both the\n`topChild` and the `bottomChild`; the depth of the tree, and the types of\nthe widgets in the tree, from the returned widget to each of the children\nshould be the same; and where there is a widget with multiple children, the\ntop child and the bottom child should be keyed using the provided\n`topChildKey` and `bottomChildKey` keys respectively.\n\n\n```dart\nWidget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) {\n return Stack(\n fit: StackFit.loose,\n children: <Widget>[\n Positioned(\n key: bottomChildKey,\n left: 0.0,\n top: 0.0,\n right: 0.0,\n child: bottomChild,\n ),\n Positioned(\n key: topChildKey,\n child: topChild,\n )\n ],\n );\n}\n```", "detail": "(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) → Widget", "kind": 7, "label": "AnimatedCrossFadeBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableScrollableSheet", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A container for a [Scrollable] that responds to drag gestures by resizing\nthe scrollable until a limit is reached, and then scrolling.\n\nThis widget can be dragged along the vertical axis between its\n[minChildSize], which defaults to `0.25` and [maxChildSize], which defaults\nto `1.0`. These sizes are percentages of the height of the parent container.\n\nThe widget coordinates resizing and scrolling of the widget returned by\nbuilder as the user drags along the horizontal axis.\n\nThe widget will initially be displayed at its initialChildSize which\ndefaults to `0.5`, meaning half the height of its parent. Dragging will work\nbetween the range of minChildSize and maxChildSize (as percentages of the\nparent container's height) as long as the builder creates a widget which\nuses the provided [ScrollController]. If the widget created by the\n[ScrollableWidgetBuilder] does not use provided [ScrollController], the\nsheet will remain at the initialChildSize.\n\n\nThis is a sample widget which shows a [ListView] that has 25 [ListTile]s.\nIt starts out as taking up half the body of the [Scaffold], and can be\ndragged up to the full height of the scaffold or down to 25% of the height\nof the scaffold. Upon reaching full height, the list contents will be\nscrolled up or down, until they reach the top of the list again and the user\ndrags the sheet back down.\n\n```dart\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('DraggableScrollableSheet'),\n ),\n body: SizedBox.expand(\n child: DraggableScrollableSheet(\n builder: (BuildContext context, ScrollController scrollController) {\n return Container(\n color: Colors.blue[100],\n child: ListView.builder(\n controller: scrollController,\n itemCount: 25,\n itemBuilder: (BuildContext context, int index) {\n return ListTile(title: Text('Item $index'));\n },\n ),\n );\n },\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DraggableScrollableSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ControlsWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A builder that creates a widget given the two callbacks `onStepContinue` and\n`onStepCancel`.\n\nUsed by [Stepper.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].", "detail": "(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) → Widget", "kind": 7, "label": "ControlsWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputDecorationTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the default appearance of [InputDecorator]s.\n\nThis class is used to define the value of [ThemeData.inputDecorationTheme].\nThe [InputDecorator], [TextField], and [TextFormField] widgets use\nthe current input decoration theme to initialize null [InputDecoration]\nproperties.\n\nThe [InputDecoration.applyDefaults] method is used to combine a input\ndecoration theme with an [InputDecoration] object.", "detail": "", "kind": 7, "label": "InputDecorationTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliderTrackShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[context] is the same context for the render box of the [Slider].\n\n[center] is the offset of the center where this shape should be painted.\nThis offset is relative to the origin of the [context] canvas.\n\n[sliderTheme] is the theme assigned to the [Slider] that this shape\nbelongs to.\n\n[isEnabled] has the same value as [Slider.isInteractive]. If true, the\nslider will respond to input.\n\n[enableAnimation] is an animation triggered when the [Slider] is enabled,\nand it reverses when the slider is disabled. Enabled is the\n[Slider.isInteractive] state. Use this to paint intermediate frames for\nthis shape when the slider changes enabled state.\n\n[isDiscrete] is true if [Slider.divisions] is non-null. If true, the\nslider will render tick marks on top of the track.\n\n[parentBox] is the [RenderBox] of the [Slider]. Its attributes, such as\nsize, can be used to assist in painting this shape.\nBase class for slider track shapes.\n\nThe slider's thumb moves along the track. A discrete slider's tick marks\nare drawn after the track, but before the thumb, and are aligned with the\ntrack.\n\nThe [getPreferredRect] helps position the slider thumb and tick marks\nrelative to the track.\n\nSee also:\n\n * [RectangularSliderTrackShape], which is the default track shape.\n * [SliderTickMarkShape], which is the default tick mark shape.\n * [SliderComponentShape], which is the base class for custom a component\n shape.", "detail": "", "kind": 7, "label": "SliderTrackShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DisabledChipAttributes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be enabled and disabled.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "DisabledChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleAvatar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A circle that represents a user.\n\nTypically used with a user's profile image, or, in the absence of\nsuch an image, the user's initials. A given user's initials should\nalways be paired with the same background color, for consistency.\n\n\nIf the avatar is to have an image, the image should be specified in the\n[backgroundImage] property:\n\n```dart\nCircleAvatar(\n backgroundImage: NetworkImage(userAvatarUrl),\n)\n```\n\nThe image will be cropped to have a circle shape.\n\n\nIf the avatar is to just have the user's initials, they are typically\nprovided using a [Text] widget as the [child] and a [backgroundColor]:\n\n```dart\nCircleAvatar(\n backgroundColor: Colors.brown.shade800,\n child: Text('AH'),\n)\n```\n\nSee also:\n\n * [Chip], for representing users or concepts in long form.\n * [ListTile], which can combine an icon (such as a [CircleAvatar]) with\n some text for a fixed height list entry.\n * <https://material.io/design/components/chips.html#input-chips>", "detail": "", "kind": 7, "label": "CircleAvatar" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A mixin used by routes to handle back navigations internally by popping a list.\n\nWhen a [Navigator] is instructed to pop, the current route is given an\nopportunity to handle the pop internally. A `LocalHistoryRoute` handles the\npop internally if its list of local history entries is non-empty. Rather\nthan being removed as the current route, the most recent [LocalHistoryEntry]\nis removed from the list and its [LocalHistoryEntry.onRemove] is called.", "detail": "", "kind": 7, "label": "LocalHistoryRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Colors", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[Color] and [ColorSwatch] constants which represent Material design's\n[color palette](https://material.io/design/color/).\n\nInstead of using an absolute color from these palettes, consider using\n[Theme.of] to obtain the local [ThemeData] structure, which exposes the\ncolors selected for the current theme, such as [ThemeData.primaryColor] and\n[ThemeData.accentColor] (among many others).\n\nMost swatches have colors from 100 to 900 in increments of one hundred, plus\nthe color 50. The smaller the number, the more pale the color. The greater\nthe number, the darker the color. The accent swatches (e.g. [redAccent]) only\nhave the values 100, 200, 400, and 700.\n\nIn addition, a series of blacks and whites with common opacities are\navailable. For example, [black54] is a pure black with 54% opacity.\n\n\nTo select a specific color from one of the swatches, index into the swatch\nusing an integer for the specific color desired, as follows:\n\n```dart\nColor selection = Colors.green[400]; // Selects a mid-range green.\n```\n\nEach [ColorSwatch] constant is a color and can used directly. For example:\n\n```dart\nContainer(\n color: Colors.blue, // same as Colors.blue[500] or Colors.blue.shade500\n)\n```\n\n## Color palettes\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pink.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pinkAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.red.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.redAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepOrange.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepOrangeAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orange.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orangeAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amber.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amberAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellow.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellowAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lime.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.limeAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightGreen.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightGreenAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.green.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.greenAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.teal.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.tealAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyan.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyanAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightBlue.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightBlueAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blue.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blueAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigo.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigoAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purple.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purpleAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurple.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurpleAccent.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blueGrey.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.brown.png)\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.grey.png)\n\n## Blacks and whites\n\nThese colors are identified by their transparency. The low transparency\nlevels (e.g. [Colors.white12] and [Colors.white10]) are very hard to see and\nshould be avoided in general. They are intended for very subtle effects.\n\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blacks.png)\n![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.whites.png)\n\nThe [Colors.transparent] color isn't shown here because it is entirely\ninvisible!", "detail": "", "kind": 7, "label": "Colors" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An element that lazily builds children for a [SliverMultiBoxAdaptorWidget].\n\nImplements [RenderSliverBoxChildManager], which lets this element manage\nthe children of subclasses of [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flex", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in a one-dimensional array.\n\nThe [Flex] widget allows you to control the axis along which the children are\nplaced (horizontal or vertical). This is referred to as the _main axis_. If\nyou know the main axis in advance, then consider using a [Row] (if it's\nhorizontal) or [Column] (if it's vertical) instead, because that will be less\nverbose.\n\nTo cause a child to expand to fill the available space in the [direction]\nof this widget's main axis, wrap the child in an [Expanded] widget.\n\nThe [Flex] widget does not scroll (and in general it is considered an error\nto have more children in a [Flex] than will fit in the available room). If\nyou have some widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nIf you only have one child, then rather than using [Flex], [Row], or\n[Column], consider using [Align] or [Center] to position the child.\n\n## Layout algorithm\n\n_This section describes how a [Flex] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Flex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded main axis constraints and the incoming\n cross axis constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight cross axis constraints\n that match the incoming max extent in the cross axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of main axis space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [Flex] is the maximum cross axis extent of\n the children (which will always satisfy the incoming constraints).\n5. The main axis extent of the [Flex] is determined by the [mainAxisSize]\n property. If the [mainAxisSize] property is [MainAxisSize.max], then the\n main axis extent of the [Flex] is the max extent of the incoming main\n axis constraints. If the [mainAxisSize] property is [MainAxisSize.min],\n then the main axis extent of the [Flex] is the sum of the main axis\n extents of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a version of this widget that is always horizontal.\n * [Column], for a version of this widget that is always vertical.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n that may be sized smaller (leaving some remaining room unused).\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flex" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExcludeSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that drops all the semantics of its descendants.\n\nWhen [excluding] is true, this widget (and its subtree) is excluded from\nthe semantics tree.\n\nThis can be used to hide descendant widgets that would otherwise be\nreported but that would only be confusing. For example, the\nmaterial library's [Chip] widget hides the avatar since it is\nredundant with the chip label.\n\nSee also:\n\n * [BlockSemantics] which drops semantics of widgets earlier in the tree.", "detail": "", "kind": 7, "label": "ExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollEndNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has stopped scrolling.\n\nSee also:\n\n * [ScrollStartNotification], which indicates that scrolling has started.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollEndNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [Element] that uses a [StatefulWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatefulElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InteractiveInkFeature", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An ink feature that displays a [color] \"splash\" in response to a user\ngesture that can be confirmed or canceled.\n\nSubclasses call [confirm] when an input gesture is recognized. For\nexample a press event might trigger an ink feature that's confirmed\nwhen the corresponding up event is seen.\n\nSubclasses call [cancel] when an input gesture is aborted before it\nis recognized. For example a press event might trigger an ink feature\nthat's cancelled when the pointer is dragged out of the reference\nbox.\n\nThe [InkWell] and [InkResponse] widgets generate instances of this\nclass.", "detail": "", "kind": 7, "label": "InteractiveInkFeature" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialPointArcTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that interpolates an [Offset] along a circular arc.\n\nThis class specializes the interpolation of [Tween<Offset>] so that instead\nof a straight line, the intermediate points follow the arc of a circle in a\nmanner consistent with material design principles.\n\nThe arc's radius is related to the bounding box that contains the [begin]\nand [end] points. If the bounding box is taller than it is wide, then the\ncenter of the circle will be horizontally aligned with the end point.\nOtherwise the center of the circle will be aligned with the begin point.\nThe arc's sweep is always less than or equal to 90 degrees.\n\nSee also:\n\n * [Tween], for a discussion on how to use interpolation objects.\n * [MaterialRectArcTween], which extends this concept to interpolating [Rect]s.", "detail": "", "kind": 7, "label": "MaterialPointArcTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An implementation of scroll physics that matches Android.\n\nSee also:\n\n * [BouncingScrollSimulation], which implements iOS scroll physics.", "detail": "", "kind": 7, "label": "ClampingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The activity a scroll view performs when a the user drags their finger\nacross the screen.\n\nSee also:\n\n * [ScrollDragController], which listens to the [Drag] and actually scrolls\n the scroll view.", "detail": "", "kind": 7, "label": "DragScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShowValueIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the conditions under which the value indicator on a [Slider]\nwill be shown. Used with [SliderThemeData.showValueIndicator].\n\nSee also:\n\n * [Slider], a Material Design slider widget.\n * [SliderThemeData], which describes the actual configuration of a slider\n theme.", "detail": "", "kind": 13, "label": "ShowValueIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InteractiveInkFeatureFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An encapsulation of an [InteractiveInkFeature] constructor used by\n[InkWell], [InkResponse], and [ThemeData].\n\nInteractive ink feature implementations should provide a static const\n`splashFactory` value that's an instance of this class. The `splashFactory`\ncan be used to configure an [InkWell], [InkResponse] or [ThemeData].\n\nSee also:\n\n * [InkSplash.splashFactory]\n * [InkRipple.splashFactory]", "detail": "", "kind": 7, "label": "InteractiveInkFeatureFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsFlutterBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A concrete binding for applications based on the Widgets framework.\n\nThis is the glue that binds the framework to the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Route", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An abstraction for an entry managed by a [Navigator].\n\nThis class defines an abstract interface between the navigator and the\n\"routes\" that are pushed on and popped off the navigator. Most routes have\nvisual affordances, which they place in the navigators [Overlay] using one\nor more [OverlayEntry] objects.\n\nSee [Navigator] for more explanation of how to use a Route\nwith navigation, including code examples.\n\nSee [MaterialPageRoute] for a route that replaces the\nentire screen with a platform-adaptive transition.", "detail": "", "kind": 7, "label": "Route" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBarIndicatorSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines how the bounds of the selected tab indicator are computed.\n\nSee also:\n\n * [TabBar], which displays a row of tabs.\n * [TabBarView], which displays a widget for the currently selected tab.\n * [TabBar.indicator], which defines the appearance of the selected tab\n indicator relative to the tab's bounds.", "detail": "", "kind": 13, "label": "TabBarIndicatorSize" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicensePage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A page that shows licenses for software used by the application.\n\nTo show a [LicensePage], use [showLicensePage].\n\nThe [AboutDialog] shown by [showAboutDialog] and [AboutListTile] includes\na button that calls [showLicensePage].\n\nThe licenses shown on the [LicensePage] are those returned by the\n[LicenseRegistry] API, which can be used to add more licenses to the list.", "detail": "", "kind": 7, "label": "LicensePage" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaginatedDataTable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design data table that shows data using multiple pages.\n\nA paginated data table shows [rowsPerPage] rows of data per page and\nprovides controls for showing other pages.\n\nData is read lazily from from a [DataTableSource]. The widget is presented\nas a [Card].\n\nSee also:\n\n * [DataTable], which is not paginated.\n * <https://material.io/go/design-data-tables#data-tables-tables-within-cards>", "detail": "", "kind": 7, "label": "PaginatedDataTable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDragController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scrolls a scroll view as the user drags their finger across the screen.\n\nSee also:\n\n * [DragScrollActivity], which is the activity the scroll view performs\n while a drag is underway.", "detail": "", "kind": 7, "label": "ScrollDragController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedStack", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Stack] that shows a single child from a list of children.\n\nThe displayed child is the one with the given [index]. The stack is\nalways as big as the largest child.\n\nIf value is null, then nothing is displayed.\n\nSee also:\n\n * [Stack], for more details about stacks.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines a single color as well a color swatch with ten shades of the color.\n\nThe color's shades are referred to by index. The greater the index, the\ndarker the color. There are 10 valid indices: 50, 100, 200, ..., 900.\nThe value of this color should the same the value of index 500 and [shade500].\n\nSee also:\n\n * [Colors], which defines all of the standard material colors.", "detail": "", "kind": 7, "label": "MaterialColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Transform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that applies a transformation before painting its child.\n\n\n\nThis example rotates and skews an orange box containing text, keeping the\ntop right corner pinned to its original position.\n\n```dart\nContainer(\n color: Colors.black,\n child: Transform(\n alignment: Alignment.topRight,\n transform: Matrix4.skewY(0.3)..rotateZ(-math.pi / 12.0),\n child: Container(\n padding: const EdgeInsets.all(8.0),\n color: const Color(0xFFE8581C),\n child: const Text('Apartment for rent!'),\n ),\n ),\n)\n```\n\nSee also:\n\n * [RotatedBox], which rotates the child widget during layout, not just\n during painting.\n * [FractionalTranslation], which applies a translation to the child\n that is relative to the child's size.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.", "detail": "", "kind": 7, "label": "Transform" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawChip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A raw material design chip.\n\nThis serves as the basis for all of the chip widget types to aggregate.\nIt is typically not created directly, one of the other chip types\nthat are appropriate for the use case are used instead:\n\n * [Chip] a simple chip that can only display information and be deleted.\n * [InputChip] represents a complex piece of information, such as an entity\n (person, place, or thing) or conversational text, in a compact form.\n * [ChoiceChip] allows a single selection from a set of options.\n * [FilterChip] a chip that uses tags or descriptive words as a way to\n filter content.\n * [ActionChip]s display a set of actions related to primary content.\n\nRaw chips are typically only used if you want to create your own custom chip\ntype.\n\nRaw chips can be selected by setting [onSelected], deleted by setting\n[onDeleted], and pushed like a button with [onPressed]. They have a [label],\nand they can have a leading icon (see [avatar]) and a trailing icon\n([deleteIcon]). Colors and padding can be customized.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [CircleAvatar], which shows images or initials of people.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "RawChip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysScrollableScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics that always lets the user scroll.\n\nOn Android, overscrolls will be clamped by default and result in an\noverscroll glow. On iOS, overscrolls will load a spring that will return\nthe scroll view to its normal range when released.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "AlwaysScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics for environments that prevent the scroll offset from reaching\nbeyond the bounds of the content.\n\nThis is the behavior typically seen on Android.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on Android.\n * [BouncingScrollPhysics], which is the analogous physics for iOS' bouncing\n behavior.\n * [GlowingOverscrollIndicator], which is used by [ScrollConfiguration] to\n provide the glowing effect that is usually found with this clamping effect\n on Android. When using a [MaterialApp], the [GlowingOverscrollIndicator]'s\n glow color is specified to use [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "ClampingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RichText", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A paragraph of rich text.\n\nThe [RichText] widget displays text that uses multiple different styles. The\ntext to display is described using a tree of [TextSpan] objects, each of\nwhich has an associated style that is used for that subtree. The text might\nbreak across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nText displayed in a [RichText] widget must be explicitly styled. When\npicking which style to use, consider using [DefaultTextStyle.of] the current\n[BuildContext] to provide defaults. For more details on how to style text in\na [RichText] widget, see the documentation for [TextStyle].\n\nConsider using the [Text] widget to integrate with the [DefaultTextStyle]\nautomatically. When all the text uses the same style, the default constructor\nis less verbose. The [Text.rich] constructor allows you to style multiple\nspans with the default text style while still allowing specified styles per\nspan.\n\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Hello ',\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),\n TextSpan(text: ' world!'),\n ],\n ),\n)\n```\n\nSee also:\n\n * [TextStyle], which discusses how to style text.\n * [TextSpan], which is used to describe the text in a paragraph.\n * [Text], which automatically applies the ambient styles described by a\n [DefaultTextStyle] to a single string.", "detail": "", "kind": 7, "label": "RichText" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckboxListTile", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] with a [Checkbox]. In other words, a checkbox with a label.\n\nThe entire list tile is interactive: tapping anywhere in the tile toggles\nthe checkbox.\n\nThe [value], [onChanged], and [activeColor] properties of this widget are\nidentical to the similarly-named properties on the [Checkbox] widget.\n\nThe [title], [subtitle], [isThreeLine], and [dense] properties are like\nthose of the same name on [ListTile].\n\nThe [selected] property on this widget is similar to the [ListTile.selected]\nproperty, but the color used is that described by [activeColor], if any,\ndefaulting to the accent color of the current [Theme]. No effort is made to\ncoordinate the [selected] state and the [value] state; to have the list tile\nappear selected when the checkbox is checked, pass the same value to both.\n\nThe checkbox is shown on the right by default in left-to-right languages\n(i.e. the trailing edge). This can be changed using [controlAffinity]. The\n[secondary] widget is placed on the opposite side. This maps to the\n[ListTile.leading] and [ListTile.trailing] properties of [ListTile].\n\nTo show the [CheckboxListTile] as disabled, pass null as the [onChanged]\ncallback.\n\n\nThis widget shows a checkbox that, when checked, slows down all animations\n(including the animation of the checkbox itself getting checked!).\n\nThis sample requires that you also import 'package:flutter/scheduler.dart',\nso that you can reference [timeDilation].\n\n```dart\nCheckboxListTile(\n title: const Text('Animate Slowly'),\n value: timeDilation != 1.0,\n onChanged: (bool value) {\n setState(() { timeDilation = value ? 20.0 : 1.0; });\n },\n secondary: const Icon(Icons.hourglass_empty),\n)\n```\n\nSee also:\n\n * [ListTileTheme], which can be used to affect the style of list tiles,\n including checkbox list tiles.\n * [RadioListTile], a similar widget for radio buttons.\n * [SwitchListTile], a similar widget for switches.\n * [ListTile] and [Checkbox], the widgets from which this widget is made.", "detail": "", "kind": 7, "label": "CheckboxListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScope", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Establishes a scope in which widgets can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nA focus scope does not itself receive focus but instead helps remember\nprevious focus states. A scope is currently active when its [node] is the\nfirst focus of its parent scope. To activate a [FocusScope], either use the\n[autofocus] property or explicitly make the [node] the first focus in the\nparent scope:\n\n```dart\nFocusScope.of(context).setFirstFocus(node);\n```\n\nIf a [FocusScope] is removed from the widget tree, then the previously\nfocused node will be focused, but only if the [node] is the same [node]\nobject as in the previous frame. To assure this, you can use a GlobalKey to\nkeep the [FocusScope] widget from being rebuilt from one frame to the next,\nor pass in the [node] from a parent that is not rebuilt. If there is no next\nsibling, then the parent scope node will be focused.\n\nSee also:\n\n * [FocusScopeNode], which is the associated node in the focus tree.\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.", "detail": "", "kind": 7, "label": "FocusScope" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Form", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An optional container for grouping together multiple form field widgets\n(e.g. [TextField] widgets).\n\nEach individual form field should be wrapped in a [FormField] widget, with\nthe [Form] widget as a common ancestor of all of those. Call methods on\n[FormState] to save, reset, or validate each [FormField] that is a\ndescendant of this [Form]. To obtain the [FormState], you may use [Form.of]\nwith a context whose ancestor is the [Form], or pass a [GlobalKey] to the\n[Form] constructor and call [GlobalKey.currentState].\n\nThis example shows a [Form] with one [TextFormField] and a [RaisedButton]. A\n[GlobalKey] is used here to identify the [Form] and validate input.\n\n```dart\nfinal _formKey = GlobalKey<FormState>();\n\n@override\nWidget build(BuildContext context) {\n return Form(\n key: _formKey,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n TextFormField(\n validator: (value) {\n if (value.isEmpty) {\n return 'Please enter some text';\n }\n },\n ),\n Padding(\n padding: const EdgeInsets.symmetric(vertical: 16.0),\n child: RaisedButton(\n onPressed: () {\n // Validate will return true if the form is valid, or false if\n // the form is invalid.\n if (_formKey.currentState.validate()) {\n // Process data.\n }\n },\n child: Text('Submit'),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [GlobalKey], a key that is unique across the entire app.\n * [FormField], a single form field widget that maintains the current state.\n * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].", "detail": "", "kind": 7, "label": "Form" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4Tween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [Matrix4]s.\n\nThis class specializes the interpolation of [Tween<Matrix4>] to be\nappropriate for transformation matrices.\n\nCurrently this class works only for translations.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "Matrix4Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the callback that's called when a [DrawerController] is\nopened or closed.", "detail": "(bool isOpened) → void", "kind": 7, "label": "DrawerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Table", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that uses the table layout algorithm for its children.\n\n\nIf you only have one row, the [Row] widget is more appropriate. If you only\nhave one column, the [SliverList] or [Column] widgets will be more\nappropriate.\n\nRows size vertically based on their contents. To control the column widths,\nuse the [columnWidths] property.\n\nFor more details about the table layout algorithm, see [RenderTable].\nTo control the alignment of children, see [TableCell].", "detail": "", "kind": 7, "label": "Table" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that does not require mutable state.\n\nA stateless widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\n\nStateless widget are useful when the part of the user interface you are\ndescribing does not depend on anything other than the configuration\ninformation in the object itself and the [BuildContext] in which the widget\nis inflated. For compositions that can change dynamically, e.g. due to\nhaving an internal clock-driven state, or depending on some system state,\nconsider using [StatefulWidget].\n\n## Performance considerations\n\nThe [build] method of a stateless widget is typically only called in three\nsituations: the first time the widget is inserted in the tree, when the\nwidget's parent changes its configuration, and when an [InheritedWidget] it\ndepends on changes.\n\nIf a widget's parent will regularly change the widget's configuration, or if\nit depends on inherited widgets that frequently change, then it is important\nto optimize the performance of the [build] method to maintain a fluid\nrendering performance.\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateless widget:\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. For example, instead of an elaborate arrangement\n of [Row]s, [Column]s, [Padding]s, and [SizedBox]es to position a single\n child in a particularly fancy manner, consider using just an [Align] or a\n [CustomSingleChildLayout]. Instead of an intricate layering of multiple\n [Container]s and with [Decoration]s to draw just the right graphical\n effect, consider a single [CustomPaint] widget.\n\n * Use `const` widgets where possible, and provide a `const` constructor for\n the widget so that users of the widget can also do so.\n\n * Consider refactoring the stateless widget into a stateful widget so that\n it can use some of the techniques described at [StatefulWidget], such as\n caching common parts of subtrees and using [GlobalKey]s when changing the\n tree structure.\n\n * If the widget is likely to get rebuilt frequently due to the use of\n [InheritedWidget]s, consider refactoring the stateless widget into\n multiple widgets, with the parts of the tree that change being pushed to\n the leaves. For example instead of building a tree with four widgets, the\n inner-most widget depending on the [Theme], consider factoring out the\n part of the build function that builds the inner-most widget into its own\n widget, so that only the inner-most widget needs to be rebuilt when the\n theme changes.\n\n\nThe following is a skeleton of a stateless widget subclass called `GreenFrog`.\n\nNormally, widgets have more constructor arguments, each of which corresponds\nto a `final` property.\n\n```dart\nclass GreenFrog extends StatelessWidget {\n const GreenFrog({ Key key }) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFF2DBD3A));\n }\n}\n```\n\n\nThis next example shows the more generic widget `Frog` which can be given\na color and a child:\n\n```dart\nclass Frog extends StatelessWidget {\n const Frog({\n Key key,\n this.color = const Color(0xFF2DBD3A),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n @override\n Widget build(BuildContext context) {\n return Container(color: color, child: child);\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatelessWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossFadeState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies which of two children to show. See [AnimatedCrossFade].\n\nThe child that is shown will fade in, while the other will fade out.", "detail": "", "kind": 13, "label": "CrossFadeState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalObjectKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A global key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nIf the object is not private, then it is possible that collisions will occur\nwhere independent widgets will reuse the same object as their\n[GlobalObjectKey] value in a different part of the tree, leading to a global\nkey conflict. To avoid this problem, create a private [GlobalObjectKey]\nsubclass, as in:\n\n```dart\nclass _MyKey extends GlobalObjectKey {\n const _MyKey(Object value) : super(value);\n}\n```\n\nSince the [runtimeType] of the key is part of its identity, this will\nprevent clashes with other [GlobalObjectKey]s even if they have the same\nvalue.\n\nAny [GlobalObjectKey] created for the same value will match.", "detail": "", "kind": 7, "label": "GlobalObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Material design text theme.\n\nDefinitions for the various typographical styles found in material design\n(e.g., button, caption). Rather than creating a [TextTheme] directly,\nyou can obtain an instance as [Typography.black] or [Typography.white].\n\nTo obtain the current text theme, call [Theme.of] with the current\n[BuildContext] and read the [ThemeData.textTheme] property.\n\nThe Material Design typography scheme was significantly changed in the\ncurrent (2018) version of the specification\n(https://material.io/design/typography).\n\nThe 2018 spec has thirteen text styles:\n```\nNAME SIZE WEIGHT SPACING\nheadline1 96.0 light -1.5\nheadline2 60.0 light -0.5\nheadline3 48.0 normal 0.0\nheadline4 34.0 normal 0.25\nheadline5 24.0 normal 0.0\nheadline6 20.0 medium 0.15\nsubtitle1 16.0 normal 0.15\nsubtitle2 14.0 medium 0.1\nbody1 16.0 normal 0.5\nbody2 14.0 normal 0.25\nbutton 14.0 medium 0.75\ncaption 12.0 normal 0.4\noverline 10.0 normal 1.5\n\n```\nWhere \"light\" is `FontWeight.w300`, \"normal\" is `FontWeight.w400` and\n\"medium\" is `FontWeight.w500`.\n\nThe [TextTheme] API is based on the original material (2014)\ndesign spec, which used different text style names. For backwards\ncompatibility's sake, this API continues to use the original\nnames. The table below should help with understanding the API in\nterms of the 2018 material spec.\n\nEach of the [TextTheme] text styles corresponds to one of the\nstyles from 2018 spec. By default, the font sizes, font weights\nand letter spacings have not changed from their original,\n2014, values.\n```\nNAME SIZE WEIGHT SPACING 2018 NAME\ndisplay4 112.0 thin 0.0 headline1\ndisplay3 56.0 normal 0.0 headline2\ndisplay2 45.0 normal 0.0 headline3\ndisplay1 34.0 normal 0.0 headline4\nheadline 24.0 normal 0.0 headline5\ntitle 20.0 medium 0.0 headline6\nsubhead 16.0 normal 0.0 subtitle1\nbody2 14.0 medium 0.0 body1\nbody1 14.0 normal 0.0 body2\ncaption 12.0 normal 0.0 caption\nbutton 14.0 medium 0.0 button\nsubtitle 14.0 medium 0.0 subtitle2\noverline 10.0 normal 0.0 overline\n```\n\nWhere \"thin\" is `FontWeight.w100`, \"normal\" is `FontWeight.w400` and\n\"medium\" is `FontWeight.w500`. Letter spacing for all of the original\ntext styles was 0.0.\n\nTo configure a [Theme] for the new sizes, weights, and letter spacings,\ninitialize its [ThemeData.typography] value with a [Typography] that\nobject that specifies the 2018 versions of the geometry themes:\n[Typography.englishLike2018], [Typography.dense2018],\nand [Typography.tall2018].\n\nThe following image [from the material design\nspecification](https://material.io/go/design-typography#typography-styles)\nshows the recommended styles for each of the properties of a [TextTheme].\nThis image uses the `Roboto` font, which is the font used on Android. On\niOS, the [San Francisco\nfont](https://developer.apple.com/ios/human-interface-guidelines/visual-design/typography/)\nis automatically used instead.\n\n![To see the image, visit the typography site referenced below.](https://storage.googleapis.com/material-design/publish/material_v_11/assets/0Bzhp5Z4wHba3alhXZ2pPWGk3Zjg/style_typography_styles_scale.png)\n\nSee also:\n\n * [Typography], the class that generates [TextTheme]s appropriate for a platform.\n * [Theme], for other aspects of a material design application that can be\n globally adjusted, such as the color scheme.\n * <https://material.io/design/typography/>", "detail": "", "kind": 7, "label": "TextTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaterialInkController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for creating [InkSplash]s and [InkHighlight]s on a material.\n\nTypically obtained via [Material.of].", "detail": "", "kind": 7, "label": "MaterialInkController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepperType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the [Stepper]'s main axis.", "detail": "", "kind": 13, "label": "StepperType" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonTheme] to configure the color and geometry of buttons.\n\nA button theme can be specified as part of the overall Material theme\nusing [ThemeData.buttonTheme]. The Material theme's button theme data\ncan be overridden with [ButtonTheme].", "detail": "", "kind": 7, "label": "ButtonThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design floating action button.\n\nA floating action button is a circular icon button that hovers over content\nto promote a primary action in the application. Floating action buttons are\nmost commonly used in the [Scaffold.floatingActionButton] field.\n\n\nUse at most a single floating action button per screen. Floating action\nbuttons should be used for positive actions such as \"create\", \"share\", or\n\"navigate\". (If more than one floating action button is used within a\n[Route], then make sure that each button has a unique [heroTag], otherwise\nan exception will be thrown.)\n\nIf the [onPressed] callback is null, then the button will be disabled and\nwill not react to touch. It is highly discouraged to disable a floating\naction button as there is no indication to the user that the button is\ndisabled. Consider changing the [backgroundColor] if disabling the floating\naction button.\n\nThis example shows how to make a simple [FloatingActionButton] in a\n[Scaffold], with a pink [backgroundColor] and a thumbs up [Icon].\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Floating Action Button Sample'),\n ),\n body: Center(\n child: Text('Press the button below!')\n ),\n floatingActionButton: FloatingActionButton(\n onPressed: () {\n // Add your onPressed code here!\n },\n child: Icon(Icons.thumb_up),\n backgroundColor: Colors.pink,\n ),\n );\n}\n```\n\nThis example shows how to make an extended [FloatingActionButton] in a\n[Scaffold], with a pink [backgroundColor] and a thumbs up [Icon] and a\n[Text] label.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Floating Action Button Sample'),\n ),\n body: Center(\n child: Text('Press the extended button below!'),\n ),\n floatingActionButton: FloatingActionButton.extended(\n onPressed: () {\n // Add your onPressed code here!\n },\n label: Text('Approve'),\n icon: Icon(Icons.thumb_up),\n backgroundColor: Colors.pink,\n ),\n );\n}\n```\n\nSee also:\n\n * [Scaffold], in which floating action buttons typically live.\n * [RaisedButton], another kind of button that appears to float above the\n content.\n * <https://material.io/design/components/buttons-floating-action-button.html>", "detail": "", "kind": 7, "label": "FloatingActionButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls the default color, opacity, and size of icons in a widget subtree.\n\nThe icon theme is honored by [Icon] and [ImageIcon] widgets.", "detail": "", "kind": 7, "label": "IconTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyedSubtree", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that builds its child.\n\nUseful for attaching a key to an existing widget.", "detail": "", "kind": 7, "label": "KeyedSubtree" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that calls callbacks in response to pointer events.\n\nRather than listening for raw pointer events, consider listening for\nhigher-level gestures using [GestureDetector].\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nIf it has a child, this widget defers to the child for sizing behavior. If\nit does not have a child, it grows to fit the parent instead.\n\nThis example makes a [Container] react to being entered by a mouse\npointer, showing a count of the number of entries and exits.\n\n```dart\nimport 'package:flutter/gestures.dart';\n```\n\n```dart\nint _enterCounter = 0;\nint _exitCounter = 0;\ndouble x = 0.0;\ndouble y = 0.0;\n\nvoid _incrementCounter(PointerEnterEvent details) {\n setState(() {\n _enterCounter++;\n });\n}\n\nvoid _decrementCounter(PointerExitEvent details) {\n setState(() {\n _exitCounter++;\n });\n}\n\nvoid _updateLocation(PointerHoverEvent details) {\n setState(() {\n x = details.position.dx;\n y = details.position.dy;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Center(\n child: ConstrainedBox(\n constraints: new BoxConstraints.tight(Size(300.0, 200.0)),\n child: Listener(\n onPointerEnter: _incrementCounter,\n onPointerHover: _updateLocation,\n onPointerExit: _decrementCounter,\n child: Container(\n color: Colors.lightBlueAccent,\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pointed at this box this many times:'),\n Text(\n '$_enterCounter Entries\\n$_exitCounter Exits',\n style: Theme.of(context).textTheme.display1,\n ),\n Text(\n 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [MouseTracker] an object that tracks mouse locations in the [GestureBinding].", "detail": "", "kind": 7, "label": "Listener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView].\n\n[ListWheelScrollView] lazily constructs its children during layout to avoid\ncreating more children than are visible through the [Viewport]. This\ndelegate is responsible for providing children to [ListWheelScrollView]\nduring that stage.\n\nSee also:\n\n * [ListWheelChildListDelegate], a delegate that supplies children using an\n explicit list.\n * [ListWheelChildLoopingListDelegate], a delegate that supplies infinite\n children by looping an explicit list.\n * [ListWheelChildBuilderDelegate], a delegate that supplies children using\n a builder callback.", "detail": "", "kind": 7, "label": "ListWheelChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopScope", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Registers a callback to veto attempts by the user to dismiss the enclosing\n[ModalRoute].\n\nSee also:\n\n * [ModalRoute.addScopedWillPopCallback] and [ModalRoute.removeScopedWillPopCallback],\n which this widget uses to register and unregister [onWillPop].", "detail": "", "kind": 7, "label": "WillPopScope" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetWillAccept", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for determining whether the given data will be accepted by a [DragTarget].\n\nUsed by [DragTarget.onWillAccept].", "detail": "(T data) → bool", "kind": 7, "label": "DragTargetWillAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableTextState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [EditableText].", "detail": "", "kind": 7, "label": "EditableTextState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The possible alignments of a [Drawer].", "detail": "", "kind": 13, "label": "DrawerAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedIcon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Shows an animated icon at a given animation [progress].\n\nThe available icons are specified in [AnimatedIcons].\n\n\n```dart\nAnimatedIcon(\n icon: AnimatedIcons.menu_arrow,\n progress: controller,\n semanticLabel: 'Show menu',\n)\n```\n", "detail": "", "kind": 7, "label": "AnimatedIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list of widgets arranged linearly.\n\n[ListView] is the most commonly used scrolling widget. It displays its\nchildren one after another in the scroll direction. In the cross axis, the\nchildren are required to fill the [ListView].\n\nIf non-null, the [itemExtent] forces the children to have the given extent\nin the scroll direction. Specifying an [itemExtent] is more efficient than\nletting the children determine their own extent because the scrolling\nmachinery can make use of the foreknowledge of the children's extent to save\nwork, for example when the scroll position changes drastically.\n\nThere are four options for constructing a [ListView]:\n\n 1. The default constructor takes an explicit [List<Widget>] of children. This\n constructor is appropriate for list views with a small number of\n children because constructing the [List] requires doing work for every\n child that could possibly be displayed in the list view instead of just\n those children that are actually visible.\n\n 2. The [ListView.builder] constructor takes an [IndexedWidgetBuilder], which\n builds the children on demand. This constructor is appropriate for list views\n with a large (or infinite) number of children because the builder is called\n only for those children that are actually visible.\n\n 3. The [ListView.separated] constructor takes two [IndexedWidgetBuilder]s:\n `itemBuilder` builds child items on demand, and `separatorBuilder`\n similarly builds separator children which appear in between the child items.\n This constructor is appropriate for list views with a fixed number of children.\n\n 4. The [ListView.custom] constructor takes a [SliverChildDelegate], which provides\n the ability to customize additional aspects of the child model. For example,\n a [SliverChildDelegate] can control the algorithm used to estimate the\n size of children that are not actually visible.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nThis example uses the default constructor for [ListView] which takes an\nexplicit [List<Widget>] of children. This [ListView]'s children are made up\nof [Container]s with [Text].\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view.png)\n\n```dart\nListView(\n padding: const EdgeInsets.all(8.0),\n children: <Widget>[\n Container(\n height: 50,\n color: Colors.amber[600],\n child: const Center(child: Text('Entry A')),\n ),\n Container(\n height: 50,\n color: Colors.amber[500],\n child: const Center(child: Text('Entry B')),\n ),\n Container(\n height: 50,\n color: Colors.amber[100],\n child: const Center(child: Text('Entry C')),\n ),\n ],\n)\n```\n\nThis example mirrors the previous one, creating the same list using the\n[ListView.builder] constructor. Using the [IndexedWidgetBuilder], children\nare built lazily and can be infinite in number.\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_builder.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.builder(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n }\n);\n```\n\nThis example continues to build from our the previous ones, creating a\nsimilar list using [ListView.separated]. Here, a [Divider] is used as a\nseparator.\n\n![A ListView of 3 amber colored containers with sample text and a Divider\nbetween each of them.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_separated.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.separated(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n },\n separatorBuilder: (BuildContext context, int index) => const Divider(),\n);\n```\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as when using\nthe default constructor) or lazily provided ones (such as when using the\n[ListView.builder] constructor).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree,\nstates and render objects are destroyed. A new child at the same position\nin the list will be lazily recreated along with new elements, states and\nrender objects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the list child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the list child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child\n widget subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the list child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the list keeps the child's render\n object (and by extension, its associated elements and states) in a cache\n list instead of destroying them. When scrolled back into view, the render\n object is repainted as-is (if it wasn't marked dirty in the interim).\n\n This only works if [addAutomaticKeepAlives] and [addRepaintBoundaries]\n are false since those parameters cause the [ListView] to wrap each child\n widget subtree with other widgets.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default when\n [addAutomaticKeepAlives] is true). Instead of unconditionally caching the\n child element subtree when scrolling off-screen like [KeepAlive],\n [AutomaticKeepAlive] can let whether to cache the subtree be determined\n by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its list child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the list child element subtree will be destroyed\n when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive\n by using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\n## Transitioning to [CustomScrollView]\n\nA [ListView] is basically a [CustomScrollView] with a single [SliverList] in\nits [CustomScrollView.slivers] property.\n\nIf [ListView] is no longer sufficient, for example because the scroll view\nis to have both a list and a grid, or because the list is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[ListView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [ListView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing either a\n[SliverList] or a [SliverFixedExtentList]; the former if [itemExtent] on the\n[ListView] was null, and the latter if [itemExtent] was not null.\n\nThe [childrenDelegate] property on [ListView] corresponds to the\n[SliverList.delegate] (or [SliverFixedExtentList.delegate]) property. The\n[new ListView] constructor's `children` argument corresponds to the\n[childrenDelegate] being a [SliverChildListDelegate] with that same\nargument. The [new ListView.builder] constructor's `itemBuilder` and\n`childCount` arguments correspond to the [childrenDelegate] being a\n[SliverChildBuilderDelegate] with the matching arguments.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the list itself, and having\nthe [SliverList] instead be a child of the [SliverPadding].\n\n[CustomScrollView]s don't automatically avoid obstructions from [MediaQuery]\nlike [ListView]s do. To reproduce the behavior, wrap the slivers in\n[SliverSafeArea]s.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [ListView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nListView(\n shrinkWrap: true,\n padding: const EdgeInsets.all(20.0),\n children: <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n shrinkWrap: true,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverList(\n delegate: SliverChildListDelegate(\n <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n ),\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is scrollable, 2D array of widgets.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [ListBody], which arranges its children in a similar manner, but without\n scrolling.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ListView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable, 2D array of widgets.\n\nThe main axis direction of a grid is the direction in which it scrolls (the\n[scrollDirection]).\n\nThe most commonly used grid layouts are [GridView.count], which creates a\nlayout with a fixed number of tiles in the cross axis, and\n[GridView.extent], which creates a layout with tiles that have a maximum\ncross-axis extent. A custom [SliverGridDelegate] can produce an arbitrary 2D\narrangement of children, including arrangements that are unaligned or\noverlapping.\n\nTo create a grid with a large (or infinite) number of children, use the\n[GridView.builder] constructor with either a\n[SliverGridDelegateWithFixedCrossAxisCount] or a\n[SliverGridDelegateWithMaxCrossAxisExtent] for the [gridDelegate].\n\nTo use a custom [SliverChildDelegate], use [GridView.custom].\n\nTo create a linear array of children, use a [ListView].\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n## Transitioning to [CustomScrollView]\n\nA [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in\nits [CustomScrollView.slivers] property.\n\nIf [GridView] is no longer sufficient, for example because the scroll view\nis to have both a grid and a list, or because the grid is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[GridView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [GridView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing just a\n[SliverGrid].\n\nThe [childrenDelegate] property on [GridView] corresponds to the\n[SliverGrid.delegate] property, and the [gridDelegate] property on the\n[GridView] corresponds to the [SliverGrid.gridDelegate] property.\n\nThe [new GridView], [new GridView.count], and [new GridView.extent]\nconstructors' `children` arguments correspond to the [childrenDelegate]\nbeing a [SliverChildListDelegate] with that same argument. The [new\nGridView.builder] constructor's `itemBuilder` and `childCount` arguments\ncorrespond to the [childrenDelegate] being a [SliverChildBuilderDelegate]\nwith the matching arguments.\n\nThe [new GridView.count] and [new GridView.extent] constructors create\ncustom grid delegates, and have equivalently named constructors on\n[SliverGrid] to ease the transition: [new SliverGrid.count] and [new\nSliverGrid.extent] respectively.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the grid itself, and having\nthe [SliverGrid] instead be a child of the [SliverPadding].\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [GridView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nGridView.count(\n primary: false,\n padding: const EdgeInsets.all(20.0),\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n primary: false,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverGrid.count(\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ListView], which is scrollable, linear list of widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "GridView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Opacity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.\n\n\n\nThis example shows some [Text] when the `_visible` member field is true, and\nhides it when it is false:\n\n```dart\nOpacity(\n opacity: _visible ? 1.0 : 0.0,\n child: const Text('Now you see me, now you don\\'t!'),\n)\n```\n\nThis is more efficient than adding and removing the child widget from the\ntree on demand.\n\n## Performance considerations for opacity animation\n\nAnimating an [Opacity] widget directly causes the widget (and possibly its\nsubtree) to rebuild each frame, which is not very efficient. Consider using\nan [AnimatedOpacity] instead.\n\n## Transparent image\n\nIf only a single [Image] or [Color] needs to be composited with an opacity\nbetween 0.0 and 1.0, it's much faster to directly use them without [Opacity]\nwidgets.\n\nFor example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much\nfaster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`.\n\n\nThe following example draws an [Image] with 0.5 opacity without using\n[Opacity]:\n\n```dart\nImage.network(\n 'https://raw.githubusercontent.com/flutter/assets-for-api-docs/master/packages/diagrams/assets/blend_mode_destination.jpeg',\n color: Color.fromRGBO(255, 255, 255, 0.5),\n colorBlendMode: BlendMode.modulate\n)\n```\n\n\nDirectly drawing an [Image] or [Color] with opacity is faster than using\n[Opacity] on top of them because [Opacity] could apply the opacity to a\ngroup of widgets and therefore a costly offscreen buffer will be used.\nDrawing content into the offscreen buffer may also trigger render target\nswitches and such switching is particularly slow in older GPUs.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly, because it is either visible or hidden, rather than allowing\n fractional opacity values).\n * [ShaderMask], which can apply more elaborate effects to its child.\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [AnimatedOpacity], which uses an animation internally to efficiently\n animate opacity.\n * [FadeTransition], which uses a provided animation to efficiently animate\n opacity.\n * [Image], which can directly provide a partially transparent image with\n much less performance hit.", "detail": "", "kind": 7, "label": "Opacity" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Card", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design card. A card has slightly rounded corners and a shadow.\n\nA card is a sheet of [Material] used to represent some related information,\nfor example an album, a geographical location, a meal, contact details, etc.\n\nThis is what it looks like when run:\n\n![A card with a slight shadow, consisting of two rows, one with an icon and\nsome text describing a musical, and the other with buttons for buying\ntickets or listening to the show.](https://flutter.github.io/assets-for-api-docs/assets/material/card.png)\n\n\nThis sample shows creation of a [Card] widget that shows album information\nand two actions.\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Card(\n child: Column(\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n const ListTile(\n leading: Icon(Icons.album),\n title: Text('The Enchanted Nightingale'),\n subtitle: Text('Music by Julie Gable. Lyrics by Sidney Stein.'),\n ),\n ButtonTheme.bar( // make buttons use the appropriate styles for cards\n child: ButtonBar(\n children: <Widget>[\n FlatButton(\n child: const Text('BUY TICKETS'),\n onPressed: () { /* ... */ },\n ),\n FlatButton(\n child: const Text('LISTEN'),\n onPressed: () { /* ... */ },\n ),\n ],\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSometimes the primary action area of a card is the card itself. Cards can be\none large touch target that shows a detail screen when tapped.\n\n\nThis sample shows creation of a [Card] widget that can be tapped. When\ntapped this [Card]'s [InkWell] displays an \"ink splash\" that fills the\nentire card.\n\n```dart\nWidget build(BuildContext context) {\n return Center(\n child: Card(\n child: InkWell(\n splashColor: Colors.blue.withAlpha(30),\n onTap: () {\n print('Card tapped.');\n },\n child: Container(\n width: 300,\n height: 100,\n child: Text('A card that can be tapped'),\n ),\n ),\n ),\n );\n}\n```\n\n\nSee also:\n\n * [ListTile], to display icons and text in a card.\n * [ButtonBar], to display buttons at the bottom of a card. Typically these\n would be styled using a [ButtonTheme] created with [new ButtonTheme.bar].\n * [showDialog], to display a modal card.\n * <https://material.io/design/components/cards.html>", "detail": "", "kind": 7, "label": "Card" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollHoldController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Interface for holding a [Scrollable] stationary.\n\nAn object that implements this interface is returned by\n[ScrollPosition.hold]. It holds the scrollable stationary until an activity\nis started or the [cancel] method is called.", "detail": "", "kind": 7, "label": "ScrollHoldController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The Flutter logo, in widget form. This widget respects the [IconTheme].\nFor guidelines on using the Flutter logo, visit https://flutter.dev/brand.\n\nSee also:\n\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for showing icons the Material design icon library.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "FlutterLogo" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleResolutionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The signature of [WidgetsApp.localeResolutionCallback].\n\nIt is recommended to provide a [LocaleListResolutionCallback] instead of a\n[LocaleResolutionCallback] when possible, as [LocaleResolutionCallback] only\nreceives a subset of the information provided in [LocaleListResolutionCallback].\n\nA [LocaleResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the default\nlocale for the device after [LocaleListResolutionCallback] fails or is not provided.\n\nThis callback is also used if the app is created with a specific locale using\nthe [new WidgetsApp] `locale` parameter.\n\nThe [locale] is either the value of [WidgetsApp.locale], or the device's default\nlocale when the app started, or the device locale the user selected after the app\nwas started. The default locale is the first locale in the list of preferred\nlocales. If [locale] is null, then Flutter has not yet received the locale\ninformation from the platform. The [supportedLocales] parameter is just the value of\n[WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleListResolutionCallback], which takes a list of preferred locales (instead of one locale).\n Resolutions by [LocaleListResolutionCallback] take precedence over [LocaleResolutionCallback].", "detail": "(Locale locale, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownButtonHideUnderline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An inherited widget that causes any descendant [DropdownButton]\nwidgets to not include their regular underline.\n\nThis is used by [DataTable] to remove the underline from any\n[DropdownButton] widgets placed within material data tables, as\nrequired by the material design specification.", "detail": "", "kind": 7, "label": "DropdownButtonHideUnderline" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirectionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [Dismissible] to indicate that it has been dismissed in\nthe given `direction`.\n\nUsed by [Dismissible.onDismissed].", "detail": "(DismissDirection direction) → void", "kind": 7, "label": "DismissDirectionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An abstract widget for building widgets that gradually change their\nvalues over a period of time.\n\nSubclasses' States must provide a way to visit the subclass's relevant\nfields to animate. [ImplicitlyAnimatedWidget] will then automatically\ninterpolate and animate those fields using the provided duration and\ncurve when those fields change.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A route that blocks interaction with previous routes.\n\n[ModalRoute]s cover the entire [Navigator]. They are not necessarily\n[opaque], however; for example, a pop-up menu uses a [ModalRoute] but only\nshows the menu in a small box overlapping the previous route.\n\nThe `T` type argument is the return value of the route. If there is no\nreturn value, consider using `void` as the return value.", "detail": "", "kind": 7, "label": "ModalRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [BorderRadius]s.\n\nThis class specializes the interpolation of [Tween<BorderRadius>] to use\n[BorderRadius.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderRadiusTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for widgets that efficiently propagate information down the tree.\n\nTo obtain the nearest instance of a particular type of inherited widget from\na build context, use [BuildContext.inheritFromWidgetOfExactType].\n\nInherited widgets, when referenced in this way, will cause the consumer to\nrebuild when the inherited widget itself changes state.\n\n\n\nThe following is a skeleton of an inherited widget called `FrogColor`:\n\n```dart\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor) as FrogColor;\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n```\n\nThe convention is to provide a static method `of` on the [InheritedWidget]\nwhich does the call to [BuildContext.inheritFromWidgetOfExactType]. This\nallows the class to define its own fallback logic in case there isn't\na widget in scope. In the example above, the value returned will be\nnull in that case, but it could also have defaulted to a value.\n\nSometimes, the `of` method returns the data rather than the inherited\nwidget; for example, in this case it could have returned a [Color] instead\nof the `FrogColor` widget.\n\nOccasionally, the inherited widget is an implementation detail of another\nclass, and is therefore private. The `of` method in that case is typically\nput on the public class instead. For example, [Theme] is implemented as a\n[StatelessWidget] that builds a private inherited widget; [Theme.of] looks\nfor that inherited widget using [BuildContext.inheritFromWidgetOfExactType]\nand then returns the [ThemeData].\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CollapseMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The collapsing effect while the space bar expands or collapses.", "detail": "", "kind": 13, "label": "CollapseMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radio", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design radio button.\n\nUsed to select between a number of mutually exclusive values. When one radio\nbutton in a group is selected, the other radio buttons in the group cease to\nbe selected. The values are of type `T`, the type parameter of the [Radio]\nclass. Enums are commonly used for this purpose.\n\nThe radio button itself does not maintain any state. Instead, when the state\nof the radio button changes, the widget calls the [onChanged] callback.\nMost widget that use a radio button will listen for the [onChanged]\ncallback and rebuild the radio button with a new [groupValue] to update the\nvisual appearance of the radio button.\n\nRequires one of its ancestors to be a [Material] widget.\n\nSee also:\n\n * [RadioListTile], which combines this widget with a [ListTile] so that\n you can give the radio button a label.\n * [Slider], for selecting a value in a range.\n * [Checkbox] and [Switch], for toggling a particular value on or off.\n * <https://material.io/design/components/selection-controls.html#radio-buttons>", "detail": "", "kind": 7, "label": "Radio" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressDraggable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Makes its child draggable starting from long press.", "detail": "", "kind": 7, "label": "LongPressDraggable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlertDialog", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design alert dialog.\n\nAn alert dialog informs the user about situations that require\nacknowledgement. An alert dialog has an optional title and an optional list\nof actions. The title is displayed above the content and the actions are\ndisplayed below the content.\n\nIf the content is too large to fit on the screen vertically, the dialog will\ndisplay the title and the actions and let the content overflow, which is\nrarely desired. Consider using a scrolling widget for [content], such as\n[SingleChildScrollView], to avoid overflow. (However, be aware that since\n[AlertDialog] tries to size itself using the intrinsic dimensions of its\nchildren, widgets such as [ListView], [GridView], and [CustomScrollView],\nwhich use lazy viewports, will not work. If this is a problem, consider\nusing [Dialog] directly.)\n\nFor dialogs that offer the user a choice between several options, consider\nusing a [SimpleDialog].\n\nTypically passed as the child widget to [showDialog], which displays the\ndialog.\n\n\nThis snippet shows a method in a [State] which, when called, displays a dialog box\nand returns a [Future] that completes when the dialog is dismissed.\n\n```dart\nFuture<void> _neverSatisfied() async {\n return showDialog<void>(\n context: context,\n barrierDismissible: false, // user must tap button!\n builder: (BuildContext context) {\n return AlertDialog(\n title: Text('Rewind and remember'),\n content: SingleChildScrollView(\n child: ListBody(\n children: <Widget>[\n Text('You will never be satisfied.'),\n Text('You\\’re like me. I’m never satisfied.'),\n ],\n ),\n ),\n actions: <Widget>[\n FlatButton(\n child: Text('Regret'),\n onPressed: () {\n Navigator.of(context).pop();\n },\n ),\n ],\n );\n },\n );\n}\n```\n\nSee also:\n\n * [SimpleDialog], which handles the scrolling of the contents but has no [actions].\n * [Dialog], on which [AlertDialog] and [SimpleDialog] are based.\n * [CupertinoAlertDialog], an iOS-styled alert dialog.\n * [showDialog], which actually displays the dialog and returns its result.\n * <https://material.io/design/components/dialogs.html#alert-dialog>", "detail": "", "kind": 7, "label": "AlertDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A graphical icon widget drawn with a glyph from a font described in\nan [IconData] such as material's predefined [IconData]s in [Icons].\n\nIcons are not interactive. For an interactive icon, consider material's\n[IconButton].\n\nThere must be an ambient [Directionality] widget when using [Icon].\nTypically this is introduced automatically by the [WidgetsApp] or\n[MaterialApp].\n\nThis widget assumes that the rendered icon is squared. Non-squared icons may\nrender incorrectly.\n\n\nThis example shows how to use [Icon] to create an addition icon, in the\ncolor pink, and 30 x 30 pixels in size.\n\n```dart\nIcon(\n Icons.add,\n color: Colors.pink,\n size: 30.0,\n)\n```\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [Icons], for the list of available icons for use with this class.\n * [IconTheme], which provides ambient configuration for icons.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "Icon" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TabBarView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A page view that displays the widget which corresponds to the currently\nselected tab. Typically used in conjunction with a [TabBar].\n\nIf a [TabController] is not provided, then there must be a [DefaultTabController]\nancestor.", "detail": "", "kind": 7, "label": "TabBarView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The state of a [Step] which is used to control the style of the circle and\ntext.\n\nSee also:\n\n * [Step]", "detail": "", "kind": 13, "label": "StepState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidgetBaseState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for widgets with implicit animations that need to rebuild their\nwidget tree as the animation runs.\n\nThis class calls [build] each frame that the animation tickets. For a\nvariant that does not rebuild each frame, consider subclassing\n[ImplicitlyAnimatedWidgetState] directly.\n\nSubclasses must implement the [forEachTween] method to allow\n[AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields\nand animate them.", "detail": "", "kind": 7, "label": "AnimatedWidgetBaseState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePopDisposition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates whether the current route should be popped.\n\nUsed as the return value for [Route.willPop].\n\nSee also:\n\n * [WillPopScope], a widget that hooks into the route's [Route.willPop]\n mechanism.", "detail": "", "kind": 13, "label": "RoutePopDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrolling container that animates items when they are inserted or removed.\n\nThis widget's [AnimatedListState] can be used to dynamically insert or remove\nitems. To refer to the [AnimatedListState] either provide a [GlobalKey] or\nuse the static [of] method from an item's input callback.\n\nThis widget is similar to one created by [ListView.builder].", "detail": "", "kind": 7, "label": "AnimatedList" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorScheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A set of twelve colors based on the\n[Material spec](https://material.io/design/color/the-color-system.html)\nthat can be used to configure the color properties of most components.\n\nThe [Theme] has a color scheme, [ThemeData.colorScheme], which is constructed\nwith [ColorScheme.fromSwatch].", "detail": "", "kind": 7, "label": "ColorScheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraintsTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [BoxConstraints].\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[BoxConstraints.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BoxConstraintsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkFeature", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual reaction on a piece of [Material].\n\nTo add an ink feature to a piece of [Material], obtain the\n[MaterialInkController] via [Material.of] and call\n[MaterialInkController.addInkFeature].", "detail": "", "kind": 7, "label": "InkFeature" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsApp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience class that wraps a number of widgets that are commonly\nrequired for an application.\n\nOne of the primary roles that [WidgetsApp] provides is binding the system\nback button to popping the [Navigator] or quitting the application.\n\nSee also: [CheckedModeBanner], [DefaultTextStyle], [MediaQuery],\n[Localizations], [Title], [Navigator], [Overlay], [SemanticsDebugger] (the\nwidgets wrapped by this one).", "detail": "", "kind": 7, "label": "WidgetsApp" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for scroll views whose items have the same size.\n\nSimilar to a standard [ScrollController] but with the added convenience\nmechanisms to read and go to item indices rather than a raw pixel scroll\noffset.\n\nSee also:\n\n * [ListWheelScrollView], a scrollable view widget with fixed size items\n that this widget controls.\n * [FixedExtentMetrics], the `metrics` property exposed by\n [ScrollNotification] from [ListWheelScrollView] which can be used\n to listen to the current item index on a push basis rather than polling\n the [FixedExtentScrollController].", "detail": "", "kind": 7, "label": "FixedExtentScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays an image.\n\nSeveral constructors are provided for the various ways that an image can be\nspecified:\n\n * [new Image], for obtaining an image from an [ImageProvider].\n * [new Image.asset], for obtaining an image from an [AssetBundle]\n using a key.\n * [new Image.network], for obtaining an image from a URL.\n * [new Image.file], for obtaining an image from a [File].\n * [new Image.memory], for obtaining an image from a [Uint8List].\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\nTo automatically perform pixel-density-aware asset resolution, specify the\nimage using an [AssetImage] and make sure that a [MaterialApp], [WidgetsApp],\nor [MediaQuery] widget exists above the [Image] widget in the widget tree.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nSee also:\n\n * [Icon], which shows an image from a font.\n * [new Ink.image], which is the preferred way to show an image in a\n material application (especially if the image is in a [Material] and will\n have an [InkWell] on top of it).\n * [Image](https://api.flutter.dev/flutter/dart-ui/Image-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorber", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[SliverOverlapInjector].\n\nSee also:\n\n * [NestedScrollView], whose documentation has sample code showing how to\n use this widget.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPadding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that applies padding on each side of another sliver.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverPadding]\nis a basic sliver that insets another sliver by applying padding on each\nside.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a [SliverPersistentHeader] with\n`pinned:true` will cause the app bar to overlap earlier slivers (contrary to\nthe normal behavior of pinned app bars), and while the app bar is pinned,\nthe padding will scroll away.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.", "detail": "", "kind": 7, "label": "SliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRowInkWell", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular area of a Material that responds to touch but clips\nits ink splashes to the current table row of the nearest table.\n\nMust have an ancestor [Material] widget in which to cause ink\nreactions and an ancestor [Table] widget to establish a row.\n\nThe [TableRowInkWell] must be in the same coordinate space (modulo\ntranslations) as the [Table]. If it's rotated or scaled or\notherwise transformed, it will not be able to describe the\nrectangle of the row in its own coordinate system as a [Rect], and\nthus the splash will not occur. (In general, this is easy to\nachieve: just put the [TableRowInkWell] as the direct child of the\n[Table], and put the other contents of the cell inside it.)", "detail": "", "kind": 7, "label": "TableRowInkWell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stepper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material stepper widget that displays progress through a sequence of\nsteps. Steppers are particularly useful in the case of forms where one step\nrequires the completion of another one, or where multiple steps need to be\ncompleted in order to submit the whole form.\n\nThe widget is a flexible wrapper. A parent class should pass [currentStep]\nto this widget based on some logic triggered by the three callbacks that it\nprovides.\n\nSee also:\n\n * [Step]\n * <https://material.io/archive/guidelines/components/steppers.html>", "detail": "", "kind": 7, "label": "Stepper" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A builder that builds a widget given a child.\n\nThe child should typically be part of the returned widget tree.\n\nUsed by [AnimatedBuilder.builder], as well as [WidgetsApp.builder] and\n[MaterialApp.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context, Widget child) → Widget", "kind": 7, "label": "TransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Viewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is bigger on the inside.\n\n[Viewport] is the visual workhorse of the scrolling machinery. It displays a\nsubset of its children according to its own dimensions and the given\n[offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[Viewport] hosts a bidirectional list of slivers, anchored on a [center]\nsliver, which is placed at the zero scroll offset. The center widget is\ndisplayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[Viewport] cannot contain box children directly. Instead, use a\n[SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [Viewport] into widgets that are easier to use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [ShrinkWrappingViewport], a variant of [Viewport] that shrink-wraps its\n contents along the main axis.", "detail": "", "kind": 7, "label": "Viewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a shape.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\nFor shapes that cannot be expressed as a rectangle with rounded corners use\n[PhysicalShape].\n\nSee also:\n\n * [DecoratedBox], which can apply more arbitrary shadow effects.\n * [ClipRect], which applies a clip to its child.", "detail": "", "kind": 7, "label": "PhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Baseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that positions its child according to the child's baseline.\n\nThis widget shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child. If [baseline] is less than the distance from\nthe top of the child to the baseline of the child, then the child\nis top-aligned instead.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [Center], a widget that centers its child within itself.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Baseline" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of an icon fulfilled by a font glyph.\n\nSee [Icons] for a number of predefined icons available for material\ndesign applications.", "detail": "", "kind": 7, "label": "IconData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An implementation of scroll physics that matches iOS.\n\nSee also:\n\n * [ClampingScrollSimulation], which implements Android scroll physics.", "detail": "", "kind": 7, "label": "BouncingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillRemaining", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[SliverFillRemaining] sizes its child to fill the viewport in the cross axis\nand to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CardTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines default property values for descendant [Card] widgets.\n\nDescendant widgets obtain the current [CardTheme] object using\n`CardTheme.of(context)`. Instances of [CardTheme] can be\ncustomized with [CardTheme.copyWith].\n\nTypically a [CardTheme] is specified as part of the overall [Theme]\nwith [ThemeData.cardTheme].\n\nAll [CardTheme] properties are `null` by default. When null, the [Card]\nwill use the values from [ThemeData] if they exist, otherwise it will\nprovide its own defaults.\n\nSee also:\n\n * [ThemeData], which describes the overall theme information for the\n application.", "detail": "", "kind": 7, "label": "CardTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableCanceledCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a [Draggable] is dropped without being accepted by a [DragTarget].\n\nUsed by [Draggable.onDraggableCanceled].", "detail": "(Velocity velocity, Offset offset) → void", "kind": 7, "label": "DraggableCanceledCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShrinkWrappingViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that is bigger on the inside and shrink wraps its children in the\nmain axis.\n\n[ShrinkWrappingViewport] displays a subset of its children according to its\nown dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[ShrinkWrappingViewport] differs from [Viewport] in that [Viewport] expands\nto fill the main axis whereas [ShrinkWrappingViewport] sizes itself to match\nits children in the main axis. This shrink wrapping behavior is expensive\nbecause the children, and hence the viewport, could potentially change size\nwhenever the [offset] changes (e.g., because of a collapsing header).\n\n[ShrinkWrappingViewport] cannot contain box children directly. Instead, use\na [SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [ShrinkWrappingViewport] into widgets that are easier to\n use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [Viewport], a viewport that does not shrink-wrap its contents.", "detail": "", "kind": 7, "label": "ShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrackingScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ScrollController] whose [initialScrollOffset] tracks its most recently\nupdated [ScrollPosition].\n\nThis class can be used to synchronize the scroll offset of two or more\nlazily created scroll views that share a single [TrackingScrollController].\nIt tracks the most recently updated scroll position and reports it as its\n`initialScrollOffset`.\n\n\nIn this example each [PageView] page contains a [ListView] and all three\n[ListView]'s share a [TrackingScrollController]. The scroll offsets of all\nthree list views will track each other, to the extent that's possible given\nthe different list lengths.\n\n```dart\nPageView(\n children: <Widget>[\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),\n ),\n ],\n)\n```\n\nIn this example the `_trackingController` would have been created by the\nstateful widget that built the widget tree.", "detail": "", "kind": 7, "label": "TrackingScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for stateful widgets that have exactly one inflated instance in\nthe tree.\n\nSuch widgets must be given a [GlobalKey]. This key can be generated by the\nsubclass from its [Type] object, e.g. by calling `super(key: new\nGlobalObjectKey(MyWidget))` where `MyWidget` is the name of the subclass.\n\nSince only one instance can be inflated at a time, there is only ever one\ncorresponding [State] object. That object is exposed, for convenience, via\nthe [currentState] property.\n\nWhen subclassing [UniqueWidget], provide the corresponding [State] subclass\nas the type argument.", "detail": "", "kind": 7, "label": "UniqueWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that scrolls.\n\nScrollable widgets consist of three pieces:\n\n 1. A [Scrollable] widget, which listens for various user gestures and\n implements the interaction design for scrolling.\n 2. A viewport widget, such as [Viewport] or [ShrinkWrappingViewport], which\n implements the visual design for scrolling by displaying only a portion\n of the widgets inside the scroll view.\n 3. One or more slivers, which are widgets that can be composed to created\n various scrolling effects, such as lists, grids, and expanding headers.\n\n[ScrollView] helps orchestrate these pieces by creating the [Scrollable] and\nthe viewport and deferring to its subclass to create the slivers.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedModalBarrier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself,\nand can be configured with an animated color value.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nThis widget is similar to [ModalBarrier] except that it takes an animated\n[color] instead of a single color.\n\nSee also:\n\n * [ModalRoute], which uses this widget.", "detail": "", "kind": 7, "label": "AnimatedModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The top-most region of a material design drawer. The header's [child]\nwidget, if any, is placed inside a [Container] whose [decoration] can be\npassed as an argument, inset by the given [padding].\n\nPart of the material design [Drawer].\n\nRequires one of its ancestors to be a [Material] widget. This condition is\nsatisfied by putting the [DrawerHeader] in a [Drawer].\n\nSee also:\n\n * [UserAccountsDrawerHeader], a variant of [DrawerHeader] that is\n specialized for showing user accounts.\n * <https://material.io/design/components/navigation-drawer.html>", "detail": "", "kind": 7, "label": "DrawerHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPaint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [CustomPaint] first asks its [painter] to paint on the\ncurrent canvas, then it paints its child, and then, after painting its\nchild, it asks its [foregroundPainter] to paint. The coordinate system of the\ncanvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing [CustomPainter].\n\n\nBecause custom paint calls its painters during paint, you cannot call\n`setState` or `markNeedsLayout` during the callback (the layout for this\nframe has already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [size], which defaults to\n[Size.zero]. [size] must not be null.\n\n[isComplex] and [willChange] are hints to the compositor's raster cache\nand must not be null.\n\n\nThis example shows how the sample custom painter shown at [CustomPainter]\ncould be used in a [CustomPaint] widget to display a background to some\ntext.\n\n```dart\nCustomPaint(\n painter: Sky(),\n child: Center(\n child: Text(\n 'Once upon a time...',\n style: const TextStyle(\n fontSize: 40.0,\n fontWeight: FontWeight.w900,\n color: Color(0xFFFFFFFF),\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomPainter], the class to extend when creating custom painters.\n * [Canvas], the class that a custom painter uses to paint.", "detail": "", "kind": 7, "label": "CustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicHeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Element that supports building children lazily for [ListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotatedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that rotates its child by a integral number of quarter turns.\n\nUnlike [Transform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.\n\n\nThis snippet rotates the child (some [Text]) so that it renders from bottom\nto top, like an axis label on a graph:\n\n```dart\nRotatedBox(\n quarterTurns: 3,\n child: const Text('Hello World!'),\n)\n```\n\nSee also:\n\n * [Transform], which is a paint effect that allows you to apply an\n arbitrary transform to a child.\n * [new Transform.rotate], which applies a rotation paint effect.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "RotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapInjector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [RenderSliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [RenderViewport] (probably a [RenderNestedScrollViewViewport]), so\nthat it will always be laid out before the [RenderSliverOverlapInjector]\nduring a particular frame.", "detail": "", "kind": 7, "label": "RenderSliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItemBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature used by [PopupMenuButton] to lazily construct the items shown when\nthe button is pressed.\n\nUsed by [PopupMenuButton.itemBuilder].", "detail": "(BuildContext context) → List<PopupMenuEntry<T>>", "kind": 7, "label": "PopupMenuItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates a route for the given route settings.\n\nUsed by [Navigator.onGenerateRoute] and [Navigator.onUnknownRoute].", "detail": "(RouteSettings settings) → Route<dynamic>", "kind": 7, "label": "RouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPath", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that clips its child using a path.\n\nCalls a callback on a delegate whenever the widget is to be\npainted. The callback returns a path and the widget prevents the\nchild from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized widgets:\n\n * To clip to a rectangle, consider [ClipRect].\n * To clip to an oval or circle, consider [ClipOval].\n * To clip to a rounded rectangle, consider [ClipRRect].\n\nTo clip to a particular [ShapeBorder], consider using either the\n[ClipPath.shape] static method or the [ShapeBorderClipper] custom clipper\nclass.", "detail": "", "kind": 7, "label": "ClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CloseButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design close button.\n\nA [CloseButton] is an [IconButton] with a \"close\" icon. When pressed, the\nclose button calls [Navigator.maybePop] to return to the previous route.\n\nUse a [CloseButton] instead of a [BackButton] on fullscreen dialogs or\npages that may solicit additional actions to close.\n\nSee also:\n\n * [AppBar], which automatically uses a [CloseButton] in its\n [AppBar.leading] slot when appropriate.\n * [BackButton], which is more appropriate for middle nodes in the\n navigation tree or where pages can be popped instantaneously with\n no user data consequence.\n * [IconButton], to create other material design icon buttons.", "detail": "", "kind": 7, "label": "CloseButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormField", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A single form field.\n\nThis widget maintains the current state of the form field, so that updates\nand validation errors are visually reflected in the UI.\n\nWhen used inside a [Form], you can use methods on [FormState] to query or\nmanipulate the form data as a whole. For example, calling [FormState.save]\nwill invoke each [FormField]'s [onSaved] callback in turn.\n\nUse a [GlobalKey] with [FormField] if you want to retrieve its current\nstate, for example if you want one form field to depend on another.\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nSee also:\n\n * [Form], which is the widget that aggregates the form fields.\n * [TextField], which is a commonly used form field for entering text.", "detail": "", "kind": 7, "label": "FormField" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The glue between the widgets layer and the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidgetState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A base class for widgets with implicit animations.\n\n[ImplicitlyAnimatedWidgetState] requires that subclasses respond to the\nanimation, themselves. If you would like `setState()` to be called\nautomatically as the animation changes, use [AnimatedWidgetBaseState].\n\nSubclasses must implement the [forEachTween] method to allow\n[ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's\nfields and animate them.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidgetState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteTransitionsBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the function that builds a route's transitions.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildTransitions] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) → Widget", "kind": 7, "label": "RouteTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusManager", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Manages the focus tree.\n\nThe focus tree keeps track of which [FocusNode] is the user's current\nkeyboard focus. The widget that owns the [FocusNode] often listens for\nkeyboard events.\n\nThe focus manager is responsible for holding the [FocusScopeNode] that is\nthe root of the focus tree and tracking which [FocusNode] has the overall\nfocus.\n\nThe [FocusManager] is held by the [WidgetsBinding] as\n[WidgetsBinding.focusManager]. The [FocusManager] is rarely accessed\ndirectly. Instead, to find the [FocusScopeNode] for a given [BuildContext],\nuse [FocusScope.of].\n\nThe [FocusManager] knows nothing about [FocusNode]s other than the one that\nis currently focused. If a [FocusScopeNode] is removed, then the\n[FocusManager] will attempt to focus the next [FocusScopeNode] in the focus\ntree that it maintains, but if the current focus in that [FocusScopeNode] is\nnull, it will stop there, and no [FocusNode] will have focus.\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusManager" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A controller for [PageView].\n\nA page controller lets you manipulate which page is visible in a [PageView].\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nSee also:\n\n * [PageView], which is the widget this object controls.", "detail": "", "kind": 7, "label": "PageController" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that is unique across the entire app.\n\nGlobal keys uniquely identify elements. Global keys provide access to other\nobjects that are associated with elements, such as the a [BuildContext] and,\nfor [StatefulWidget]s, a [State].\n\nWidgets that have global keys reparent their subtrees when they are moved\nfrom one location in the tree to another location in the tree. In order to\nreparent its subtree, a widget must arrive at its new location in the tree\nin the same animation frame in which it was removed from its old location in\nthe tree.\n\nGlobal keys are relatively expensive. If you don't need any of the features\nlisted above, consider using a [Key], [ValueKey], [ObjectKey], or\n[UniqueKey] instead.\n\nYou cannot simultaneously include two widgets in the tree with the same\nglobal key. Attempting to do so will assert at runtime.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "GlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Enables or disables tickers (and thus animation controllers) in the widget\nsubtree.\n\nThis only works if [AnimationController] objects are created using\nwidget-aware ticker providers. For example, using a\n[TickerProviderStateMixin] or a [SingleTickerProviderStateMixin].", "detail": "", "kind": 7, "label": "TickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An item in a material design popup menu.\n\nTo show a popup menu, use the [showMenu] function. To create a button that\nshows a popup menu, consider using [PopupMenuButton].\n\nTo show a checkmark next to a popup menu item, consider using\n[CheckedPopupMenuItem].\n\nTypically the [child] of a [PopupMenuItem] is a [Text] widget. More\nelaborate menus with icons can use a [ListTile]. By default, a\n[PopupMenuItem] is 48 pixels high. If you use a widget with a different\nheight, it must be specified in the [height] property.\n\n\nHere, a [Text] widget is used with a popup menu item. The `WhyFarther` type\nis an enum, not shown here.\n\n```dart\nconst PopupMenuItem<WhyFarther>(\n value: WhyFarther.harder,\n child: Text('Working a lot harder'),\n)\n```\n\nSee the example at [PopupMenuButton] for how this example could be used in a\ncomplete menu, and see the example at [CheckedPopupMenuItem] for one way to\nkeep the text of [PopupMenuItem]s that use [Text] widgets in their [child]\nslot aligned with the text of [CheckedPopupMenuItem]s or of [PopupMenuItem]\nthat use a [ListTile] in their [child] slot.\n\nSee also:\n\n * [PopupMenuDivider], which can be used to divide items from each other.\n * [CheckedPopupMenuItem], a variant of [PopupMenuItem] with a checkmark.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "PopupMenuItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Column", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in a vertical array.\n\nTo cause a child to expand to fill the available vertical space, wrap the\nchild in an [Expanded] widget.\n\nThe [Column] widget does not scroll (and in general it is considered an error\nto have more children in a [Column] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a horizontal variant, see [Row].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example uses a [Column] to arrange three widgets vertically, the last\nbeing made to fill all the remaining space.\n\n```dart\nColumn(\n children: <Widget>[\n Text('Deliver features faster'),\n Text('Craft beautiful UIs'),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\nIn the sample above, the text and the logo are centered on each line. In the\nfollowing example, the [crossAxisAlignment] is set to\n[CrossAxisAlignment.start], so that the children are left-aligned. The\n[mainAxisSize] is set to [MainAxisSize.min], so that the column shrinks to\nfit the children.\n\n```dart\nColumn(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n Text('We move under cover and we move as one'),\n Text('Through the night, we have one shot to live another day'),\n Text('We cannot let a stray gunshot give us away'),\n Text('We will fight up close, seize the moment and stay in it'),\n Text('It’s either that or meet the business end of a bayonet'),\n Text('The code word is ‘Rochambeau,’ dig me?'),\n Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),\n ],\n)\n```\n\n## Troubleshooting\n\n### When the incoming vertical constraints are unbounded\n\nWhen a [Column] has one or more [Expanded] or [Flexible] children, and is\nplaced in another [Column], or in a [ListView], or in some other context\nthat does not provide a maximum height constraint for the [Column], you will\nget an exception at runtime saying that there are children with non-zero\nflex but the vertical constraints are unbounded.\n\nThe problem, as described in the details that accompany that exception, is\nthat using [Flexible] or [Expanded] means that the remaining space after\nlaying out all the other children must be shared equally, but if the\nincoming vertical constraints are unbounded, there is infinite remaining\nspace.\n\nThe key to solving this problem is usually to determine why the [Column] is\nreceiving unbounded vertical constraints.\n\nOne common reason for this to happen is that the [Column] has been placed in\nanother [Column] (without using [Expanded] or [Flexible] around the inner\nnested [Column]). When a [Column] lays out its non-flex children (those that\nhave neither [Expanded] or [Flexible] around them), it gives them unbounded\nconstraints so that they can determine their own dimensions (passing\nunbounded constraints usually signals to the child that it should\nshrink-wrap its contents). The solution in this case is typically to just\nwrap the inner column in an [Expanded] to indicate that it should take the\nremaining space of the outer column, rather than being allowed to take any\namount of room it desires.\n\nAnother reason for this message to be displayed is nesting a [Column] inside\na [ListView] or other vertical scrollable. In that scenario, there really is\ninfinite vertical space (the whole point of a vertical scrolling list is to\nallow infinite space vertically). In such scenarios, it is usually worth\nexamining why the inner [Column] should have an [Expanded] or [Flexible]\nchild: what size should the inner children really be? The solution in this\ncase is typically to remove the [Expanded] or [Flexible] widgets from around\nthe inner children.\n\nFor more discussion about constraints, see [BoxConstraints].\n\n### The yellow and black striped banner\n\nWhen the contents of a [Column] exceed the amount of space available, the\n[Column] overflows, and the contents are clipped. In debug mode, a yellow\nand black striped bar is rendered at the overflowing edge to indicate the\nproblem, and a message is printed below the [Column] saying how much\noverflow was detected.\n\nThe usual solution is to use a [ListView] rather than a [Column], to enable\nthe contents to scroll when vertical space is limited.\n\n## Layout algorithm\n\n_This section describes how a [Column] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Column] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded vertical constraints and the incoming\n horizontal constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight horizontal constraints\n that match the incoming max width.\n2. Divide the remaining vertical space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of vertical space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same horizontal\n constraints as in step 1, but instead of using unbounded vertical\n constraints, use vertical constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The width of the [Column] is the maximum width of the children (which\n will always satisfy the incoming horizontal constraints).\n5. The height of the [Column] is determined by the [mainAxisSize] property.\n If the [mainAxisSize] property is [MainAxisSize.max], then the height of\n the [Column] is the max height of the incoming constraints. If the\n [mainAxisSize] property is [MainAxisSize.min], then the height of the\n [Column] is the sum of heights of the children (subject to the incoming\n constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any vertical\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a horizontal equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may size smaller (leaving some remaining room unused).\n * [SingleChildScrollView], whose documentation discusses some ways to\n use a [Column] inside a scrolling container.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Column" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAlive", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Mark a child as needing to stay alive even when it's in a lazy list that\nwould otherwise remove it.\n\nThis widget is for use in [SliverWithKeepAliveWidget]s, such as\n[SliverGrid] or [SliverList].\n\nThis widget is rarely used directly. The [SliverChildBuilderDelegate] and\n[SliverChildListDelegate] delegates, used with [SliverList] and\n[SliverGrid], as well as the scroll view counterparts [ListView] and\n[GridView], have an `addAutomaticKeepAlives` feature, which is enabled by\ndefault, and which causes [AutomaticKeepAlive] widgets to be inserted around\neach child, causing [KeepAlive] widgets to be automatically added and\nconfigured in response to [KeepAliveNotification]s.\n\nTherefore, to keep a widget alive, it is more common to use those\nnotifications than to directly deal with [KeepAlive] widgets.\n\nIn practice, the simplest way to deal with these notifications is to mix\n[AutomaticKeepAliveClientMixin] into one's [State]. See the documentation\nfor that mixin class for details.", "detail": "", "kind": 7, "label": "KeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageBucket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A storage bucket associated with a page in an app.\n\nUseful for storing per-page state that persists across navigations from one\npage to another.", "detail": "", "kind": 7, "label": "PageStorageBucket" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scroll physics for environments that allow the scroll offset to go beyond\nthe bounds of the content, but then bounce the content back to the edge of\nthose bounds.\n\nThis is the behavior typically seen on iOS.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on iOS.\n * [ClampingScrollPhysics], which is the analogous physics for Android's\n clamping behavior.", "detail": "", "kind": 7, "label": "BouncingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedIconData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Vector graphics data for icons used by [AnimatedIcon].\n\nInstances of this class are currently opaque because we have not committed to a specific\nanimated vector graphics format.\n\nSee also:\n\n * [AnimatedIcons], a class that contains constants that implement this interface.", "detail": "", "kind": 7, "label": "AnimatedIconData" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Semantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that annotates the widget tree with a description of the meaning of\nthe widgets.\n\nUsed by accessibility tools, search engines, and other semantic analysis\nsoftware to determine the meaning of the application.\n\nSee also:\n\n * [MergeSemantics], which marks a subtree as being a single node for\n accessibility purposes.\n * [ExcludeSemantics], which excludes a subtree from the semantics tree\n (which might be useful if it is, e.g., totally decorative and not\n important to the user).\n * [RenderObject.semanticsAnnotator], the rendering library API through which\n the [Semantics] widget is actually implemented.\n * [SemanticsNode], the object used by the rendering library to represent\n semantics in the semantics tree.\n * [SemanticsDebugger], an overlay to help visualize the semantics tree. Can\n be enabled using [WidgetsApp.showSemanticsDebugger] or\n [MaterialApp.showSemanticsDebugger].", "detail": "", "kind": 7, "label": "Semantics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Draggable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that can be dragged from to a [DragTarget].\n\nWhen a draggable widget recognizes the start of a drag gesture, it displays\na [feedback] widget that tracks the user's finger across the screen. If the\nuser lifts their finger while on top of a [DragTarget], that target is given\nthe opportunity to accept the [data] carried by the draggable.\n\nOn multitouch devices, multiple drags can occur simultaneously because there\ncan be multiple pointers in contact with the device at once. To limit the\nnumber of simultaneous drags, use the [maxSimultaneousDrags] property. The\ndefault is to allow an unlimited number of simultaneous drags.\n\nThis widget displays [child] when zero drags are under way. If\n[childWhenDragging] is non-null, this widget instead displays\n[childWhenDragging] when one or more drags are underway. Otherwise, this\nwidget always displays [child].\n\nSee also:\n\n * [DragTarget]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "Draggable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The direction in which a [Dismissible] can be dismissed.", "detail": "", "kind": 13, "label": "DismissDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Positioned", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned.\n\nA [Positioned] widget must be a descendant of a [Stack], and the path from\nthe [Positioned] widget to its enclosing [Stack] must contain only\n[StatelessWidget]s or [StatefulWidget]s (not other kinds of widgets, like\n[RenderObjectWidget]s).\n\n\nIf a widget is wrapped in a [Positioned], then it is a _positioned_ widget\nin its [Stack]. If the [top] property is non-null, the top edge of this child\nwill be positioned [top] layout units from the top of the stack widget. The\n[right], [bottom], and [left] properties work analogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [right] and [left] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nIf all three values on a particular axis are null, then the\n[Stack.alignment] property is used to position the child.\n\nIf all six values are null, the child is a non-positioned child. The [Stack]\nuses only the non-positioned children to size itself.\n\nSee also:\n\n * [PositionedDirectional], which adapts to the ambient [Directionality].", "detail": "", "kind": 7, "label": "Positioned" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A key that is only equal to itself.", "detail": "", "kind": 7, "label": "UniqueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingActionButtonLocation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An object that defines a position for the [FloatingActionButton]\nbased on the [Scaffold]'s [ScaffoldPrelayoutGeometry].\n\nFlutter provides [FloatingActionButtonLocation]s for the common\n[FloatingActionButton] placements in Material Design applications. These\nlocations are available as static members of this class.\n\nSee also:\n\n * [FloatingActionButton], which is a circular button typically shown in the\n bottom right corner of the app.\n * [FloatingActionButtonAnimator], which is used to animate the\n [Scaffold.floatingActionButton] from one [FloatingActionButtonLocation] to\n another.\n * [ScaffoldPrelayoutGeometry], the geometry that\n [FloatingActionButtonLocation]s use to position the [FloatingActionButton].", "detail": "", "kind": 7, "label": "FloatingActionButtonLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionallySizedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes its child to a fraction of the total available space.\nFor more details about the layout algorithm, see\n[RenderFractionallySizedOverflowBox].\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionallySizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaginatedDataTableState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Holds the state of a [PaginatedDataTable].\n\nThe table can be programmatically paged using the [pageTo] method.", "detail": "", "kind": 7, "label": "PaginatedDataTableState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScopeNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interior node in the focus tree.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nThe interior nodes in the focus tree cannot themselves be focused but\ninstead remember previous focus states. A scope is currently active in its\nparent whenever [isFirstFocus] is true. If that scope is detached from its\nparent, its previous sibling becomes the parent's first focus.\n\nA [FocusNode] has the overall focus when the node is focused in its\nparent [FocusScopeNode] and [FocusScopeNode.isFirstFocus] is true for\nthat scope and all its ancestor scopes.\n\nIf a [FocusScopeNode] is removed, then the next sibling node will be set as\nthe focused node by the [FocusManager].\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].\n * [FocusScope], which is a widget that associates a [FocusScopeNode] with\n its location in the tree.", "detail": "", "kind": 7, "label": "FocusScopeNode" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icons", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Identifiers for the supported material design icons.\n\nUse with the [Icon] class to show specific icons.\n\nIcons are identified by their name as listed below.\n\nTo use this class, make sure you set `uses-material-design: true` in your\nproject's `pubspec.yaml` file in the `flutter` section. This ensures that\nthe MaterialIcons font is included in your application. This font is used to\ndisplay the icons. For example:\n\n```yaml\nname: my_awesome_application\nflutter:\n uses-material-design: true\n```\n\nSee also:\n\n * [Icon]\n * [IconButton]\n * <https://design.google.com/icons/>", "detail": "", "kind": 7, "label": "Icons" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAlive", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Allows subtrees to request to be kept alive in lazy lists.\n\nThis widget is like [KeepAlive] but instead of being explicitly configured,\nit listens to [KeepAliveNotification] messages from the [child] and other\ndescendants.\n\nThe subtree is kept alive whenever there is one or more descendant that has\nsent a [KeepAliveNotification] and not yet triggered its\n[KeepAliveNotification.handle].\n\nTo send these notifications, consider using [AutomaticKeepAliveClientMixin].", "detail": "", "kind": 7, "label": "AutomaticKeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectableChipAttributes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be selected.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "SelectableChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReorderableListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A list whose items the user can interactively reorder by dragging.\n\nThis class is appropriate for views with a small number of\nchildren because constructing the [List] requires doing work for every\nchild that could possibly be displayed in the list view instead of just\nthose children that are actually visible.\n\nAll [children] must have a key.", "detail": "", "kind": 7, "label": "ReorderableListView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapAbsorber", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[RenderSliverOverlapInjector].", "detail": "", "kind": 7, "label": "RenderSliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DataTableSource", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A data source for obtaining row data for [PaginatedDataTable] objects.\n\nA data table source provides two main pieces of information:\n\n* The number of rows in the data table ([rowCount]).\n* The data for each row (indexed from `0` to `rowCount - 1`).\n\nIt also provides a listener API ([addListener]/[removeListener]) so that\nconsumers of the data can be notified when it changes. When the data\nchanges, call [notifyListeners] to send the notifications.\n\nDataTableSource objects are expected to be long-lived, not recreated with\neach build.", "detail": "", "kind": 7, "label": "DataTableSource" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometryTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [EdgeInsetsGeometry]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsetsGeometry>] to\nuse [EdgeInsetsGeometry.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsTween], which interpolates between two [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryInitializer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.initializer].", "detail": "(T instance) → void", "kind": 7, "label": "GestureRecognizerFactoryInitializer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sliver whose size varies when the sliver is scrolled to the leading edge\nof the viewport.\n\nThis is the layout primitive that [SliverAppBar] uses for its\nshrinking/growing effect.", "detail": "", "kind": 7, "label": "SliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Chip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A material design chip.\n\nChips are compact elements that represent an attribute, text, entity, or\naction.\n\nSupplying a non-null [onDeleted] callback will cause the chip to include a\nbutton for deleting the chip.\n\nIts ancestors must include [Material], [MediaQuery], [Directionality], and\n[MaterialLocalizations]. Typically all of these widgets are provided by\n[MaterialApp] and [Scaffold]. The [label] and [clipBehavior] arguments must\nnot be null.\n\n\n```dart\nChip(\n avatar: CircleAvatar(\n backgroundColor: Colors.grey.shade800,\n child: Text('AB'),\n ),\n label: Text('Aaron Burr'),\n)\n```\n\nSee also:\n\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * [ChoiceChip], allows a single selection from a set of options. Choice\n chips contain related descriptive text or categories.\n * [FilterChip], uses tags or descriptive words as a way to filter content.\n * [ActionChip], represents an action related to primary content.\n * [CircleAvatar], which shows images or initials of entities.\n * [Wrap], A widget that displays its children in multiple horizontal or\n vertical runs.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "Chip" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DropdownMenuItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An item in a menu created by a [DropdownButton].\n\nThe type `T` is the type of the value the entry represents. All the entries\nin a given menu must represent values with consistent types.", "detail": "", "kind": 7, "label": "DropdownMenuItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [RootRenderObjectElement] that is hosted by a [RenderObject].\n\nThis element class is the instantiation of a [RenderObjectToWidgetAdapter]\nwidget. It can be used only as the root of an [Element] tree (it cannot be\nmounted into another [Element]; it's parent must be null).\n\nIn typical usage, it will be instantiated for a [RenderObjectToWidgetAdapter]\nwhose container is the [RenderView] that connects to the Flutter engine. In\nthis usage, it is normally instantiated by the bootstrapping logic in the\n[WidgetsFlutterBinding] singleton created by [runApp].", "detail": "", "kind": 7, "label": "RenderObjectToWidgetElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Wrap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that displays its children in multiple horizontal or vertical runs.\n\nA [Wrap] lays out each child and attempts to place the child adjacent to the\nprevious child in the main axis, given by [direction], leaving [spacing]\nspace in between. If there is not enough space to fit the child, [Wrap]\ncreates a new _run_ adjacent to the existing children in the cross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].\n\n\n\nThis example renders some [Chip]s representing four contacts in a [Wrap] so\nthat they flow across lines as necessary.\n\n```dart\nWrap(\n spacing: 8.0, // gap between adjacent chips\n runSpacing: 4.0, // gap between lines\n children: <Widget>[\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('AH')),\n label: Text('Hamilton'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('ML')),\n label: Text('Lafayette'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('HM')),\n label: Text('Mulligan'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('JL')),\n label: Text('Laurens'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [Row], which places children in one line, and gives control over their\n alignment and spacing.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Wrap" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An inherited widget for a [Listenable] [notifier], which updates its\ndependencies when the [notifier] is triggered.\n\nThis is a variant of [InheritedWidget], specialized for subclasses of\n[Listenable], such as [ChangeNotifier] or [ValueNotifier].\n\nDependents are notified whenever the [notifier] sends notifications, or\nwhenever the identity of the [notifier] changes.\n\nMultiple notifications are coalesced, so that dependents only rebuild once\neven if the [notifier] fires multiple times between two frames.\n\nTypically this class is subclassed with a class that provides an `of` static\nmethod that calls [BuildContext.inheritFromWidgetOfExactType] with that\nclass.\n\nThe [updateShouldNotify] method may also be overridden, to change the logic\nin the cases where [notifier] itself is changed. The [updateShouldNotify]\nmethod is called with the old [notifier] in the case of the [notifier] being\nchanged. When it returns true, the dependents are marked as needing to be\nrebuilt this frame.\n\nSee also:\n\n * [Animation], an implementation of [Listenable] that ticks each frame to\n update a value.\n * [ViewportOffset] or its subclass [ScrollPosition], implementations of\n [Listenable] that trigger when a view is scrolled.\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedPopupMenuItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An item with a checkmark in a material design popup menu.\n\nTo show a popup menu, use the [showMenu] function. To create a button that\nshows a popup menu, consider using [PopupMenuButton].\n\nA [CheckedPopupMenuItem] is 48 pixels high, which matches the default height\nof a [PopupMenuItem]. The horizontal layout uses a [ListTile]; the checkmark\nis an [Icons.done] icon, shown in the [ListTile.leading] position.\n\n\nSuppose a `Commands` enum exists that lists the possible commands from a\nparticular popup menu, including `Commands.heroAndScholar` and\n`Commands.hurricaneCame`, and further suppose that there is a\n`_heroAndScholar` member field which is a boolean. The example below shows a\nmenu with one menu item with a checkmark that can toggle the boolean, and\none menu item without a checkmark for selecting the second option. (It also\nshows a divider placed between the two menu items.)\n\n```dart\nPopupMenuButton<Commands>(\n onSelected: (Commands result) {\n switch (result) {\n case Commands.heroAndScholar:\n setState(() { _heroAndScholar = !_heroAndScholar; });\n break;\n case Commands.hurricaneCame:\n // ...handle hurricane option\n break;\n // ...other items handled here\n }\n },\n itemBuilder: (BuildContext context) => <PopupMenuEntry<Commands>>[\n CheckedPopupMenuItem<Commands>(\n checked: _heroAndScholar,\n value: Commands.heroAndScholar,\n child: const Text('Hero and scholar'),\n ),\n const PopupMenuDivider(),\n const PopupMenuItem<Commands>(\n value: Commands.hurricaneCame,\n child: ListTile(leading: Icon(null), title: Text('Bring hurricane')),\n ),\n // ...other items listed here\n ],\n)\n```\n\nIn particular, observe how the second menu item uses a [ListTile] with a\nblank [Icon] in the [ListTile.leading] position to get the same alignment as\nthe item with the checkmark.\n\nSee also:\n\n * [PopupMenuItem], a popup menu entry for picking a command (as opposed to\n toggling a value).\n * [PopupMenuDivider], a popup menu entry that is just a horizontal line.\n * [showMenu], a method to dynamically show a popup menu at a given location.\n * [PopupMenuButton], an [IconButton] that automatically shows a menu when\n it is tapped.", "detail": "", "kind": 7, "label": "CheckedPopupMenuItem" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedScrollMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable snapshot of values associated with a [Scrollable] viewport.\n\nFor details, see [ScrollMetrics], which defines this object's interfaces.", "detail": "", "kind": 7, "label": "FixedScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Padding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.\n\n\nThis snippet indents the child (a [Card] with some [Text]) by eight pixels\nin each direction:\n\n```dart\nPadding(\n padding: EdgeInsets.all(8.0),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\n## Design discussion\n\n### Why use a [Padding] widget rather than a [Container] with a [Container.padding] property?\n\nThere isn't really any difference between the two. If you supply a\n[Container.padding] argument, [Container] simply builds a [Padding] widget\nfor you.\n\n[Container] doesn't implement its properties directly. Instead, [Container]\ncombines a number of simpler widgets together into a convenient package. For\nexample, the [Container.padding] property causes the container to build a\n[Padding] widget and the [Container.decoration] property causes the\ncontainer to build a [DecoratedBox] widget. If you find [Container]\nconvenient, feel free to use it. If not, feel free to build these simpler\nwidgets in whatever combination meets your needs.\n\nIn fact, the majority of widgets in Flutter are simply combinations of other\nsimpler widgets. Composition, rather than inheritance, is the primary\nmechanism for building up widgets.\n\nSee also:\n\n * [EdgeInsets], the class that is used to describe the padding dimensions.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Padding" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by [StatefulBuilder].\n\nCall [setState] to schedule the [StatefulBuilder] to rebuild.", "detail": "(BuildContext context, StateSetter setState) → Widget", "kind": 7, "label": "StatefulWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawMaterialButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Creates a button based on [Semantics], [Material], and [InkWell]\nwidgets.\n\nThis class does not use the current [Theme] or [ButtonTheme] to\ncompute default values for unspecified parameters. It's intended to\nbe used for custom Material buttons that optionally incorporate defaults\nfrom the themes or from app-specific sources.\n\n[RaisedButton] and [FlatButton] configure a [RawMaterialButton] based\non the current [Theme] and [ButtonTheme].", "detail": "", "kind": 7, "label": "RawMaterialButton" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildBuilderDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A delegate that supplies children for slivers using a builder callback.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot even have to be built until they are displayed.\n\nThe widgets returned from the builder callback are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\n\nThis sample code shows how to use `semanticIndexOffset` to handle multiple\ndelegates in a single scroll view.\n\n```dart\nCustomScrollView(\n semanticChildCount: 4,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n ),\n ),\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n semanticIndexOffset: 2,\n ),\n ),\n ],\n)\n```\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\n\nThis sample code shows how to use `semanticIndexCallback` to handle\nannotating a subset of child nodes with a semantic index. There is\na [Spacer] widget at odd indexes which should not have a semantic\nindex.\n\n```dart\nCustomScrollView(\n semanticChildCount: 5,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n if (index.isEven) {\n return Text('...');\n }\n return Spacer();\n },\n semanticIndexCallback: (Widget widget, int localIndex) {\n if (localIndex.isEven) {\n return localIndex ~/ 2;\n }\n return null;\n },\n childCount: 10,\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.\n * [IndexedSemantics], for an example of manually annotating child nodes\n with semantic indexes.", "detail": "", "kind": 7, "label": "SliverChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box in which children on a wheel can be scrolled.\n\nThis widget is similar to a [ListView] but with the restriction that all\nchildren must be the same size along the scrolling axis.\n\nWhen the list is at the zero scroll offset, the first child is aligned with\nthe middle of the viewport. When the list is at the final scroll offset,\nthe last child is aligned with the middle of the viewport\n\nThe children are rendered as if rotating on a wheel instead of scrolling on\na plane.", "detail": "", "kind": 7, "label": "ListWheelScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SnackBarAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A button for a [SnackBar], known as an \"action\".\n\nSnack bar actions are always enabled. If you want to disable a snack bar\naction, simply don't include it in the snack bar.\n\nSnack bar actions can only be pressed once. Subsequent presses are ignored.\n\nSee also:\n\n * [SnackBar]\n * <https://material.io/design/components/snackbars.html>", "detail": "", "kind": 7, "label": "SnackBarAction" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedContainer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A container that gradually changes its values over a period of time.\n\nThe [AnimatedContainer] will automatically animate between the old and\nnew values of properties when they change using the provided curve and\nduration. Properties that are null are not animated. Its child and\ndescendants are not animated.\n\nThis class is useful for generating simple implicit transitions between\ndifferent parameters to [Container] with its internal [AnimationController].\nFor more complex animations, you'll likely want to use a subclass of\n[AnimatedWidget] such as the [DecoratedBoxTransition] or use your own\n[AnimationController].\n\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPadding], which is a subset of this widget that only\n supports animating the [padding].\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.\n * [AnimatedSwitcher], which switches out a child for a new one with a customizable transition.\n * [AnimatedCrossFade], which fades between two children and interpolates their sizes.", "detail": "", "kind": 7, "label": "AnimatedContainer" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A utility class for defining one-off page routes in terms of callbacks.\n\nCallers must define the [pageBuilder] function which creates the route's\nprimary contents. To add transitions define the [transitionsBuilder] function.", "detail": "", "kind": 7, "label": "PageRouteBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A notification that a [Scrollable] widget has not changed its scroll position\nbecause the change would have caused its scroll position to go outside of\nits scroll bounds.\n\nSee also:\n\n * [ScrollUpdateNotification], which indicates that a [Scrollable] widget\n has changed its scroll position.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "OverscrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectableDayPredicate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for predicating dates for enabled date selections.\n\nSee [showDatePicker].", "detail": "(DateTime day) → bool", "kind": 7, "label": "SelectableDayPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteSettings", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Data that might be useful in constructing a [Route].", "detail": "", "kind": 7, "label": "RouteSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A box with a specified size.\n\nIf given a child, this widget forces its child to have a specific width\nand/or height (assuming values are permitted by this widget's parent). If\neither the width or height is null, this widget will size itself to match\nthe child's size in that dimension.\n\nIf not given a child, this widget will size itself to the given width and\nheight, treating nulls as zero.\n\nThe [new SizedBox.expand] constructor can be used to make a [SizedBox] that\nsizes itself to fit the parent. It is equivalent to setting [width] and\n[height] to [double.infinity].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) have the\nexact size 200x300, parental constraints permitting:\n\n```dart\nSizedBox(\n width: 200.0,\n height: 300.0,\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nSee also:\n\n * [ConstrainedBox], a more generic version of this class that takes\n arbitrary [BoxConstraints] instead of an explicit width and height.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [FractionallySizedBox], a widget that sizes its child to a fraction of\n the total available space.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherTransitionBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for builders used to generate custom transitions for\n[AnimatedSwitcher].\n\nThe `child` should be transitioning in when the `animation` is running in\nthe forward direction.\n\nThe function should return a widget which wraps the given `child`. It may\nalso use the `animation` to inform its transition. It must not return null.", "detail": "(Widget child, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedSwitcherTransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].\n\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Ink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience widget for drawing images and other decorations on [Material]\nwidgets, so that [InkWell] and [InkResponse] splashes will render over them.\n\nInk splashes and highlights, as rendered by [InkWell] and [InkResponse],\ndraw on the actual underlying [Material], under whatever widgets are drawn\nover the material (such as [Text] and [Icon]s). If an opaque image is drawn\nover the [Material] (maybe using a [Container] or [DecoratedBox]), these ink\neffects will not be visible, as they will be entirely obscured by the opaque\ngraphics drawn above the [Material].\n\nThis widget draws the given [Decoration] directly on the [Material], in the\nsame way that [InkWell] and [InkResponse] draw there. This allows the\nsplashes to be drawn above the otherwise opaque graphics.\n\nAn alternative solution is to use a [MaterialType.transparency] material\nabove the opaque graphics, so that the ink responses from [InkWell]s and\n[InkResponse]s will be drawn on the transparent material on top of the\nopaque graphics, rather than under the opaque graphics on the underlying\n[Material].\n\n## Limitations\n\nThis widget is subject to the same limitations as other ink effects, as\ndescribed in the documentation for [Material]. Most notably, the position of\nan [Ink] widget must not change during the lifetime of the [Material] object\nunless a [LayoutChangedNotification] is dispatched each frame that the\nposition changes. This is done automatically for [ListView] and other\nscrolling widgets, but is not done for animated transitions such as\n[SlideTransition].\n\nAdditionally, if multiple [Ink] widgets paint on the same [Material] in the\nsame location, their relative order is not guaranteed. The decorations will\nbe painted in the order that they were added to the material, which\ngenerally speaking will match the order they are given in the widget tree,\nbut this order may appear to be somewhat random in more dynamic situations.\n\n\nThis example shows how a [Material] widget can have a yellow rectangle drawn\non it using [Ink], while still having ink effects over the yellow rectangle:\n\n```dart\nMaterial(\n color: Colors.teal[900],\n child: Center(\n child: Ink(\n color: Colors.yellow,\n width: 200.0,\n height: 100.0,\n child: InkWell(\n onTap: () { /* ... */ },\n child: Center(\n child: Text('YELLOW'),\n )\n ),\n ),\n ),\n)\n```\n\nThe following example shows how an image can be printed on a [Material]\nwidget with an [InkWell] above it:\n\n```dart\nMaterial(\n color: Colors.grey[800],\n child: Center(\n child: Ink.image(\n image: AssetImage('cat.jpeg'),\n fit: BoxFit.cover,\n width: 300.0,\n height: 200.0,\n child: InkWell(\n onTap: () { /* ... */ },\n child: Align(\n alignment: Alignment.topLeft,\n child: Padding(\n padding: const EdgeInsets.all(10.0),\n child: Text('KITTEN', style: TextStyle(fontWeight: FontWeight.w900, color: Colors.white)),\n ),\n )\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [Container], a more generic form of this widget which paints itself,\n rather that deferring to the nearest [Material] widget.\n * [InkDecoration], the [InkFeature] subclass used by this widget to paint\n on [Material] widgets.\n * [InkWell] and [InkResponse], which also draw on [Material] widgets.", "detail": "", "kind": 7, "label": "Ink" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositioned", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Animated version of [Positioned] which automatically transitions the child's\nposition over a given duration whenever the given position changes.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositioned] will trigger a relayout\nas well.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositionedDirectional], which adapts to the ambient\n [Directionality] (the same as this widget, but for animating\n [PositionedDirectional]).", "detail": "", "kind": 7, "label": "AnimatedPositioned" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Container", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A convenience widget that combines common painting, positioning, and sizing\nwidgets.\n\nA container first surrounds the child with [padding] (inflated by any\nborders present in the [decoration]) and then applies additional\n[constraints] to the padded extent (incorporating the `width` and `height`\nas constraints, if either is non-null). The container is then surrounded by\nadditional empty space described from the [margin].\n\nDuring painting, the container first applies the given [transform], then\npaints the [decoration] to fill the padded extent, then it paints the child,\nand finally paints the [foregroundDecoration], also filling the padded\nextent.\n\nContainers with no children try to be as big as possible unless the incoming\nconstraints are unbounded, in which case they try to be as small as\npossible. Containers with children size themselves to their children. The\n`width`, `height`, and [constraints] arguments to the constructor override\nthis.\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nSince [Container] combines a number of other widgets each with their own\nlayout behavior, [Container]'s layout behavior is somewhat complicated.\n\nSummary: [Container] tries, in order: to honor [alignment], to size itself\nto the [child], to honor the `width`, `height`, and [constraints], to expand\nto fit the parent, to be as small as possible.\n\nMore specifically:\n\nIf the widget has no child, no `height`, no `width`, no [constraints],\nand the parent provides unbounded constraints, then [Container] tries to\nsize as small as possible.\n\nIf the widget has no child and no [alignment], but a `height`, `width`, or\n[constraints] are provided, then the [Container] tries to be as small as\npossible given the combination of those constraints and the parent's\nconstraints.\n\nIf the widget has no child, no `height`, no `width`, no [constraints], and\nno [alignment], but the parent provides bounded constraints, then\n[Container] expands to fit the constraints provided by the parent.\n\nIf the widget has an [alignment], and the parent provides unbounded\nconstraints, then the [Container] tries to size itself around the child.\n\nIf the widget has an [alignment], and the parent provides bounded\nconstraints, then the [Container] tries to expand to fit the parent, and\nthen positions the child within itself as per the [alignment].\n\nOtherwise, the widget has a [child] but no `height`, no `width`, no\n[constraints], and no [alignment], and the [Container] passes the\nconstraints from the parent to the child and sizes itself to match the\nchild.\n\nThe [margin] and [padding] properties also affect the layout, as described\nin the documentation for those properties. (Their effects merely augment the\nrules described above.) The [decoration] can implicitly increase the\n[padding] (e.g. borders in a [BoxDecoration] contribute to the [padding]);\nsee [Decoration.padding].\n\nThis example shows a 48x48 amber square (placed inside a [Center] widget in\ncase the parent widget has its own opinions regarding the size that the\n[Container] should take), with a margin so that it stays away from\nneighboring widgets:\n\n![An amber colored container with the dimensions of 48 square pixels.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_a.png)\n\n```dart\nCenter(\n child: Container(\n margin: const EdgeInsets.all(10.0),\n color: Colors.amber[600],\n width: 48.0,\n height: 48.0,\n ),\n)\n```\n\n\nThis example shows how to use many of the features of [Container] at once.\nThe [constraints] are set to fit the font size plus ample headroom\nvertically, while expanding horizontally to fit the parent. The [padding] is\nused to make sure there is space between the contents and the text. The\n[color] makes the box blue. The [alignment] causes the [child] to be\ncentered in the box. Finally, the [transform] applies a slight rotation to the\nentire contraption to complete the effect.\n\n![A blue rectangular container with 'Hello World' in the center, rotated\nslightly in the z axis.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_b.png)\n\n```dart\nContainer(\n constraints: BoxConstraints.expand(\n height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,\n ),\n padding: const EdgeInsets.all(8.0),\n color: Colors.blue[600],\n alignment: Alignment.center,\n child: Text('Hello World',\n style: Theme.of(context)\n .textTheme\n .display1\n .copyWith(color: Colors.white)),\n transform: Matrix4.rotationZ(0.1),\n)\n```\n\nSee also:\n\n * [AnimatedContainer], a variant that smoothly animates the properties when\n they change.\n * [Border], which has a sample which uses [Container] heavily.\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Container" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnderlineInputBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Draws a horizontal line at the bottom of an [InputDecorator]'s container and\ndefines the container's shape.\n\nThe input decorator's \"container\" is the optionally filled area above the\ndecorator's helper, error, and counter.\n\nSee also:\n\n * [OutlineInputBorder], an [InputDecorator] border which draws a\n rounded rectangle around the input decorator's container.\n * [InputDecoration], which is used to configure an [InputDecorator].", "detail": "", "kind": 7, "label": "UnderlineInputBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkWell", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A rectangular area of a [Material] that responds to touch.\n\nFor a variant of this widget that does not clip splashes, see [InkResponse].\n\nThe following diagram shows how an [InkWell] looks when tapped, when using\ndefault values.\n\n![The highlight is a rectangle the size of the box.](https://flutter.github.io/assets-for-api-docs/assets/material/ink_well.png)\n\nThe [InkWell] widget must have a [Material] widget as an ancestor. The\n[Material] widget is where the ink reactions are actually painted. This\nmatches the material design premise wherein the [Material] is what is\nactually reacting to touches by spreading ink.\n\nIf a Widget uses this class directly, it should include the following line\nat the top of its build function to call [debugCheckHasMaterial]:\n\n```dart\nassert(debugCheckHasMaterial(context));\n```\n\n## Troubleshooting\n\n### The ink splashes aren't visible!\n\nIf there is an opaque graphic, e.g. painted using a [Container], [Image], or\n[DecoratedBox], between the [Material] widget and the [InkWell] widget, then\nthe splash won't be visible because it will be under the opaque graphic.\nThis is because ink splashes draw on the underlying [Material] itself, as\nif the ink was spreading inside the material.\n\nThe [Ink] widget can be used as a replacement for [Image], [Container], or\n[DecoratedBox] to ensure that the image or decoration also paints in the\n[Material] itself, below the ink.\n\nIf this is not possible for some reason, e.g. because you are using an\nopaque [CustomPaint] widget, alternatively consider using a second\n[Material] above the opaque widget but below the [InkWell] (as an\nancestor to the ink well). The [MaterialType.transparency] material\nkind can be used for this purpose.\n\nSee also:\n\n * [GestureDetector], for listening for gestures without ink splashes.\n * [RaisedButton] and [FlatButton], two kinds of buttons in material design.\n * [InkResponse], a variant of [InkWell] that doesn't force a rectangular\n shape on the ink reaction.", "detail": "", "kind": 7, "label": "InkWell" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [Border]s.\n\nThis class specializes the interpolation of [Tween<Border>] to use\n[Border.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that scrolls.\n\n[Scrollable] implements the interaction model for a scrollable widget,\nincluding gesture recognition, but does not have an opinion about how the\nviewport, which actually displays the children, is constructed.\n\nIt's rare to construct a [Scrollable] directly. Instead, consider [ListView]\nor [GridView], which combine scrolling, viewporting, and a layout model. To\ncombine layout models (or to use a custom layout mode), consider using\n[CustomScrollView].\n\nThe static [Scrollable.of] and [Scrollable.ensureVisible] functions are\noften used to interact with the [Scrollable] widget inside a [ListView] or\na [GridView].\n\nTo further customize scrolling behavior with a [Scrollable]:\n\n1. You can provide a [viewportBuilder] to customize the child model. For\n example, [SingleChildScrollView] uses a viewport that displays a single\n box child whereas [CustomScrollView] uses a [Viewport] or a\n [ShrinkWrappingViewport], both of which display a list of slivers.\n\n2. You can provide a custom [ScrollController] that creates a custom\n [ScrollPosition] subclass. For example, [PageView] uses a\n [PageController], which creates a page-oriented scroll position subclass\n that keeps the same page visible when the [Scrollable] resizes.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "Scrollable" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MonthPicker", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A scrollable list of months to allow picking a month.\n\nShows the days of each month in a rectangular grid with one column for each\nday of the week.\n\nThe month picker widget is rarely used directly. Instead, consider using\n[showDatePicker], which creates a date picker dialog.\n\nSee also:\n\n * [showDatePicker], which shows a dialog that contains a material design\n date picker.\n * [showTimePicker], which shows a dialog that contains a material design\n time picker.", "detail": "", "kind": 7, "label": "MonthPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageTransitionsTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the page transition animations used by [MaterialPageRoute]\nfor different [TargetPlatform]s.\n\nThe [MaterialPageRoute.buildTransitions] method looks up the current\ncurrent [PageTransitionsTheme] with `Theme.of(context).pageTransitionsTheme`\nand delegates to [buildTransitions].\n\nIf a builder with a matching platform is not found, then the\n[FadeUpwardsPageTransitionsBuilder] is used.\n\nSee also:\n\n * [ThemeData.pageTransitionsTheme], which defines the default page\n transitions for the overall theme.\n * [FadeUpwardsPageTransitionsBuilder], which defines a default page transition.\n * [OpenUpwardsPageTransitionsBuilder], which defines a page transition\n that's similar to the one provided by Android P.\n * [CupertinoPageTransitionsBuilder], which defines a horizontal page\n transition that matches native iOS page transitions.", "detail": "", "kind": 7, "label": "PageTransitionsTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two [EdgeInsets]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsets>] to use\n[EdgeInsets.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsGeometryTween], which interpolates between two\n [EdgeInsetsGeometry] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryWithHandlers", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Factory for creating gesture recognizers that delegates to callbacks.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactoryWithHandlers" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstrainedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that imposes additional constraints on its child.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[constraints].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) fill the\nparent, by applying [BoxConstraints.expand] constraints:\n\n```dart\nConstrainedBox(\n constraints: const BoxConstraints.expand(),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nThe same behavior can be obtained using the [new SizedBox.expand] widget.\n\nSee also:\n\n * [BoxConstraints], the class that describes constraints.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "ConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ButtonTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Used with [ButtonThemeData] to configure the color and geometry of buttons.\n\nA button theme can be specified as part of the overall Material theme\nusing [ThemeData.buttonTheme]. The Material theme's button theme data\ncan be overridden with [ButtonTheme].\n\nThe actual appearance of buttons depends on the button theme, the\nbutton's enabled state, its elevation (if any), and the overall [Theme].\n\nSee also:\n\n * [FlatButton] [RaisedButton], and [OutlineButton], which are styled\n based on the ambient button theme.\n * [RawMaterialButton], which can be used to configure a button that doesn't\n depend on any inherited themes.", "detail": "", "kind": 7, "label": "ButtonTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListRemovedItemBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedListState.removeItem].", "detail": "(BuildContext context, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListRemovedItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupMenuItemState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The [State] for [PopupMenuItem] subclasses.\n\nBy default this implements the basic styling and layout of Material Design\npopup menu items.\n\nThe [buildChild] method can be overridden to adjust exactly what gets placed\nin the menu. By default it returns [PopupMenuItem.child].\n\nThe [handleTap] method can be overridden to adjust exactly what happens when\nthe item is tapped. By default, it uses [Navigator.pop] to return the\n[PopupMenuItem.value] from the menu route.\n\nThis class takes two type arguments. The second, `W`, is the exact type of\nthe [Widget] that is using this [State]. It must be a subclass of\n[PopupMenuItem]. The first, `T`, must match the type argument of that widget\nclass, and is the type of values returned from this menu.", "detail": "", "kind": 7, "label": "PopupMenuItemState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBody", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that arranges its children sequentially along a given axis, forcing\nthem to the dimension of the parent in the other axis.\n\nThis widget is rarely used directly. Instead, consider using [ListView],\nwhich combines a similar layout algorithm with scrolling behavior, or\n[Column], which gives you more flexible control over the layout of a\nvertical set of boxes.\n\nSee also:\n\n * [RenderListBody], which implements this layout algorithm and the\n documentation for which describes some of its subtleties.\n * [SingleChildScrollView], which is sometimes used with [ListBody] to\n make the contents scrollable.\n * [Column] and [Row], which implement a more elaborate version of\n this layout algorithm (at the cost of being slightly less efficient).\n * [ListView], which implements an efficient scrolling version of this\n layout algorithm.", "detail": "", "kind": 7, "label": "ListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomMultiChildLayout", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that uses a delegate to size and position multiple children.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.\n\n[CustomMultiChildLayout] is appropriate when there are complex relationships\nbetween the size and positioning of a multiple widgets. To control the\nlayout of a single child, [CustomSingleChildLayout] is more appropriate. For\nsimple cases, such as aligning a widget to one or another edge, the [Stack]\nwidget is more appropriate.\n\nEach child must be wrapped in a [LayoutId] widget to identify the widget for\nthe delegate.\n\nSee also:\n\n * [MultiChildLayoutDelegate], for details about how to control the layout of\n the children.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Stack], which arranges children relative to the edges of the container.\n * [Flow], which provides paint-time control of its children using transform\n matrices.", "detail": "", "kind": 7, "label": "CustomMultiChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SwitchListTile", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [ListTile] with a [Switch]. In other words, a switch with a label.\n\nThe entire list tile is interactive: tapping anywhere in the tile toggles\nthe switch.\n\nThe [value], [onChanged], [activeColor], [activeThumbImage], and\n[inactiveThumbImage] properties of this widget are identical to the\nsimilarly-named properties on the [Switch] widget.\n\nThe [title], [subtitle], [isThreeLine], and [dense] properties are like\nthose of the same name on [ListTile].\n\nThe [selected] property on this widget is similar to the [ListTile.selected]\nproperty, but the color used is that described by [activeColor], if any,\ndefaulting to the accent color of the current [Theme]. No effort is made to\ncoordinate the [selected] state and the [value] state; to have the list tile\nappear selected when the switch is on, pass the same value to both.\n\nThe switch is shown on the right by default in left-to-right languages (i.e.\nin the [ListTile.trailing] slot). The [secondary] widget is placed in the\n[ListTile.leading] slot. This cannot be changed; there is not sufficient\nspace in a [ListTile]'s [ListTile.leading] slot for a [Switch].\n\nTo show the [SwitchListTile] as disabled, pass null as the [onChanged]\ncallback.\n\n\nThis widget shows a switch that, when toggled, changes the state of a [bool]\nmember field called `_lights`.\n\n```dart\nSwitchListTile(\n title: const Text('Lights'),\n value: _lights,\n onChanged: (bool value) { setState(() { _lights = value; }); },\n secondary: const Icon(Icons.lightbulb_outline),\n)\n```\n\nSee also:\n\n * [ListTileTheme], which can be used to affect the style of list tiles,\n including switch list tiles.\n * [CheckboxListTile], a similar widget for checkboxes.\n * [RadioListTile], a similar widget for radio buttons.\n * [ListTile] and [Switch], the widgets from which this widget is made.", "detail": "", "kind": 7, "label": "SwitchListTile" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An entry in the history of a [LocalHistoryRoute].", "detail": "", "kind": 7, "label": "LocalHistoryEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundSliderThumbShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "This is the default shape of a [Slider]'s thumb.\n\nSee also:\n\n * [Slider], which includes a thumb defined by this shape.\n * [SliderTheme], which can be used to configure the thumb shape of all\n sliders in a widget subtree.", "detail": "", "kind": 7, "label": "RoundSliderThumbShape" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InkHighlight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A visual emphasis on a part of a [Material] receiving user interaction.\n\nThis object is rarely created directly. Instead of creating an ink highlight\ndirectly, consider using an [InkResponse] or [InkWell] widget, which uses\ngestures (such as tap and long-press) to trigger ink highlights.\n\nSee also:\n\n * [InkResponse], which uses gestures to trigger ink highlights and ink\n splashes in the parent [Material].\n * [InkWell], which is a rectangular [InkResponse] (the most common type of\n ink response).\n * [Material], which is the widget on which the ink highlight is painted.\n * [InkSplash], which is an ink feature that shows a reaction to user input\n on a [Material].", "detail": "", "kind": 7, "label": "InkHighlight" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A modal route that replaces the entire screen.", "detail": "", "kind": 7, "label": "PageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current state of an [Overlay].\n\nUsed to insert [OverlayEntry]s into the overlay using the [insert] and\n[insertAll] functions.", "detail": "", "kind": 7, "label": "OverlayState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrawerControllerState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "State for a [DrawerController].\n\nTypically used by a [Scaffold] to [open] and [close] the drawer.", "detail": "", "kind": 7, "label": "DrawerControllerState" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultWidgetsLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "US English localizations for the widgets library.\n\nSee also:\n\n * [GlobalWidgetsLocalizations], which provides widgets localizations for\n many languages.\n * [WidgetsApp.delegates], which automatically includes\n [DefaultWidgetsLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultWidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RepaintBoundary", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A widget that creates a separate display list for its child.\n\nThis widget creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree.\n\nThis is useful since [RenderObject.paint] may be triggered even if its\nassociated [Widget] instances did not change or rebuild. A [RenderObject]\nwill repaint whenever any [RenderObject] that shares the same [Layer] is\nmarked as being dirty and needing paint (see [RenderObject.markNeedsPaint]),\nsuch as when an ancestor scrolls or when an ancestor or descendant animates.\n\nContaining [RenderObject.paint] to parts of the render subtree that are\nactually visually changing using [RepaintBoundary] explicitly or implicitly\nis therefore critical to minimizing redundant work and improving the app's\nperformance.\n\nWhen a [RenderObject] is flagged as needing to paint via\n[RenderObject.markNeedsPaint], the nearest ancestor [RenderObject] with\n[RenderObject.isRepaintBoundary], up to possibly the root of the application,\nis requested to repaint. That nearest ancestor's [RenderObject.paint] method\nwill cause _all_ of its descendant [RenderObject]s to repaint in the same\nlayer.\n\n[RepaintBoundary] is therefore used, both while propagating the\n`markNeedsPaint` flag up the render tree and while traversing down the\nrender tree via [RenderObject.paintChild], to strategically contain repaints\nto the render subtree that visually changed for performance. This is done\nbecause the [RepaintBoundary] widget creates a [RenderObject] that always\nhas a [Layer], decoupling ancestor render objects from the descendant\nrender objects.\n\n[RepaintBoundary] has the further side-effect of possibly hinting to the\nengine that it should further optimize animation performance if the render\nsubtree behind the [RepaintBoundary] is sufficiently complex and is static\nwhile the surrounding tree changes frequently. In those cases, the engine\nmay choose to pay a one time cost of rasterizing and caching the pixel\nvalues of the subtree for faster future GPU re-rendering speed.\n\nSeveral framework widgets insert [RepaintBoundary] widgets to mark natural\nseparation points in applications. For instance, contents in Material Design\ndrawers typically don't change while the drawer opens and closes, so\nrepaints are automatically contained to regions inside or outside the drawer\nwhen using the [Drawer] widget during transitions.\n\nSee also:\n\n * [debugRepaintRainbowEnabled], a debugging flag to help visually monitor\n render tree repaints in a running app.\n * [debugProfilePaintsEnabled], a debugging flag to show render tree\n repaints in the observatory's timeline view.", "detail": "", "kind": 7, "label": "RepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InputCounterWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Signature for the [TextField.buildCounter] callback.", "detail": "(BuildContext context, {@required int currentLength, @required int maxLength, @required bool isFocused}) → Widget", "kind": 7, "label": "InputCounterWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RootRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The element at the root of the tree.\n\nOnly root elements may have their owner set explicitly. All other\nelements inherit their owner from their parent.", "detail": "", "kind": 7, "label": "RootRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single child slot. (This superclass only provides the storage\nfor that child, it doesn't actually provide the updating logic.)", "detail": "", "kind": 7, "label": "SingleChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportNotificationMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Mixin for [Notification]s that track how many [RenderAbstractViewport] they\nhave bubbled through.\n\nThis is used by [ScrollNotification] and [OverscrollIndicatorNotification].", "detail": "", "kind": 7, "label": "ViewportNotificationMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticFormatterCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A callback that formats a numeric value from a [Slider] widget.\n\nSee also:\n\n * [Slider.semanticFormatterCallback], which shows an example use case.", "detail": "(double value) → String", "kind": 7, "label": "SemanticFormatterCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/material.dart", "libraryId": 433, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeletableChipAttributes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for material design chips that can be deleted.\n\nThe defaults mentioned in the documentation for each attribute are what\nthe implementing classes typically use for defaults (but this class doesn't\nprovide or enforce them).\n\nSee also:\n\n * [Chip], a chip that displays information and can be deleted.\n * [InputChip], a chip that represents a complex piece of information, such\n as an entity (person, place, or thing) or conversational text, in a\n compact form.\n * <https://material.io/design/components/chips.html>", "detail": "", "kind": 7, "label": "DeletableChipAttributes" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property describing a [double] [value] with an optional [unit] of measurement.\n\nNumeric formatting is optimized for debug message readability.", "detail": "", "kind": 7, "label": "DoubleProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CachingIterable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A lazy caching version of [Iterable].\n\nThis iterable is efficient in the following ways:\n\n * It will not walk the given iterator more than you ask for.\n\n * If you use it twice (e.g. you check [isNotEmpty], then\n use [single]), it will only walk the given iterator\n once. This caching will even work efficiently if you are\n running two side-by-side iterators on the same iterable.\n\n * [toList] uses its EfficientLength variant to create its\n list quickly.\n\nIt is inefficient in the following ways:\n\n * The first iteration through has caching overhead.\n\n * It requires more memory than a non-caching iterator.\n\n * The [length] and [toList] properties immediately pre-cache the\n entire list. Using these fields therefore loses the laziness of\n the iterable. However, it still gets cached.\n\nThe caching behavior is propagated to the iterators that are\ncreated by [map], [where], [expand], [take], [takeWhile], [skip],\nand [skipWhile], and is used by the built-in methods that use an\niterator like [isNotEmpty] and [single].\n\nBecause a CachingIterable only walks the underlying data once, it\ncannot be used multiple times with the underlying data changing\nbetween each use. You must create a new iterable each time. This\nalso applies to any iterables derived from this one, e.g. as\nreturned by `where`.", "detail": "", "kind": 7, "label": "CachingIterable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Factory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A factory interface that also reports the type of the created objects.", "detail": "", "kind": 7, "label": "Factory" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticableTree", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for providing string and [DiagnosticsNode] debug\nrepresentations describing the properties and children of an object.\n\nThe string debug representation is generated from the intermediate\n[DiagnosticsNode] representation. The [DiagnosticsNode] representation is\nalso used by debugging tools displaying interactive trees of objects and\nproperties.\n\nSee also:\n\n * [DiagnosticableTreeMixin], a mixin that implements this class.\n * [Diagnosticable], which should be used instead of this class to provide\n diagnostics for objects without children.", "detail": "", "kind": 7, "label": "DiagnosticableTree" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectFlagProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A property where the important diagnostic information is primarily whether\nthe [value] is present (non-null) or absent (null), rather than the actual\nvalue of the property itself.\n\nThe [ifPresent] and [ifNull] strings describe the property [value] when it\nis non-null and null respectively. If one of [ifPresent] or [ifNull] is\nomitted, that is taken to mean that [level] should be\n[DiagnosticLevel.hidden] when [value] is non-null or null respectively.\n\nThis kind of diagnostics property is typically used for values mostly opaque\nvalues, like closures, where presenting the actual object is of dubious\nvalue but where reporting the presence or absence of the value is much more\nuseful.\n\nSee also:\n\n * [FlagProperty], which provides similar functionality describing whether\n a [value] is true or false.", "detail": "", "kind": 7, "label": "ObjectFlagProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServiceExtensionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for service extensions.\n\nThe returned map must not contain the keys \"type\" or \"method\", as\nthey will be replaced before the value is sent to the client. The\n\"type\" key will be set to the string `_extensionType` to indicate\nthat this is a return value from a service extension, and the\n\"method\" key will be set to the full name of the method.", "detail": "(Map<String, String> parameters) → Future<Map<String, dynamic>>", "kind": 7, "label": "ServiceExtensionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that filter an iterable.", "detail": "(Iterable<T> input) → Iterable<T>", "kind": 7, "label": "IterableFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Summary", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An annotation that provides a short description of a class for use\nin an index.\n\nUsually the first paragraph of the documentation for a class can be used\nfor this purpose, but on occasion the first paragraph is either too short\nor too long for use in isolation, without the remainder of the documentation.\n\n\n```dart\n/// A famous cat.\n///\n/// Instances of this class can hunt small animals.\n/// This cat has three legs.\n@Category(<String>['Animals', 'Cats'])\n@Category(<String>['Cute', 'Pets'])\n@DocumentationIcon('https://www.examples.net/docs/images/icons/pillar.jpeg')\n@Summary('A famous three-legged cat.')\nclass Pillar extends Cat {\n // ...code...\n}\n```\n\nSee also:\n\n * [Category], to help place the class in an index.\n * [DocumentationIcon], which is used to give the URL to an image that\n represents the class.", "detail": "", "kind": 7, "label": "Summary" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseEntryCollector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks passed to [LicenseRegistry.addLicense].", "detail": "() → Stream<LicenseEntry>", "kind": 7, "label": "LicenseEntryCollector" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObserverList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A list optimized for containment queries.\n\nConsider using an [ObserverList] instead of a [List] when the number of\n[contains] calls dominates the number of [add] and [remove] calls.", "detail": "", "kind": 7, "label": "ObserverList" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComputePropertyValueCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for computing the value of a property.\n\nMay throw exception if accessing the property would throw an exception\nand callers must handle that case gracefully. For example, accessing a\nproperty may trigger an assert that layout constraints were violated.", "detail": "() → T", "kind": 7, "label": "ComputePropertyValueCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An int valued property with an optional unit the value is measured in.\n\nExamples of units include 'px' and 'ms'.", "detail": "", "kind": 7, "label": "IntProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticPropertiesBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builder to accumulate properties and configuration used to assemble a\n[DiagnosticsNode] from a [Diagnosticable] object.", "detail": "", "kind": 7, "label": "DiagnosticPropertiesBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A license that covers part of the application's software or assets, to show\nin an interface such as the [LicensePage].\n\nFor optimal performance, [LicenseEntry] objects should only be created on\ndemand in [LicenseEntryCollector] callbacks passed to\n[LicenseRegistry.addLicense].", "detail": "", "kind": 7, "label": "LicenseEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines diagnostics data for a [value].\n\n[DiagnosticsNode] provides a high quality multi-line string dump via\n[toStringDeep]. The core members are the [name], [toDescription],\n[getProperties], [value], and [getChildren]. All other members exist\ntypically to provide hints for how [toStringDeep] and debugging tools should\nformat output.", "detail": "", "kind": 7, "label": "DiagnosticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticableTreeMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps dump string and [DiagnosticsNode] representations of trees.\n\nThis mixin is identical to class [DiagnosticableTree].", "detail": "", "kind": 7, "label": "DiagnosticableTreeMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextTreeConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration specifying how a particular [DiagnosticsTreeStyle] should be\nrendered as text art.\n\nSee also:\n\n * [sparseTextConfiguration], which is a typical style.\n * [transitionTextConfiguration], which is an example of a complex tree style.\n * [DiagnosticsNode.toStringDeep], for code using [TextTreeConfiguration]\n to render text art for arbitrary trees of [DiagnosticsNode] objects.", "detail": "", "kind": 7, "label": "TextTreeConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReadBuffer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Read-only buffer for reading sequentially from a [ByteData] instance.\n\nThe byte order used is [Endian.host] throughout.", "detail": "", "kind": 7, "label": "ReadBuffer" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncValueSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set and return a\n[Future] that completes when the value has been saved.\n\nSee also:\n\n * [ValueSetter], a synchronous version of this signature.\n * [AsyncValueGetter], the getter equivalent of this signature.", "detail": "(T value) → Future<void>", "kind": 7, "label": "AsyncValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data, but that\nreturn a [Future] to indicate when their work is complete.\n\nSee also:\n\n * [VoidCallback], a synchronous version of this signature.\n * [AsyncValueGetter], a signature for asynchronous getters.\n * [AsyncValueSetter], a signature for asynchronous setters.", "detail": "() → Future<void>", "kind": 7, "label": "AsyncCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WriteBuffer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Write-only buffer for incrementally building a [ByteData] instance.\n\nA WriteBuffer instance can be used only once. Attempts to reuse will result\nin [NoSuchMethodError]s being thrown.\n\nThe byte order used is [Endian.host] throughout.", "detail": "", "kind": 7, "label": "WriteBuffer" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BindingBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for mixins that provide singleton services (also known as\n\"bindings\").\n\nTo use this class in an `on` clause of a mixin, inherit from it and implement\n[initInstances()]. The mixin is guaranteed to only be constructed once in\nthe lifetime of the app (more precisely, it will assert if constructed twice\nin checked mode).\n\nThe top-most layer used to write the application will have a concrete class\nthat inherits from [BindingBase] and uses all the various [BindingBase]\nmixins (such as [ServicesBinding]). For example, the Widgets library in\nFlutter introduces a binding called [WidgetsFlutterBinding]. The relevant\nlibrary defines how to create the binding. It could be implied (for example,\n[WidgetsFlutterBinding] is automatically started from [runApp]), or the\napplication might be required to explicitly call the constructor.", "detail": "", "kind": 7, "label": "BindingBase" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugPrintCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugPrint] implementations.", "detail": "(String message, {int wrapWidth}) → void", "kind": 7, "label": "DebugPrintCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseParagraph", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A string that represents one paragraph in a [LicenseEntry].\n\nSee [LicenseEntry.paragraphs].", "detail": "", "kind": 7, "label": "LicenseParagraph" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SynchronousFuture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Future] whose [then] implementation calls the callback immediately.\n\nThis is similar to [new Future.value], except that the value is available in\nthe same event-loop iteration.\n\n⚠ This class is useful in cases where you want to expose a single API, where\nyou normally want to have everything execute synchronously, but where on\nrare occasions you want the ability to switch to an asynchronous model. **In\ngeneral use of this class should be avoided as it is very difficult to debug\nsuch bimodal behavior.**", "detail": "", "kind": 7, "label": "SynchronousFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property with an `Iterable<T>` [value] that can be displayed with\ndifferent [DiagnosticsTreeStyle] for custom rendering.\n\nIf [style] is [DiagnosticsTreeStyle.singleLine], the iterable is described\nas a comma separated list, otherwise the iterable is described as a line\nbreak separated list.", "detail": "", "kind": 7, "label": "IterableProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Diagnosticable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for providing string and [DiagnosticsNode] debug\nrepresentations describing the properties of an object.\n\nThe string debug representation is generated from the intermediate\n[DiagnosticsNode] representation. The [DiagnosticsNode] representation is\nalso used by debugging tools displaying interactive trees of objects and\nproperties.\n\nSee also:\n\n * [DiagnosticableTree], which extends this class to also describe the\n children of a tree structured object.\n * [Diagnosticable.debugFillProperties], which lists best practices\n for specifying the properties of a [DiagnosticsNode]. The most common use\n case is to override [debugFillProperties] defining custom properties for\n a subclass of [DiagnosticableTreeMixin] using the existing\n [DiagnosticsProperty] subclasses.\n * [DiagnosticableTree.debugDescribeChildren], which lists best practices\n for describing the children of a [DiagnosticsNode]. Typically the base\n class already describes the children of a node properly or a node has\n no children.\n * [DiagnosticsProperty], which should be used to create leaf diagnostic\n nodes without properties or children. There are many\n [DiagnosticsProperty] subclasses to handle common use cases.", "detail": "", "kind": 7, "label": "Diagnosticable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BitField", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A BitField over an enum (or other class whose values implement \"index\").\nOnly the first 62 values of the enum can be used as indices.\n\nWhen compiling to JavaScript, this class is not supported.", "detail": "", "kind": 7, "label": "BitField" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsTreeStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles for displaying a node in a [DiagnosticsNode] tree.\n\nSee also:\n\n * [DiagnosticsNode.toStringDeep], which dumps text art trees for these\n styles.", "detail": "", "kind": 13, "label": "DiagnosticsTreeStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticableNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[DiagnosticsNode] that lazily calls the associated [Diagnosticable] [value]\nto implement [getChildren] and [getProperties].", "detail": "", "kind": 7, "label": "DiagnosticableNode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Unicode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Constants for useful Unicode characters.\n\nCurrently, these characters are all related to bidirectional text.\n\nSee also:\n\n * <http://unicode.org/reports/tr9/>, which describes the Unicode\n bidirectional text algorithm.", "detail": "", "kind": 7, "label": "Unicode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PercentProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which clamps a [double] to between 0 and 1 and formats it as a\npercentage.", "detail": "", "kind": 7, "label": "PercentProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for subclasses of [Listenable] that expose a [value].\n\nThis interface is implemented by [ValueNotifier<T>] and [Animation<T>], and\nallows other APIs to accept either of those implementations interchangeably.", "detail": "", "kind": 7, "label": "ValueListenable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlagProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property where the description is either [ifTrue] or [ifFalse] depending on\nwhether [value] is true or false.\n\nUsing [FlagProperty] instead of [DiagnosticsProperty<bool>] can make\ndiagnostics display more polished. For example, given a property named\n`visible` that is typically true, the following code will return 'hidden'\nwhen `visible` is false and nothing when visible is true, in contrast to\n`visible: true` or `visible: false`.\n\n\n```dart\nFlagProperty(\n 'visible',\n value: true,\n ifFalse: 'hidden',\n)\n```\n\n[FlagProperty] should also be used instead of [DiagnosticsProperty<bool>]\nif showing the bool value would not clearly indicate the meaning of the\nproperty value.\n\n```dart\nFlagProperty(\n 'inherit',\n value: inherit,\n ifTrue: '<all styles inherited>',\n ifFalse: '<no style specified>',\n)\n```\n\nSee also:\n\n * [ObjectFlagProperty], which provides similar behavior describing whether\n a [value] is null.", "detail": "", "kind": 7, "label": "FlagProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which encloses its string [value] in quotes.\n\nSee also:\n\n * [MessageProperty], which is a better fit for showing a message\n instead of describing a property with a string value.", "detail": "", "kind": 7, "label": "StringProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComputeCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback passed to [compute].\n\n\nInstances of [ComputeCallback] must be top-level functions or static methods\nof classes, not closures or instance methods of objects.\n", "detail": "(Q message) → FutureOr<R>", "kind": 7, "label": "ComputeCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DocumentationIcon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class annotation to provide a URL to an image that represents the class.\n\nEach class should only have one [DocumentationIcon].\n\n\n```dart\n/// Utility class for beginning a dream-sharing sequence.\n/// ...documentation...\n@Category(<String>['Military Technology', 'Experimental'])\n@DocumentationIcon('https://docs.example.org/icons/top.png')\nclass DreamSharing {\n // ...code...\n}\n```\n\nSee also:\n\n * [Category], to help place the class in an index.\n * [Summary], which is used to provide a one-line description of a\n class that overrides the inline documentations' own description.", "detail": "", "kind": 7, "label": "DocumentationIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbstractNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract node in a tree.\n\nAbstractNode has as notion of depth, attachment, and parent, but does not\nhave a model for children.\n\nWhen a subclass is changing the parent of a child, it should call either\n`parent.adoptChild(child)` or `parent.dropChild(child)` as appropriate.\nSubclasses can expose an API for manipulating the tree if desired (e.g. a\nsetter for a `child` property, or an `add()` method to manipulate a list).\n\nThe current parent node is exposed by the [parent] property.\n\nThe current attachment state is exposed by [attached]. The root of any tree\nthat is to be considered attached should be manually attached by calling\n[attach]. Other than that, the [attach] and [detach] methods should not be\ncalled directly; attachment is managed automatically by the aforementioned\n[adoptChild] and [dropChild] methods.\n\nSubclasses that have children must override [attach] and [detach] as\ndescribed in the documentation for those methods.\n\nNodes always have a [depth] greater than their ancestors'. There's no\nguarantee regarding depth between siblings. The depth of a node is used to\nensure that nodes are processed in depth order. The [depth] of a child can\nbe more than one greater than the [depth] of the parent, because the [depth]\nvalues are never decreased: all that matters is that it's greater than the\nparent. Consider a tree with a root node A, a child B, and a grandchild C.\nInitially, A will have [depth] 0, B [depth] 1, and C [depth] 2. If C is\nmoved to be a child of A, sibling of B, then the numbers won't change. C's\n[depth] will still be 2. The [depth] is automatically maintained by the\n[adoptChild] and [dropChild] methods.", "detail": "", "kind": 7, "label": "AbstractNode" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Category", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A category with which to annotate a class, for documentation\npurposes.\n\nA category is usually represented as a section and a subsection, each\nof which is a string. The engineering team that owns the library to which\nthe class belongs defines the categories used for classes in that library.\nFor example, the Flutter engineering team has defined categories like\n\"Basic/Buttons\" and \"Material Design/Buttons\" for Flutter widgets.\n\nA class can have multiple categories.\n\n\n```dart\n/// A copper coffee pot, as desired by Ben Turpin.\n/// ...documentation...\n@Category(<String>['Pots', 'Coffee'])\n@Category(<String>['Copper', 'Cookware'])\n@DocumentationIcon('https://example.com/images/coffee.png')\n@Summary('A proper cup of coffee is made in a proper copper coffee pot.')\nclass CopperCoffeePot {\n // ...code...\n}\n```\n\nSee also:\n\n * [DocumentationIcon], which is used to give the URL to an image that\n represents the class.\n * [Summary], which is used to provide a one-line description of a\n class that overrides the inline documentations' own description.", "detail": "", "kind": 7, "label": "Category" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterExceptionHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [FlutterError.onError] handler.", "detail": "(FlutterErrorDetails details) → void", "kind": 7, "label": "FlutterExceptionHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncValueGetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to asynchronously report a value on demand.\n\nSee also:\n\n * [ValueGetter], a synchronous version of this signature.\n * [AsyncValueSetter], the setter equivalent of this signature.", "detail": "() → Future<T>", "kind": 7, "label": "AsyncValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EnumProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An property than displays enum values tersely.\n\nThe enum value is displayed with the class name stripped. For example:\n[HitTestBehavior.deferToChild] is shown as `deferToChild`.\n\nSee also:\n\n * [DiagnosticsProperty] which documents named parameters common to all\n [DiagnosticsProperty].", "detail": "", "kind": 7, "label": "EnumProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InformationCollector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [FlutterErrorDetails.informationCollector] callback\nand other callbacks that collect information into a string buffer.", "detail": "(StringBuffer information) → void", "kind": 7, "label": "InformationCollector" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property with a [value] of type [T].\n\nIf the default `value.toString()` does not provide an adequate description\nof the value, specify `description` defining a custom description.\n\nThe [showSeparator] property indicates whether a separator should be placed\nbetween the property [name] and its [value].", "detail": "", "kind": 7, "label": "DiagnosticsProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseRegistry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A registry for packages to add licenses to, so that they can be displayed\ntogether in an interface such as the [LicensePage].\n\nPackages can register their licenses using [addLicense]. User interfaces\nthat wish to show all the licenses can obtain them by calling [licenses].\n\nThe flutter tool will automatically collect the contents of all the LICENSE\nfiles found at the root of each package into a single LICENSE file in the\ndefault asset bundle. Each license in that file is separated from the next\nby a line of eighty hyphens (`-`), and begins with a list of package names\nthat the license applies to, one to a line, separated from the next by a\nblank line. The `services` package registers a license collector that splits\nthat file and adds each entry to the registry.\n\nThe LICENSE files in each package can either consist of a single license, or\ncan be in the format described above. In the latter case, each component\nlicense and list of package names is merged independently.\n\nSee also:\n\n * [showAboutDialog], which shows a Material-style dialog with information\n about the application, including a button that shows a [LicensePage] that\n uses this API to select licenses to show.\n * [AboutListTile], which is a widget that can be added to a [Drawer]. When\n tapped it calls [showAboutDialog].", "detail": "", "kind": 7, "label": "LicenseRegistry" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MessageProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Debugging message displayed like a property.\n\n\nThe following two properties are better expressed using this\n[MessageProperty] class, rather than [StringProperty], as the intent is to\nshow a message with property style display rather than to describe the value\nof an actual property of the object:\n\n```dart\nvar table = MessageProperty('table size', '$columns\\u00D7$rows');\nvar usefulness = MessageProperty('usefulness ratio', 'no metrics collected yet (never painted)');\n```\n\nOn the other hand, [StringProperty] is better suited when the property has a\nconcrete value that is a string:\n\n```dart\nvar name = StringProperty('name', _name);\n```\n\nSee also:\n\n * [DiagnosticsNode.message], which serves the same role for messages\n without a clear property name.\n * [StringProperty], which is a better fit for properties with string values.", "detail": "", "kind": 7, "label": "MessageProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/foundation.dart", "libraryId": 72, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LicenseEntryWithLineBreaks", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [LicenseEntry] for licenses that separate paragraphs with blank\nlines and that hard-wrap text within paragraphs. Lines that begin with one\nor more space characters are also assumed to introduce new paragraphs,\nunless they start with the same number of spaces as the previous line, in\nwhich case it's assumed they are a continuation of an indented paragraph.\n\n\nFor example, the BSD license in this format could be encoded as follows:\n\n```dart\nvoid initMyLibrary() {\n LicenseRegistry.addLicense(() async* {\n yield LicenseEntryWithLineBreaks(<String>['my_library'], '''\nCopyright 2016 The Sample Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Example Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.''');\n });\n}\n```\n\nThis would result in a license with six [paragraphs], the third, fourth, and\nfifth being indented one level.\n\n## Performance considerations\n\nComputing the paragraphs is relatively expensive. Doing the work for one\nlicense per frame is reasonable; doing more at the same time is ill-advised.\nConsider doing all the work at once using [compute] to move the work to\nanother thread, or spreading the work across multiple frames using\n[scheduleTask].", "detail": "", "kind": 7, "label": "LicenseEntryWithLineBreaks" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showSnackBar]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself had been used, no [Scaffold] would have\nbeen found, and the [Scaffold.of] function would have returned null.\n\n```dart\n @override\n Widget build(BuildContext context) {\n // here, Scaffold.of(context) returns null\n return Scaffold(\n appBar: AppBar(title: Text('Demo')),\n body: Builder(\n builder: (BuildContext context) {\n return FlatButton(\n child: Text('BUTTON'),\n onPressed: () {\n // here, Scaffold.of(context) returns the locally created Scaffold\n Scaffold.of(context).showSnackBar(SnackBar(\n content: Text('Hello.')\n ));\n }\n );\n }\n )\n );\n }\n```\n\nThe [BuildContext] for a particular widget can change location over time as\nthe widget is moved around the tree. Because of this, values returned from\nthe methods on this class should not be cached beyond the execution of a\nsingle synchronous function.\n\n[BuildContext] objects are actually [Element] objects. The [BuildContext]\ninterface is used to discourage direct manipulation of [Element] objects.", "detail": "", "kind": 7, "label": "BuildContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTarget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that receives data when a [Draggable] widget is dropped.\n\nWhen a draggable is dragged on top of a drag target, the drag target is\nasked whether it will accept the data the draggable is carrying. If the user\ndoes drop the draggable on top of the drag target (and the drag target has\nindicated that it will accept the draggable's data), then the drag target is\nasked to accept the draggable's data.\n\nSee also:\n\n * [Draggable]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "DragTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Widget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the configuration for an [Element].\n\nWidgets are the central class hierarchy in the Flutter framework. A widget\nis an immutable description of part of a user interface. Widgets can be\ninflated into elements, which manage the underlying render tree.\n\nWidgets themselves have no mutable state (all their fields must be final).\nIf you wish to associate mutable state with a widget, consider using a\n[StatefulWidget], which creates a [State] object (via\n[StatefulWidget.createState]) whenever it is inflated into an element and\nincorporated into the tree.\n\nA given widget can be included in the tree zero or more times. In particular\na given widget can be placed in the tree multiple times. Each time a widget\nis placed in the tree, it is inflated into an [Element], which means a\nwidget that is incorporated into the tree multiple times will be inflated\nmultiple times.\n\nThe [key] property controls how one widget replaces another widget in the\ntree. If the [runtimeType] and [key] properties of the two widgets are\n[operator==], respectively, then the new widget replaces the old widget by\nupdating the underlying element (i.e., by calling [Element.update] with the\nnew widget). Otherwise, the old element is removed from the tree, the new\nwidget is inflated into an element, and the new element is inserted into the\ntree.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.", "detail": "", "kind": 7, "label": "Widget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPhysicalModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PhysicalModel].\n\nThe [borderRadius] and [elevation] are animated.\n\nThe [color] is animated if the [animateColor] property is set; otherwise,\nthe color changes immediately at the start of the animation for the other\ntwo properties. This allows the color to be animated independently (e.g.\nbecause it is being driven by an [AnimatedTheme]).\n\nThe [shape] is not animated.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].", "detail": "", "kind": 7, "label": "AnimatedPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerLocation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to show a [Banner].\n\nThe start and end locations are relative to the ambient [Directionality]\n(which can be overridden by [Banner.layoutDirection]).", "detail": "", "kind": 13, "label": "BannerLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface that [Scrollable] widgets implement in order to use\n[ScrollPosition].\n\nSee also:\n\n * [ScrollableState], which is the most common implementation of this\n interface.\n * [ScrollPosition], which uses this interface to communicate with the\n scrollable widget.", "detail": "", "kind": 7, "label": "ScrollContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapInjector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [SliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [Viewport], so that it will always be laid out before the\n[SliverOverlapInjector] during a particular frame.\n\nSee also:\n\n * [NestedScrollView], which uses a [SliverOverlapAbsorber] to align its\n children, and which shows sample usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalTranslation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[FractionalTranslation], even if the contents are offset such that\nthey overflow.\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [new Transform.translate], which applies an absolute offset translation\n transformation instead of an offset scaled to the child.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightShuttleBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A function that lets [Hero]s self supply a [Widget] that is shown during the\nhero's flight from one route to another instead of default (which is to\nshow the destination route's instance of the Hero).", "detail": "(BuildContext flightContext, Animation<double> animation, HeroFlightDirection flightDirection, BuildContext fromHeroContext, BuildContext toHeroContext) → Widget", "kind": 7, "label": "HeroFlightShuttleBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State object for a [Scrollable] widget.\n\nTo manipulate a [Scrollable] widget's scroll position, use the object\nobtained from the [position] property.\n\nTo be informed of when a [Scrollable] widget is scrolling, use a\n[NotificationListener] to listen for [ScrollNotification] notifications.\n\nThis class is not intended to be subclassed. To specialize the behavior of a\n[Scrollable], provide it with a [ScrollPhysics].", "detail": "", "kind": 7, "label": "ScrollableState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbsorbPointer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this widget prevents its subtree from receiving\npointer events by terminating hit testing at itself. It still consumes space\nduring layout and paints its child as usual. It just prevents its children\nfrom being the target of located events, because it returns true from\n[RenderBox.hitTest].\n\n\nSee also:\n\n * [IgnorePointer], which also prevents its children from receiving pointer\n events but is itself invisible to hit testing.", "detail": "", "kind": 7, "label": "AbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativePositionedTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which transitions the child's position\nbased on the value of [rect] relative to a bounding box with the\nspecified [size].\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [RelativePositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "RelativePositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that manages a pair of text selection handles.\n\nThe selection handles are displayed in the [Overlay] that most closely\nencloses the given [BuildContext].", "detail": "", "kind": 7, "label": "TextSelectionOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a [Widget] when given a concrete value of a [ValueListenable<T>].\n\nIf the `child` parameter provided to the [ValueListenableBuilder] is not\nnull, the same `child` widget is passed back to this [ValueWidgetBuilder]\nand should typically be incorporated in the returned widget tree.\n\nSee also:\n\n * [ValueListenableBuilder], a widget which invokes this builder each time\n a [ValueListenable] changes value.", "detail": "(BuildContext context, T value, Widget child) → Widget", "kind": 7, "label": "ValueWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverSafeArea", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that insets another sliver by sufficient padding to avoid\nintrusions by the operating system.\n\nFor example, this will indent the sliver by enough to avoid the status bar\nat the top of the screen.\n\nIt will also indent the sliver by the amount necessary to avoid The Notch\non the iPhone X, or other similar creative physical features of the\ndisplay.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\nSee also:\n\n * [SafeArea], for insetting widgets to avoid operating system intrusions.\n * [SliverPadding], for insetting slivers in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SliverSafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Navigator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that manages a set of child widgets with a stack discipline.\n\nMany apps have a navigator near the top of their widget hierarchy in order\nto display their logical history using an [Overlay] with the most recently\nvisited pages visually on top of the older pages. Using this pattern lets\nthe navigator visually transition from one page to another by moving the widgets\naround in the overlay. Similarly, the navigator can be used to show a dialog\nby positioning the dialog widget above the current page.\n\n## Using the Navigator\n\nMobile apps typically reveal their contents via full-screen elements\ncalled \"screens\" or \"pages\". In Flutter these elements are called\nroutes and they're managed by a [Navigator] widget. The navigator\nmanages a stack of [Route] objects and provides methods for managing\nthe stack, like [Navigator.push] and [Navigator.pop].\n\n### Displaying a full-screen route\n\nAlthough you can create a navigator directly, it's most common to use\nthe navigator created by a [WidgetsApp] or a [MaterialApp] widget. You\ncan refer to that navigator with [Navigator.of].\n\nA [MaterialApp] is the simplest way to set things up. The [MaterialApp]'s\nhome becomes the route at the bottom of the [Navigator]'s stack. It is what\nyou see when the app is launched.\n\n```dart\nvoid main() {\n runApp(MaterialApp(home: MyAppHome()));\n}\n```\n\nTo push a new route on the stack you can create an instance of\n[MaterialPageRoute] with a builder function that creates whatever you\nwant to appear on the screen. For example:\n\n```dart\nNavigator.push(context, MaterialPageRoute<void>(\n builder: (BuildContext context) {\n return Scaffold(\n appBar: AppBar(title: Text('My Page')),\n body: Center(\n child: FlatButton(\n child: Text('POP'),\n onPressed: () {\n Navigator.pop(context);\n },\n ),\n ),\n );\n },\n));\n```\n\nThe route defines its widget with a builder function instead of a\nchild widget because it will be built and rebuilt in different\ncontexts depending on when it's pushed and popped.\n\nAs you can see, the new route can be popped, revealing the app's home\npage, with the Navigator's pop method:\n\n```dart\nNavigator.pop(context);\n```\n\nIt usually isn't necessary to provide a widget that pops the Navigator\nin a route with a [Scaffold] because the Scaffold automatically adds a\n'back' button to its AppBar. Pressing the back button causes\n[Navigator.pop] to be called. On Android, pressing the system back\nbutton does the same thing.\n\n### Using named navigator routes\n\nMobile apps often manage a large number of routes and it's often\neasiest to refer to them by name. Route names, by convention,\nuse a path-like structure (for example, '/a/b/c').\nThe app's home page route is named '/' by default.\n\nThe [MaterialApp] can be created\nwith a [Map<String, WidgetBuilder>] which maps from a route's name to\na builder function that will create it. The [MaterialApp] uses this\nmap to create a value for its navigator's [onGenerateRoute] callback.\n\n```dart\nvoid main() {\n runApp(MaterialApp(\n home: MyAppHome(), // becomes the route named '/'\n routes: <String, WidgetBuilder> {\n '/a': (BuildContext context) => MyPage(title: 'page A'),\n '/b': (BuildContext context) => MyPage(title: 'page B'),\n '/c': (BuildContext context) => MyPage(title: 'page C'),\n },\n ));\n}\n```\n\nTo show a route by name:\n\n```dart\nNavigator.pushNamed(context, '/b');\n```\n\n### Routes can return a value\n\nWhen a route is pushed to ask the user for a value, the value can be\nreturned via the [pop] method's result parameter.\n\nMethods that push a route return a [Future]. The Future resolves when the\nroute is popped and the [Future]'s value is the [pop] method's `result`\nparameter.\n\nFor example if we wanted to ask the user to press 'OK' to confirm an\noperation we could `await` the result of [Navigator.push]:\n\n```dart\nbool value = await Navigator.push(context, MaterialPageRoute<bool>(\n builder: (BuildContext context) {\n return Center(\n child: GestureDetector(\n child: Text('OK'),\n onTap: () { Navigator.pop(context, true); }\n ),\n );\n }\n));\n```\n\nIf the user presses 'OK' then value will be true. If the user backs\nout of the route, for example by pressing the Scaffold's back button,\nthe value will be null.\n\nWhen a route is used to return a value, the route's type parameter must\nmatch the type of [pop]'s result. That's why we've used\n`MaterialPageRoute<bool>` instead of `MaterialPageRoute<void>` or just\n`MaterialPageRoute`. (If you prefer to not specify the types, though, that's\nfine too.)\n\n### Popup routes\n\nRoutes don't have to obscure the entire screen. [PopupRoute]s cover the\nscreen with a [ModalRoute.barrierColor] that can be only partially opaque to\nallow the current screen to show through. Popup routes are \"modal\" because\nthey block input to the widgets below.\n\nThere are functions which create and show popup routes. For\nexample: [showDialog], [showMenu], and [showModalBottomSheet]. These\nfunctions return their pushed route's Future as described above.\nCallers can await the returned value to take an action when the\nroute is popped, or to discover the route's value.\n\nThere are also widgets which create popup routes, like [PopupMenuButton] and\n[DropdownButton]. These widgets create internal subclasses of PopupRoute\nand use the Navigator's push and pop methods to show and dismiss them.\n\n### Custom routes\n\nYou can create your own subclass of one of the widget library route classes\nlike [PopupRoute], [ModalRoute], or [PageRoute], to control the animated\ntransition employed to show the route, the color and behavior of the route's\nmodal barrier, and other aspects of the route.\n\nThe [PageRouteBuilder] class makes it possible to define a custom route\nin terms of callbacks. Here's an example that rotates and fades its child\nwhen the route appears or disappears. This route does not obscure the entire\nscreen because it specifies `opaque: false`, just as a popup route does.\n\n```dart\nNavigator.push(context, PageRouteBuilder(\n opaque: false,\n pageBuilder: (BuildContext context, _, __) {\n return Center(child: Text('My PageRoute'));\n },\n transitionsBuilder: (___, Animation<double> animation, ____, Widget child) {\n return FadeTransition(\n opacity: animation,\n child: RotationTransition(\n turns: Tween<double>(begin: 0.5, end: 1.0).animate(animation),\n child: child,\n ),\n );\n }\n));\n```\n\nThe page route is built in two parts, the \"page\" and the\n\"transitions\". The page becomes a descendant of the child passed to\nthe `transitionsBuilder` function. Typically the page is only built once,\nbecause it doesn't depend on its animation parameters (elided with `_`\nand `__` in this example). The transition is built on every frame\nfor its duration.\n\n### Nesting Navigators\n\nAn app can use more than one Navigator. Nesting one Navigator below\nanother Navigator can be used to create an \"inner journey\" such as tabbed\nnavigation, user registration, store checkout, or other independent journeys\nthat represent a subsection of your overall application.\n\n#### Real World Example\n\nIt is standard practice for iOS apps to use tabbed navigation where each\ntab maintains its own navigation history. Therefore, each tab has its own\n[Navigator], creating a kind of \"parallel navigation.\"\n\nIn addition to the parallel navigation of the tabs, it is still possible to\nlaunch full-screen pages that completely cover the tabs. For example: an\non-boarding flow, or an alert dialog. Therefore, there must exist a \"root\"\n[Navigator] that sits above the tab navigation. As a result, each of the\ntab's [Navigator]s are actually nested [Navigator]s sitting below a single\nroot [Navigator].\n\nThe nested [Navigator]s for tabbed navigation sit in [WidgetApp] and\n[CupertinoTabView], so you don't need to worry about nested [Navigator]s\nin this situation, but it's a real world example where nested [Navigator]s\nare used.\n\nThe following example demonstrates how a nested [Navigator] can be used to\npresent a standalone user registration journey.\n\nEven though this example uses two [Navigator]s to demonstrate nested\n[Navigator]s, a similar result is possible using only a single [Navigator].\n\nRun this example with `flutter run --route=/signup` to start it with\nthe signup flow instead of on the home page.\n\n```dart\nimport 'package:flutter/material.dart';\n```\n\n```dart\nvoid main() => runApp(new MyApp());\n```\n\n```dart\nclass MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Code Sample for Navigator',\n // MaterialApp contains our top-level Navigator\n initialRoute: '/',\n routes: {\n '/': (BuildContext context) => HomePage(),\n '/signup': (BuildContext context) => SignUpPage(),\n },\n );\n }\n}\n\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: Text('Home Page'),\n ),\n );\n }\n}\n\nclass CollectPersonalInfoPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: GestureDetector(\n onTap: () {\n // This moves from the personal info page to the credentials page,\n // replacing this page with that one.\n Navigator.of(context)\n .pushReplacementNamed('signup/choose_credentials');\n },\n child: Container(\n color: Colors.lightBlue,\n alignment: Alignment.center,\n child: Text('Collect Personal Info Page'),\n ),\n ),\n );\n }\n}\n\nclass ChooseCredentialsPage extends StatelessWidget {\n const ChooseCredentialsPage({\n this.onSignupComplete,\n });\n\n final VoidCallback onSignupComplete;\n\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: onSignupComplete,\n child: DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.pinkAccent,\n alignment: Alignment.center,\n child: Text('Choose Credentials Page'),\n ),\n ),\n );\n }\n}\n\nclass SignUpPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n // SignUpPage builds its own Navigator which ends up being a nested\n // Navigator in our app.\n return Navigator(\n initialRoute: 'signup/personal_info',\n onGenerateRoute: (RouteSettings settings) {\n WidgetBuilder builder;\n switch (settings.name) {\n case 'signup/personal_info':\n // Assume CollectPersonalInfoPage collects personal info and then\n // navigates to 'signup/choose_credentials'.\n builder = (BuildContext _) => CollectPersonalInfoPage();\n break;\n case 'signup/choose_credentials':\n // Assume ChooseCredentialsPage collects new credentials and then\n // invokes 'onSignupComplete()'.\n builder = (BuildContext _) => ChooseCredentialsPage(\n onSignupComplete: () {\n // Referencing Navigator.of(context) from here refers to the\n // top level Navigator because SignUpPage is above the\n // nested Navigator that it created. Therefore, this pop()\n // will pop the entire \"sign up\" journey and return to the\n // \"/\" route, AKA HomePage.\n Navigator.of(context).pop();\n },\n );\n break;\n default:\n throw Exception('Invalid route: ${settings.name}');\n }\n return MaterialPageRoute(builder: builder, settings: settings);\n },\n );\n }\n}\n```\n\n[Navigator.of] operates on the nearest ancestor [Navigator] from the given\n[BuildContext]. Be sure to provide a [BuildContext] below the intended\n[Navigator], especially in large [build] methods where nested [Navigator]s\nare created. The [Builder] widget can be used to access a [BuildContext] at\na desired location in the widget subtree.", "detail": "", "kind": 7, "label": "Navigator" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Texture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture widget refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture widgets are repainted autonomously as dictated by the backend (e.g.\non arrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by its parent widget, and the\ntexture is automatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "Texture" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePredicate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [Navigator.popUntil] predicate argument.", "detail": "(Route<dynamic> route) → bool", "kind": 7, "label": "RoutePredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "RenderObjectWidgets provide the configuration for [RenderObjectElement]s,\nwhich wrap [RenderObject]s, which provide the actual rendering of the\napplication.", "detail": "", "kind": 7, "label": "RenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures described by the given gesture\nfactories.\n\nFor common gestures, use a [GestureRecognizer].\n[RawGestureDetector] is useful primarily when developing your\nown gesture recognizers.\n\nConfiguring the gesture recognizers requires a carefully constructed map, as\ndescribed in [gestures] and as shown in the example below.\n\n\nThis example shows how to hook up a [TapGestureRecognizer]. It assumes that\nthe code is being used inside a [State] object with a `_last` field that is\nthen displayed as the child of the gesture detector.\n\n```dart\nRawGestureDetector(\n gestures: <Type, GestureRecognizerFactory>{\n TapGestureRecognizer: GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(\n () => TapGestureRecognizer(),\n (TapGestureRecognizer instance) {\n instance\n ..onTapDown = (TapDownDetails details) { setState(() { _last = 'down'; }); }\n ..onTapUp = (TapUpDetails details) { setState(() { _last = 'up'; }); }\n ..onTap = () { setState(() { _last = 'tap'; }); }\n ..onTapCancel = () { setState(() { _last = 'cancel'; }); };\n },\n ),\n },\n child: Container(width: 300.0, height: 300.0, color: Colors.yellow, child: Text(_last)),\n)\n```\n\nSee also:\n\n * [GestureDetector], a less flexible but much simpler widget that does the same thing.\n * [Listener], a widget that reports raw pointer events.\n * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.", "detail": "", "kind": 7, "label": "RawGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedModeBanner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a [Banner] saying \"DEBUG\" when running in checked mode.\n[MaterialApp] builds one of these by default.\nDoes nothing in release mode.", "detail": "", "kind": 7, "label": "CheckedModeBanner" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Associates a [ScrollController] with a subtree.\n\nWhen a [ScrollView] has [ScrollView.primary] set to true and is not given\nan explicit [ScrollController], the [ScrollView] uses [of] to find the\n[ScrollController] associated with its subtree.\n\nThis mechanism can be used to provide default behavior for scroll views in a\nsubtree. For example, the [Scaffold] uses this mechanism to implement the\nscroll-to-top gesture on iOS.", "detail": "", "kind": 7, "label": "PrimaryScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MetaData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "MetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an iOS view in the Widget hierarchy.\n\n\nEmbedding iOS views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\n\n\n\nConstruction of UIViews is done asynchronously, before the UIView is ready this widget paints\nnothing while maintaining the same layout constraints.", "detail": "", "kind": 7, "label": "UiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Element", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An instantiation of a [Widget] at a particular location in the tree.\n\nWidgets describe how to configure a subtree but the same widget can be used\nto configure multiple subtrees simultaneously because widgets are immutable.\nAn [Element] represents the use of a widget to configure a specific location\nin the tree. Over time, the widget associated with a given element can\nchange, for example, if the parent widget rebuilds and creates a new widget\nfor this location.\n\nElements form a tree. Most elements have a unique child, but some widgets\n(e.g., subclasses of [RenderObjectElement]) can have multiple children.\n\nElements have the following lifecycle:\n\n * The framework creates an element by calling [Widget.createElement] on the\n widget that will be used as the element's initial configuration.\n * The framework calls [mount] to add the newly created element to the tree\n at a given slot in a given parent. The [mount] method is responsible for\n inflating any child widgets and calling [attachRenderObject] as\n necessary to attach any associated render objects to the render tree.\n * At this point, the element is considered \"active\" and might appear on\n screen.\n * At some point, the parent might decide to change the widget used to\n configure this element, for example because the parent rebuilt with new\n state. When this happens, the framework will call [update] with the new\n widget. The new widget will always have the same [runtimeType] and key as\n old widget. If the parent wishes to change the [runtimeType] or key of\n the widget at this location in the tree, can do so by unmounting this\n element and inflating the new widget at this location.\n * At some point, an ancestor might decide to remove this element (or an\n intermediate ancestor) from the tree, which the ancestor does by calling\n [deactivateChild] on itself. Deactivating the intermediate ancestor will\n remove that element's render object from the render tree and add this\n element to the [owner]'s list of inactive elements, causing the framework\n to call [deactivate] on this element.\n * At this point, the element is considered \"inactive\" and will not appear\n on screen. An element can remain in the inactive state only until\n the end of the current animation frame. At the end of the animation\n frame, any elements that are still inactive will be unmounted.\n * If the element gets reincorporated into the tree (e.g., because it or one\n of its ancestors has a global key that is reused), the framework will\n remove the element from the [owner]'s list of inactive elements, call\n [activate] on the element, and reattach the element's render object to\n the render tree. (At this point, the element is again considered \"active\"\n and might appear on screen.)\n * If the element does not get reincorporated into the tree by the end of\n the current animation frame, the framework will call [unmount] on the\n element.\n * At this point, the element is considered \"defunct\" and will not be\n incorporated into the tree in the future.", "detail": "", "kind": 7, "label": "Element" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a scrolling container that animates items when they are\ninserted or removed.\n\nWhen an item is inserted with [insertItem] an animation begins running. The\nanimation is passed to [AnimatedList.itemBuilder] whenever the item's widget\nis needed.\n\nWhen an item is removed with [removeItem] its animation is reversed.\nThe removed item's animation is passed to the [removeItem] builder\nparameter.\n\nAn app that needs to insert or remove items in response to an event\ncan refer to the [AnimatedList]'s state with a global key:\n\n```dart\nGlobalKey<AnimatedListState> listKey = GlobalKey<AnimatedListState>();\n...\nAnimatedList(key: listKey, ...);\n...\nlistKey.currentState.insert(123);\n```\n\n[AnimatedList] item input handlers can also refer to their [AnimatedListState]\nwith the static [AnimatedList.of] method.", "detail": "", "kind": 7, "label": "AnimatedListState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dismissible", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dismissed by dragging in the indicated [direction].\n\nDragging or flinging this widget in the [DismissDirection] causes the child\nto slide out of view. Following the slide animation, if [resizeDuration] is\nnon-null, the Dismissible widget animates its height (or width, whichever is\nperpendicular to the dismiss direction) to zero over the [resizeDuration].\n\n\nBackgrounds can be used to implement the \"leave-behind\" idiom. If a background\nis specified it is stacked behind the Dismissible's child and is exposed when\nthe child moves.\n\nThe widget calls the [onDismissed] callback either after its size has\ncollapsed to zero (if [resizeDuration] is non-null) or immediately after\nthe slide animation (if [resizeDuration] is null). If the Dismissible is a\nlist item, it must have a key that distinguishes it from the other items and\nits [onDismissed] callback must remove the item from the list.", "detail": "", "kind": 7, "label": "Dismissible" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mutable selection state of the inspector.", "detail": "", "kind": 7, "label": "InspectorSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State associated with a [Form] widget.\n\nA [FormState] object can be used to [save], [reset], and [validate] every\n[FormField] that is a descendant of the associated [Form].\n\nTypically obtained via [Form.of].", "detail": "", "kind": 7, "label": "FormState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionHandleType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Which type of selection handle to be displayed.\n\nWith mixed-direction text, both handles may be the same type. Examples:\n\n* LTR text: 'the <quick brown> fox':\n\n The '<' is drawn with the [left] type, the '>' with the [right]\n\n* RTL text: 'XOF <NWORB KCIUQ> EHT':\n\n Same as above.\n\n* mixed text: '<the NWOR<B KCIUQ fox'\n\n Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn\n with the [left] type.\n\nSee also:\n\n * [TextDirection], which discusses left-to-right and right-to-left text in\n more detail.", "detail": "", "kind": 13, "label": "TextSelectionHandleType" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stack", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its children relative to the edges of its box.\n\nThis class is useful if you want to overlap several children in a simple\nway, for example having some text and an image, overlaid with a gradient and\na button attached to the bottom.\n\nEach child of a [Stack] widget is either _positioned_ or _non-positioned_.\nPositioned children are those wrapped in a [Positioned] widget that has at\nleast one non-null property. The stack sizes itself to contain all the\nnon-positioned children, which are positioned according to [alignment]\n(which defaults to the top-left corner in left-to-right environments and the\ntop-right corner in right-to-left environments). The positioned children are\nthen placed relative to the stack according to their top, right, bottom, and\nleft properties.\n\nThe stack paints its children in order with the first child being at the\nbottom. If you want to change the order in which the children paint, you\ncan rebuild the stack with the children in the new order. If you reorder\nthe children in this way, consider giving the children non-null keys.\nThese keys will cause the framework to move the underlying objects for\nthe children to their new locations rather than recreate them at their\nnew location.\n\nFor more details about the stack layout algorithm, see [RenderStack].\n\nIf you want to lay a number of children out in a particular pattern, or if\nyou want to make a custom layout manager, you probably want to use\n[CustomMultiChildLayout] instead. In particular, when using a [Stack] you\ncan't position children relative to their size or the stack's own size.\n\n\nUsing a [Stack] you can position widgets over one another.\n\n```dart\nStack(\n children: <Widget>[\n Container(\n width: 100,\n height: 100,\n color: Colors.red,\n ),\n Container(\n width: 90,\n height: 90,\n color: Colors.green,\n ),\n Container(\n width: 80,\n height: 80,\n color: Colors.blue,\n ),\n ],\n)\n```\n\n\nThis example shows how [Stack] can be used to enhance text visibility\nby adding gradient backdrops.\n\n```dart\nSizedBox(\n width: 250,\n height: 250,\n child: Stack(\n children: <Widget>[\n Container(\n width: 250,\n height: 250,\n color: Colors.white,\n ),\n Container(\n padding: EdgeInsets.all(5.0),\n alignment: Alignment.bottomCenter,\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: <Color>[\n Colors.black.withAlpha(0),\n Colors.black12,\n Colors.black45\n ],\n ),\n ),\n child: Text(\n \"Foreground Text\",\n style: TextStyle(color: Colors.white, fontSize: 20.0),\n ),\n ),\n ],\n ),\n)\n```\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * [Flow], which provides paint-time control of its children using transform\n matrices.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Stack" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeaderDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Delegate for configuring a [SliverPersistentHeader].", "detail": "", "kind": 7, "label": "SliverPersistentHeaderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A leaf node in the focus tree that can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nTo request focus, find the [FocusScopeNode] for the current [BuildContext]\nand call the [FocusScopeNode.requestFocus] method:\n\n```dart\nFocusScope.of(context).requestFocus(focusNode);\n```\n\nIf your widget requests focus, be sure to call\n`FocusScope.of(context).reparentIfNeeded(focusNode);` in your `build`\nmethod to reparent your [FocusNode] if your widget moves from one\nlocation in the tree to another.\n\n## Lifetime\n\nFocus nodes are long-lived objects. For example, if a stateful widget has a\nfocusable child widget, it should create a [FocusNode] in the\n[State.initState] method, and [dispose] it in the [State.dispose] method,\nproviding the same [FocusNode] to the focusable child each time the\n[State.build] method is run. In particular, creating a [FocusNode] each time\n[State.build] is invoked will cause the focus to be lost each time the\nwidget is built.\n\nSee also:\n\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusNode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the scale of a transformed widget.\n\nHere's an illustration of the [ScaleTransition] widget, with it's [alignment]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "ScaleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegion", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Annotates a region of the layer tree with a value.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer pushed into the layer tree.", "detail": "", "kind": 7, "label": "AnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the child semantics with an index.\n\nSemantic indexes are used by TalkBack/Voiceover to make announcements about\nthe current scroll state. Certain widgets like the [ListView] will\nautomatically provide a child index for building semantics. A user may wish\nto manually provide semantic indexes if not all child of the scrollable\ncontribute semantics.\n\n\nThe example below handles spacers in a scrollable that don't contribute\nsemantics. The automatic indexes would give the spaces a semantic index,\ncausing scroll announcements to erroneously state that there are four items\nvisible.\n\n```dart\nListView(\n addSemanticIndexes: false,\n semanticChildCount: 2,\n children: const <Widget>[\n IndexedSemantics(index: 0, child: Text('First')),\n Spacer(),\n IndexedSemantics(index: 1, child: Text('Second')),\n Spacer(),\n ],\n)\n```\n\nSee also:\n\n * [CustomScrollView], for an explanation of index semantics.", "detail": "", "kind": 7, "label": "IndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the physics of a [Scrollable] widget.\n\nFor example, determines how the [Scrollable] will behave when the user\nreaches the maximum scroll extent or when the user stops scrolling.\n\nWhen starting a physics [Simulation], the current scroll position and\nvelocity are used as the initial conditions for the particle in the\nsimulation. The movement of the particle in the simulation is then used to\ndetermine the scroll position for the widget.", "detail": "", "kind": 7, "label": "ScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridPaper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a rectilinear grid of lines one pixel wide.\n\nUseful with a [Stack] for visualizing your layout along a grid.\n\nThe grid's origin (where the first primary horizontal line and the first\nprimary vertical line intersect) is at the top left of the widget.\n\nThe grid is drawn over the [child] widget.", "detail": "", "kind": 7, "label": "GridPaper" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directionality", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the ambient directionality of text and\ntext-direction-sensitive render objects.\n\nFor example, [Padding] depends on the [Directionality] to resolve\n[EdgeInsetsDirectional] objects into absolute [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "Directionality" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that paints a [Decoration] either before or after its child paints.\n\n[Container] insets its child by the widths of the borders; this widget does\nnot.\n\nCommonly used with [BoxDecoration].\n\nThe [child] is not clipped. To clip a child to the shape of a particular\n[ShapeDecoration], consider using a [ClipPath] widget.\n\n\nThis sample shows a radial gradient that draws a moon on a night sky:\n\n```dart\nDecoratedBox(\n decoration: BoxDecoration(\n gradient: RadialGradient(\n center: const Alignment(-0.5, -0.6),\n radius: 0.15,\n colors: <Color>[\n const Color(0xFFEEEEEE),\n const Color(0xFF111133),\n ],\n stops: <double>[0.9, 1.0],\n ),\n ),\n)\n```\n\nSee also:\n\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * [DecoratedBoxTransition], the version of this class that animates on the\n [decoration] property.\n * [Decoration], which you can extend to provide other effects with\n [DecoratedBox].\n * [CustomPaint], another way to draw custom effects from the widget layer.", "detail": "", "kind": 7, "label": "DecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the size of one of the descendants of the object receiving\nthis notification has changed, and that therefore any assumptions about that\nlayout are no longer valid.\n\nFor example, sent by the [SizeChangedLayoutNotifier] widget whenever that\nwidget changes size.\n\nThis notification can be used for triggering repaints, but if you use this\nnotification to trigger rebuilds or relayouts, you'll create a backwards\ndependency in the frame pipeline because [SizeChangedLayoutNotification]s\nare generated during layout, which is after the build phase and in the\nmiddle of the layout phase. This backwards dependency can lead to visual\ncorruption or lags.\n\nSee [LayoutChangedNotification] for additional discussion of layout\nnotifications such as this one.\n\nSee also:\n\n * [SizeChangedLayoutNotifier], which sends this notification.\n * [LayoutChangedNotification], of which this is a subclass.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "State", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The logic and internal state for a [StatefulWidget].\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\n[State] objects are created by the framework by calling the\n[StatefulWidget.createState] method when inflating a [StatefulWidget] to\ninsert it into the tree. Because a given [StatefulWidget] instance can be\ninflated multiple times (e.g., the widget is incorporated into the tree in\nmultiple places at once), there might be more than one [State] object\nassociated with a given [StatefulWidget] instance. Similarly, if a\n[StatefulWidget] is removed from the tree and later inserted in to the tree\nagain, the framework will call [StatefulWidget.createState] again to create\na fresh [State] object, simplifying the lifecycle of [State] objects.\n\n[State] objects have the following lifecycle:\n\n * The framework creates a [State] object by calling\n [StatefulWidget.createState].\n * The newly created [State] object is associated with a [BuildContext].\n This association is permanent: the [State] object will never change its\n [BuildContext]. However, the [BuildContext] itself can be moved around\n the tree along with its subtree. At this point, the [State] object is\n considered [mounted].\n * The framework calls [initState]. Subclasses of [State] should override\n [initState] to perform one-time initialization that depends on the\n [BuildContext] or the widget, which are available as the [context] and\n [widget] properties, respectively, when the [initState] method is\n called.\n * The framework calls [didChangeDependencies]. Subclasses of [State] should\n override [didChangeDependencies] to perform initialization involving\n [InheritedWidget]s. If [BuildContext.inheritFromWidgetOfExactType] is\n called, the [didChangeDependencies] method will be called again if the\n inherited widgets subsequently change or if the widget moves in the tree.\n * At this point, the [State] object is fully initialized and the framework\n might call its [build] method any number of times to obtain a\n description of the user interface for this subtree. [State] objects can\n spontaneously request to rebuild their subtree by callings their\n [setState] method, which indicates that some of their internal state\n has changed in a way that might impact the user interface in this\n subtree.\n * During this time, a parent widget might rebuild and request that this\n location in the tree update to display a new widget with the same\n [runtimeType] and [Widget.key]. When this happens, the framework will\n update the [widget] property to refer to the new widget and then call the\n [didUpdateWidget] method with the previous widget as an argument. [State]\n objects should override [didUpdateWidget] to respond to changes in their\n associated widget (e.g., to start implicit animations). The framework\n always calls [build] after calling [didUpdateWidget], which means any\n calls to [setState] in [didUpdateWidget] are redundant.\n * During development, if a hot reload occurs (whether initiated from the\n command line `flutter` tool by pressing `r`, or from an IDE), the\n [reassemble] method is called. This provides an opportunity to\n reinitialize any data that was prepared in the [initState] method.\n * If the subtree containing the [State] object is removed from the tree\n (e.g., because the parent built a widget with a different [runtimeType]\n or [Widget.key]), the framework calls the [deactivate] method. Subclasses\n should override this method to clean up any links between this object\n and other elements in the tree (e.g. if you have provided an ancestor\n with a pointer to a descendant's [RenderObject]).\n * At this point, the framework might reinsert this subtree into another\n part of the tree. If that happens, the framework will ensure that it\n calls [build] to give the [State] object a chance to adapt to its new\n location in the tree. If the framework does reinsert this subtree, it\n will do so before the end of the animation frame in which the subtree was\n removed from the tree. For this reason, [State] objects can defer\n releasing most resources until the framework calls their [dispose]\n method.\n * If the framework does not reinsert this subtree by the end of the current\n animation frame, the framework will call [dispose], which indicates that\n this [State] object will never build again. Subclasses should override\n this method to release any resources retained by this object (e.g.,\n stop any active animations).\n * After the framework calls [dispose], the [State] object is considered\n unmounted and the [mounted] property is false. It is an error to call\n [setState] at this point. This stage of the lifecycle is terminal: there\n is no way to remount a [State] object that has been disposed.\n\nSee also:\n\n * [StatefulWidget], where the current configuration of a [State] is hosted,\n and whose documentation has sample code for [State].\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "State" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Title", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that describes this app in the operating system.", "detail": "", "kind": 7, "label": "Title" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls a scrollable widget.\n\nScroll controllers are typically stored as member variables in [State]\nobjects and are reused in each [State.build]. A single scroll controller can\nbe used to control multiple scrollable widgets, but some operations, such\nas reading the scroll [offset], require the controller to be used with a\nsingle scrollable widget.\n\nA scroll controller creates a [ScrollPosition] to manage the state specific\nto an individual [Scrollable] widget. To use a custom [ScrollPosition],\nsubclass [ScrollController] and override [createScrollPosition].\n\nA [ScrollController] is a [Listenable]. It notifies its listeners whenever\nany of the attached [ScrollPosition]s notify _their_ listeners (i.e.\nwhenever any of them scroll). It does not notify its listeners when the list\nof attached [ScrollPosition]s changes.\n\nTypically used with [ListView], [GridView], [CustomScrollView].\n\nSee also:\n\n * [ListView], [GridView], [CustomScrollView], which can be controlled by a\n [ScrollController].\n * [Scrollable], which is the lower-level widget that creates and associates\n [ScrollPosition] objects with [ScrollController] objects.\n * [PageController], which is an analogous object for controlling a\n [PageView].\n * [ScrollPosition], which manages the scroll offset for an individual\n scrolling widget.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's orientation\n(distinct from the device orientation).\n\nSee also:\n\n * [LayoutBuilder], which exposes the complete constraints, not just the\n orientation.\n * [CustomSingleChildLayout], which positions its child during layout.\n * [CustomMultiChildLayout], with which you can define the precise layout\n of a list of children during the layout phase.\n * [MediaQueryData.orientation], which exposes whether the device is in\n landscape or portrait mode.", "detail": "", "kind": 7, "label": "OrientationBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expanded", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that expands a child of a [Row], [Column], or [Flex]\nso that the child fills the available space.\n\nUsing an [Expanded] widget makes a child of a [Row], [Column], or [Flex]\nexpand to fill the available space along the main axis (e.g., horizontally for\na [Row] or vertically for a [Column]). If multiple children are expanded,\nthe available space is divided among them according to the [flex] factor.\n\nAn [Expanded] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Expanded] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\n\nThis example shows how to use an [Expanded] widget in a [Column] so that\nit's middle child, a [Container] here, expands to fill the space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Column Sample'),\n ),\n body: Center(\n child: Column(\n children: <Widget>[\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n Expanded(\n child: Container(\n color: Colors.blue,\n width: 100,\n ),\n ),\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n ],\n ),\n ),\n );\n}\n```\n\nThis example shows how to use an [Expanded] widget in a [Row] with multiple\nchildren expanded, utilizing the [flex] factor to prioritize available space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Row Sample'),\n ),\n body: Center(\n child: Row(\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n Container(\n color: Colors.blue,\n height: 100,\n width: 50,\n ),\n Expanded(\n flex: 1,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Flexible], which does not force the child to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Expanded" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that uses a single child layout model.\n\nSee also:\n\n * [ListView], which is a [BoxScrollView] that uses a linear layout model.\n * [GridView], which is a [BoxScrollView] that uses a 2D layout model.\n * [CustomScrollView], which can combine multiple child layout models into a\n single scroll view.", "detail": "", "kind": 7, "label": "BoxScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The text style to apply to descendant [Text] widgets without explicit style.", "detail": "", "kind": 7, "label": "DefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BallisticScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on a physics [Simulation].\n\nA [BallisticScrollActivity] is typically used when the user lifts their\nfinger off the screen to continue the scrolling gesture with the current velocity.\n\n[BallisticScrollActivity] is also used to restore a scroll view to a valid\nscroll offset when the geometry of the scroll view changes. In these\nsituations, the [Simulation] typically starts with a zero velocity.\n\nSee also:\n\n * [DrivenScrollActivity], which animates a scroll view based on a set of\n animation parameters.", "detail": "", "kind": 7, "label": "BallisticScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenVisitor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks passed to [AnimatedWidgetBaseState.forEachTween].", "detail": "(Tween<T> tween, T targetValue, TweenConstructor<T> constructor) → Tween<T>", "kind": 7, "label": "TweenVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints a [Banner].", "detail": "", "kind": 7, "label": "BannerPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two relative rects.\n\nThis class specializes the interpolation of [Tween<RelativeRect>] to\nuse [RelativeRect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RelativeRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has mutable state.\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\nA stateful widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\nStateful widgets are useful when the part of the user interface you are\ndescribing can change dynamically, e.g. due to having an internal\nclock-driven state, or depending on some system state. For compositions that\ndepend only on the configuration information in the object itself and the\n[BuildContext] in which the widget is inflated, consider using\n[StatelessWidget].\n\n\n[StatefulWidget] instances themselves are immutable and store their mutable\nstate either in separate [State] objects that are created by the\n[createState] method, or in objects to which that [State] subscribes, for\nexample [Stream] or [ChangeNotifier] objects, to which references are stored\nin final fields on the [StatefulWidget] itself.\n\nThe framework calls [createState] whenever it inflates a\n[StatefulWidget], which means that multiple [State] objects might be\nassociated with the same [StatefulWidget] if that widget has been inserted\ninto the tree in multiple places. Similarly, if a [StatefulWidget] is\nremoved from the tree and later inserted in to the tree again, the framework\nwill call [createState] again to create a fresh [State] object, simplifying\nthe lifecycle of [State] objects.\n\nA [StatefulWidget] keeps the same [State] object when moving from one\nlocation in the tree to another if its creator used a [GlobalKey] for its\n[key]. Because a widget with a [GlobalKey] can be used in at most one\nlocation in the tree, a widget that uses a [GlobalKey] has at most one\nassociated element. The framework takes advantage of this property when\nmoving a widget with a global key from one location in the tree to another\nby grafting the (unique) subtree associated with that widget from the old\nlocation to the new location (instead of recreating the subtree at the new\nlocation). The [State] objects associated with [StatefulWidget] are grafted\nalong with the rest of the subtree, which means the [State] object is reused\n(instead of being recreated) in the new location. However, in order to be\neligible for grafting, the widget must be inserted into the new location in\nthe same animation frame in which it was removed from the old location.\n\n## Performance considerations\n\nThere are two primary categories of [StatefulWidget]s.\n\nThe first is one which allocates resources in [State.initState] and disposes\nof them in [State.dispose], but which does not depend on [InheritedWidget]s\nor call [State.setState]. Such widgets are commonly used at the root of an\napplication or page, and communicate with subwidgets via [ChangeNotifier]s,\n[Stream]s, or other such objects. Stateful widgets following such a pattern\nare relatively cheap (in terms of CPU and GPU cycles), because they are\nbuilt once then never update. They can, therefore, have somewhat complicated\nand deep build methods.\n\nThe second category is widgets that use [State.setState] or depend on\n[InheritedWidget]s. These will typically rebuild many times during the\napplication's lifetime, and it is therefore important to minimize the impact\nof rebuilding such a widget. (They may also use [State.initState] or\n[State.didChangeDependencies] and allocate resources, but the important part\nis that they rebuild.)\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateful widget:\n\n * Push the state to the leaves. For example, if your page has a ticking\n clock, rather than putting the state at the top of the page and\n rebuilding the entire page each time the clock ticks, create a dedicated\n clock widget that only updates itself.\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. Ideally, a stateful widget would only create a\n single widget, and that widget would be a [RenderObjectWidget].\n (Obviously this isn't always practical, but the closer a widget gets to\n this ideal, the more efficient it will be.)\n\n * If a subtree does not change, cache the widget that represents that\n subtree and re-use it each time it can be used. It is massively more\n efficient for a widget to be re-used than for a new (but\n identically-configured) widget to be created. Factoring out the stateful\n part into a widget that takes a child argument is a common way of doing\n this.\n\n * Use `const` widgets where possible. (This is equivalent to caching a\n widget and re-using it.)\n\n * Avoid changing the depth of any created subtrees or changing the type of\n any widgets in the subtree. For example, rather than returning either the\n child or the child wrapped in an [IgnorePointer], always wrap the child\n widget in an [IgnorePointer] and control the [IgnorePointer.ignoring]\n property. This is because changing the depth of the subtree requires\n rebuilding, laying out, and painting the entire subtree, whereas just\n changing the property will require the least possible change to the\n render tree (in the case of [IgnorePointer], for example, no layout or\n repaint is necessary at all).\n\n * If the depth must be changed for some reason, consider wrapping the\n common parts of the subtrees in widgets that have a [GlobalKey] that\n remains consistent for the life of the stateful widget. (The\n [KeyedSubtree] widget may be useful for this purpose if no other widget\n can conveniently be assigned the key.)\n\n\nThis is a skeleton of a stateful widget subclass called `YellowBird`.\n\nIn this example. the [State] has no actual state. State is normally\nrepresented as private member fields. Also, normally widgets have more\nconstructor arguments, each of which corresponds to a `final` property.\n\n```dart\nclass YellowBird extends StatefulWidget {\n const YellowBird({ Key key }) : super(key: key);\n\n @override\n _YellowBirdState createState() => _YellowBirdState();\n}\n\nclass _YellowBirdState extends State<YellowBird> {\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFFFFE306));\n }\n}\n```\n\nThis example shows the more generic widget `Bird` which can be given a\ncolor and a child, and which has some internal state with a method that\ncan be called to mutate it:\n\n```dart\nclass Bird extends StatefulWidget {\n const Bird({\n Key key,\n this.color = const Color(0xFFFFE306),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n _BirdState createState() => _BirdState();\n}\n\nclass _BirdState extends State<Bird> {\n double _size = 1.0;\n\n void grow() {\n setState(() { _size += 0.1; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(\n color: widget.color,\n transform: Matrix4.diagonal3Values(_size, _size, 1.0),\n child: widget.child,\n );\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [State], where the logic behind a [StatefulWidget] is hosted.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatefulWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. Rather than receiving\ntheir children as an explicit [List], they receive their children using a\n[SliverChildDelegate].\n\nIt's uncommon to subclass [SliverChildDelegate]. Instead, consider using one\nof the existing subclasses that provide adaptors to builder callbacks or\nexplicit child lists.\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as in the\ncase of [SliverChildListDelegate]) or lazily provided ones (such as in the\ncase of [SliverChildBuilderDelegate]).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree, states\nand render objects are destroyed. A new child at the same position in the\nsliver will be lazily recreated along with new elements, states and render\nobjects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the sliver child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the sliver child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child widget\n subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the sliver child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the sliver keeps the child's\n render object (and by extension, its associated elements and states) in a\n cache list instead of destroying them. When scrolled back into view, the\n render object is repainted as-is (if it wasn't marked dirty in the\n interim).\n\n This only works if the [SliverChildDelegate] subclasses don't wrap the\n child widget subtree with other widgets such as [AutomaticKeepAlive] and\n [RepaintBoundary] via `addAutomaticKeepAlives` and\n `addRepaintBoundaries`.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default in\n [SliverChildListDelegate] or [SliverChildListDelegate]). Instead of\n unconditionally caching the child element subtree when scrolling\n off-screen like [KeepAlive], [AutomaticKeepAlive] can let whether to\n cache the subtree be determined by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its sliver child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the sliver child element subtree will be\n destroyed when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive by\n using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.", "detail": "", "kind": 7, "label": "SliverChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildListDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using an\nexplicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollIndicatorNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that an [GlowingOverscrollIndicator] will start showing an\noverscroll indication.\n\nTo prevent the indicator from showing the indication, call [disallowGlow] on\nthe notification.\n\nSee also:\n\n * [GlowingOverscrollIndicator], which generates this type of notification.", "detail": "", "kind": 7, "label": "OverscrollIndicatorNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget with a preferred size.\n\nThis widget does not impose any constraints on its child, and it doesn't\naffect the child's layout in any way. It just advertises a preferred size\nwhich can be used by the parent.\n\nSee also:\n\n * [AppBar.bottom] and [Scaffold.appBar], which require preferred size widgets.\n * [PreferredSizeWidget], the interface which this widget implements to expose\n its preferred size.\n * [AppBar] and [TabBar], which implement PreferredSizeWidget.", "detail": "", "kind": 7, "label": "PreferredSize" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [InheritedWidget] that's intended to be used as the base class for\nmodels whose dependents may only depend on one part or \"aspect\" of the\noverall model.\n\nAn inherited widget's dependents are unconditionally rebuilt when the\ninherited widget changes per [InheritedWidget.updateShouldNotify].\nThis widget is similar except that dependents aren't rebuilt\nunconditionally.\n\nWidgets that depend on an [InheritedModel] qualify their dependence\nwith a value that indicates what \"aspect\" of the model they depend\non. When the model is rebuilt, dependents will also be rebuilt, but\nonly if there was a change in the model that corresponds to the aspect\nthey provided.\n\nThe type parameter `T` is the type of the model aspect objects.\n\n\nWidgets create a dependency on an [InheritedModel] with a static method:\n[InheritedModel.inheritFrom]. This method's `context` parameter\ndefines the subtree that will be rebuilt when the model changes.\nTypically the `inheritFrom` method is called from a model-specific\nstatic `of` method. For example:\n\n```dart\nclass MyModel extends InheritedModel<String> {\n // ...\n static MyModel of(BuildContext context, String aspect) {\n return InheritedModel.inheritFrom<MyModel>(context, aspect: aspect);\n }\n}\n```\n\nCalling `MyModel.of(context, 'foo')` means that `context` should only\nbe rebuilt when the `foo` aspect of `MyModel` changes. If the aspect\nis null, then the model supports all aspects.\n\nWhen the inherited model is rebuilt the [updateShouldNotify] and\n[updateShouldNotifyDependent] methods are used to decide what\nshould be rebuilt. If [updateShouldNotify] returns true, then the\ninherited model's [updateShouldNotifyDependent] method is tested for\neach dependent and the set of aspect objects it depends on.\nThe [updateShouldNotifyDependent] method must compare the set of aspect\ndependencies with the changes in the model itself.\n\nFor example:\n\n```dart\nclass ABModel extends InheritedModel<String> {\n ABModel({ this.a, this.b, Widget child }) : super(child: child);\n\n final int a;\n final int b;\n\n @override\n bool updateShouldNotify(ABModel old) {\n return a != old.a || b != old.b;\n }\n\n @override\n bool updateShouldNotifyDependent(ABModel old, Set<String> aspects) {\n return (a != old.a && aspects.contains('a'))\n || (b != old.b && aspects.contains('b'))\n }\n\n // ...\n}\n```\n\nIn the previous example the dependencies checked by\n[updateShouldNotifyDependent] are just the aspect strings passed to\n`inheritFromWidgetOfExactType`. They're represented as a [Set] because\none Widget can depend on more than one aspect of the model.\nIf a widget depends on the model but doesn't specify an aspect,\nthen changes in the model will cause the widget to be rebuilt\nunconditionally.\n\nSee also:\n\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.", "detail": "", "kind": 7, "label": "InheritedModel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollbarPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomPainter] for painting scrollbars.\n\nUnlike [CustomPainter]s that subclasses [CustomPainter] and only repaint\nwhen [shouldRepaint] returns true (which requires this [CustomPainter] to\nbe rebuilt), this painter has the added optimization of repainting and not\nrebuilding when:\n\n * the scroll position changes; and\n * when the scrollbar fades away.\n\nCalling [update] with the new [ScrollMetrics] will repaint the new scrollbar\nposition.\n\nUpdating the value on the provided [fadeoutOpacityAnimation] will repaint\nwith the new opacity.\n\nYou must call [dispose] on this [ScrollbarPainter] when it's no longer used.\n\nSee also:\n\n * [Scrollbar] for a widget showing a scrollbar around a [Scrollable] in the\n Material Design style.\n * [CupertinoScrollbar] for a widget showing a scrollbar around a\n [Scrollable] in the iOS style.", "detail": "", "kind": 7, "label": "ScrollbarPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that displays widgets in the [Navigator]'s [Overlay].", "detail": "", "kind": 7, "label": "OverlayRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListItemBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedList].", "detail": "(BuildContext context, int index, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionControls", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for building the selection UI, to be provided by the\nimplementor of the toolbar widget.\n\nOverride text operations such as [handleCut] if needed.", "detail": "", "kind": 7, "label": "TextSelectionControls" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the opacity of a widget.\n\nFor a widget that automatically animates between the sizes of two children,\nfading between them, see [AnimatedCrossFade].\n\n\nHere's an illustration of the [FadeTransition] widget, with it's [opacity]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:", "detail": "", "kind": 7, "label": "FadeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that establishes a page storage bucket for this widget subtree.", "detail": "", "kind": 7, "label": "PageStorage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPadding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Padding] which automatically transitions the\nindentation over a given duration whenever the given inset changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.", "detail": "", "kind": 7, "label": "AnimatedPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for localized resource values for the lowest levels of the Flutter\nframework.\n\nIn particular, this maps locales to a specific [Directionality] using the\n[textDirection] property.\n\nSee also:\n\n * [DefaultWidgetsLocalizations], which implements this interface and\n supports a variety of locales.", "detail": "", "kind": 7, "label": "WidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Orientation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether in portrait or landscape.", "detail": "", "kind": 13, "label": "Orientation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that listens for [Notification]s bubbling up the tree.\n\nNotifications will trigger the [onNotification] callback only if their\n[runtimeType] is a subtype of `T`.\n\nTo dispatch notifications, use the [Notification.dispatch] method.", "detail": "", "kind": 7, "label": "NotificationListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics used by a [PageView].\n\nThese physics cause the page view to snap to page boundaries.\n\nSee also:\n\n * [ScrollPhysics], the base class which defines the API for scrolling\n physics.\n * [PageView.physics], which can override the physics used by a page view.", "detail": "", "kind": 7, "label": "PageScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers.\n\n`T` is the type of gesture recognizer this class manages.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal group of cells in a [Table].\n\nEvery row in a table must have the same number of children.\n\nThe alignment of individual cells in a row can be controlled using a\n[TableCell].", "detail": "", "kind": 7, "label": "TableRow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollUpdateNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has changed its scroll position.\n\nSee also:\n\n * [OverscrollNotification], which indicates that a [Scrollable] widget\n has not changed its scroll position because the change would have caused\n its scroll position to go outside its scroll bounds.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollUpdateNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [ScrollPosition] to a scroll view with fixed item sizes.\n\nThe metrics are available on [ScrollNotification]s generated from a scroll\nviews such as [ListWheelScrollView]s with a [FixedExtentScrollController] and\nexposes the current [itemIndex] and the scroll view's [itemExtent].\n\n`FixedExtent` refers to the fact that the scrollable items have the same size.\nThis is distinct from `Fixed` in the parent class name's [FixedScrollMetric]\nwhich refers to its immutability.", "detail": "", "kind": 7, "label": "FixedExtentMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that renders an exception's message.\n\nThis widget is used when a build method fails, to help with determining\nwhere the problem lies. Exceptions are also logged to the console, which you\ncan read using `flutter logs`. The console will also include additional\ninformation such as the stack trace for the exception.", "detail": "", "kind": 7, "label": "ErrorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFade", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that cross-fades between two given children and animates itself\nbetween their sizes.\n\nThe animation is controlled through the [crossFadeState] parameter.\n[firstCurve] and [secondCurve] represent the opacity curves of the two\nchildren. The [firstCurve] is inverted, i.e. it fades out when providing a\ngrowing curve like [Curves.linear]. The [sizeCurve] is the curve used to\nanimate between the size of the fading-out child and the size of the\nfading-in child.\n\nThis widget is intended to be used to fade a pair of widgets with the same\nwidth. In the case where the two children have different heights, the\nanimation crops overflowing children during the animation by aligning their\ntop edge, which means that the bottom will be clipped.\n\nThe animation is automatically triggered when an existing\n[AnimatedCrossFade] is rebuilt with a different value for the\n[crossFadeState] property.\n\n\nThis code fades between two representations of the Flutter logo. It depends\non a boolean field `_first`; when `_first` is true, the first logo is shown,\notherwise the second logo is shown. When the field changes state, the\n[AnimatedCrossFade] widget cross-fades between the two forms of the logo\nover three seconds.\n\n```dart\nAnimatedCrossFade(\n duration: const Duration(seconds: 3),\n firstChild: const FlutterLogo(style: FlutterLogoStyle.horizontal, size: 100.0),\n secondChild: const FlutterLogo(style: FlutterLogoStyle.stacked, size: 100.0),\n crossFadeState: _first ? CrossFadeState.showFirst : CrossFadeState.showSecond,\n)\n```\n\nSee also:\n\n * [AnimatedSize], the lower-level widget which [AnimatedCrossFade] uses to\n automatically change size.\n * [AnimatedSwitcher], which switches out a child for a new one with a\n customizable transition.", "detail": "", "kind": 7, "label": "AnimatedCrossFade" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flexible", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Row], [Column], or [Flex] flexes.\n\nUsing a [Flexible] widget gives a child of a [Row], [Column], or [Flex]\nthe flexibility to expand to fill the available space in the main axis\n(e.g., horizontally for a [Row] or vertically for a [Column]), but, unlike\n[Expanded], [Flexible] does not require the child to fill the available\nspace.\n\nA [Flexible] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Flexible] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\nSee also:\n\n * [Expanded], which forces the child to expand to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flexible" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrivenScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on animation parameters.\n\nFor example, a [DrivenScrollActivity] is used to implement\n[ScrollController.animateTo].\n\nSee also:\n\n * [BallisticScrollActivity], which animates a scroll view based on a\n physics [Simulation].", "detail": "", "kind": 7, "label": "DrivenScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Spacer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Spacer creates an adjustable, empty spacer that can be used to tune the\nspacing between widgets in a [Flex] container, like [Row] or [Column].\n\nThe [Spacer] widget will take up any available space, so setting the\n[Flex.mainAxisAlignment] on a flex container that contains a [Spacer] to\n[MainAxisAlignment.spaceAround], [MainAxisAlignment.spaceBetween], or\n[MainAxisAlignment.spaceEvenly] will not have any visible effect: the\n[Spacer] has taken up all of the additional space, therefore there is none\nleft to redistribute.\n\n\n```dart\nRow(\n children: <Widget>[\n Text('Begin'),\n Spacer(), // Defaults to a flex of one.\n Text('Middle'),\n // Gives twice the space between Middle and End than Begin and Middle.\n Spacer(flex: 2),\n Text('End'),\n ],\n)\n```\n\nSee also:\n\n * [Row] and [Column], which are the most common containers to use a Spacer\n in.\n * [SizedBox], to create a box with a specific size and an optional child.", "detail": "", "kind": 7, "label": "Spacer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollStartNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has started scrolling.\n\nSee also:\n\n * [ScrollEndNotification], which indicates that scrolling has stopped.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollStartNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [Viewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "NestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Row", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a horizontal array.\n\nTo cause a child to expand to fill the available horizontal space, wrap the\nchild in an [Expanded] widget.\n\nThe [Row] widget does not scroll (and in general it is considered an error\nto have more children in a [Row] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a vertical variant, see [Column].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example divides the available space into three (horizontally), and\nplaces text centered in the first two cells and the Flutter logo centered in\nthe third:\n\n```dart\nRow(\n children: <Widget>[\n Expanded(\n child: Text('Deliver features faster', textAlign: TextAlign.center),\n ),\n Expanded(\n child: Text('Craft beautiful UIs', textAlign: TextAlign.center),\n ),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\n## Troubleshooting\n\n### Why does my row have a yellow and black warning stripe?\n\nIf the non-flexible contents of the row (those that are not wrapped in\n[Expanded] or [Flexible] widgets) are together wider than the row itself,\nthen the row is said to have overflowed. When a row overflows, the row does\nnot have any remaining space to share between its [Expanded] and [Flexible]\nchildren. The row reports this by drawing a yellow and black striped\nwarning box on the edge that is overflowing. If there is room on the outside\nof the row, the amount of overflow is printed in red lettering.\n\n\n#### Story time\n\nSuppose, for instance, that you had this code:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nThe row first asks its first child, the [FlutterLogo], to lay out, at\nwhatever size the logo would like. The logo is friendly and happily decides\nto be 24 pixels to a side. This leaves lots of room for the next child. The\nrow then asks that next child, the text, to lay out, at whatever size it\nthinks is best.\n\nAt this point, the text, not knowing how wide is too wide, says \"Ok, I will\nbe thiiiiiiiiiiiiiiiiiiiis wide.\", and goes well beyond the space that the\nrow has available, not wrapping. The row responds, \"That's not fair, now I\nhave no more room available for my other children!\", and gets angry and\nsprouts a yellow and black strip.\n\nThe fix is to wrap the second child in an [Expanded] widget, which tells the\nrow that the child should be given the remaining room:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Expanded(\n child: Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n ),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nNow, the row first asks the logo to lay out, and then asks the _icon_ to lay\nout. The [Icon], like the logo, is happy to take on a reasonable size (also\n24 pixels, not coincidentally, since both [FlutterLogo] and [Icon] honor the\nambient [IconTheme]). This leaves some room left over, and now the row tells\nthe text exactly how wide to be: the exact width of the remaining space. The\ntext, now happy to comply to a reasonable request, wraps the text within\nthat width, and you end up with a paragraph split over several lines.\n\n## Layout algorithm\n\n_This section describes how a [Row] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Row] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded horizontal constraints and the incoming\n vertical constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight vertical constraints that\n match the incoming max height.\n2. Divide the remaining horizontal space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of horizontal space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same vertical constraints\n as in step 1, but instead of using unbounded horizontal constraints, use\n horizontal constraints based on the amount of space allocated in step 2.\n Children with [Flexible.fit] properties that are [FlexFit.tight] are\n given tight constraints (i.e., forced to fill the allocated space), and\n children with [Flexible.fit] properties that are [FlexFit.loose] are\n given loose constraints (i.e., not forced to fill the allocated space).\n4. The height of the [Row] is the maximum height of the children (which will\n always satisfy the incoming vertical constraints).\n5. The width of the [Row] is determined by the [mainAxisSize] property. If\n the [mainAxisSize] property is [MainAxisSize.max], then the width of the\n [Row] is the max width of the incoming constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the width of the [Row] is the sum\n of widths of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any horizontal\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Column], for a vertical equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may by sized smaller (leaving some remaining room unused).\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Row" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A snapping physics that always lands directly on items instead of anywhere\nwithin the scroll extent.\n\nBehaves similarly to a slot machine wheel except the ballistics simulation\nnever overshoots and rolls back within a single item if it's to settle on\nthat item.\n\nMust be used with a scrollable that uses a [FixedExtentScrollController].\n\nDefers back to the parent beyond the scroll extents.", "detail": "", "kind": 7, "label": "FixedExtentScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveHandle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Listenable] which can be manually triggered.\n\nUsed with [KeepAliveNotification] objects as their\n[KeepAliveNotification.handle].\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses a\n[KeepAliveHandle] internally.", "detail": "", "kind": 7, "label": "KeepAliveHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SafeArea", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by sufficient padding to avoid intrusions by\nthe operating system.\n\nFor example, this will indent the child by enough to avoid the status bar at\nthe top of the screen.\n\nIt will also indent the child by the amount necessary to avoid The Notch on\nthe iPhone X, or other similar creative physical features of the display.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\n\nSee also:\n\n * [SliverSafeArea], for insetting slivers to avoid operating system\n intrusions.\n * [Padding], for insetting widgets in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedOpacity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Opacity] which automatically transitions the child's\nopacity over a given duration whenever the given opacity changes.\n\nAnimating an opacity is relatively expensive because it requires painting\nthe child into an intermediate buffer.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\n\n```dart\nclass LogoFade extends StatefulWidget {\n @override\n createState() => LogoFadeState();\n}\n\nclass LogoFadeState extends State<LogoFade> {\n double opacityLevel = 1.0;\n\n void _changeOpacity() {\n setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedOpacity(\n opacity: opacityLevel,\n duration: Duration(seconds: 3),\n child: FlutterLogo(),\n ),\n RaisedButton(\n child: Text('Fade Logo'),\n onPressed: _changeOpacity,\n ),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [FadeTransition], an explicitly animated version of this widget, where\n an [Animation] is provided by the caller instead of being built in.", "detail": "", "kind": 7, "label": "AnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboardListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls a callback whenever the user presses or releases a key\non a keyboard.\n\nA [RawKeyboardListener] is useful for listening to raw key events and\nhardware buttons that are represented as keys. Typically used by games and\nother apps that use keyboards for purposes other than text entry.\n\nFor text entry, consider using a [EditableText], which integrates with\non-screen keyboards and input method editors (IMEs).\n\nSee also:\n\n * [EditableText], which should be used instead of this widget for text\n entry.", "detail": "", "kind": 7, "label": "RawKeyboardListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedDefaultTextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [DefaultTextStyle] which automatically transitions the\ndefault text style (the text style to apply to descendant [Text] widgets\nwithout explicit style) over a given duration whenever the given style\nchanges.\n\nThe [textAlign], [softWrap], [textOverflow], and [maxLines] properties are\nnot animated and take effect immediately when changed.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].", "detail": "", "kind": 7, "label": "AnimatedDefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that composes other [Element]s.\n\nRather than creating a [RenderObject] directly, a [ComponentElement] creates\n[RenderObject]s indirectly by creating other [Element]s.\n\nContrast with [RenderObjectElement].", "detail": "", "kind": 7, "label": "ComponentElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleListResolutionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeListResolutionCallback].\n\nA [LocaleListResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the list of\nlocales for the device.\n\nThe [locales] list is the device's preferred locales when the app started, or the\ndevice's preferred locales the user selected after the app was started. This list\nis in order of preference. If this list is null or empty, then Flutter has not yet\nreceived the locale information from the platform. The [supportedLocales] parameter\nis just the value of [WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleResolutionCallback], which takes only one default locale (instead of a list)\n and is attempted only after this callback fails or is null. [LocaleListResolutionCallback]\n is recommended over [LocaleResolutionCallback].", "detail": "(List<Locale> locales, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleListResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place in an [Overlay] that can contain a widget.\n\nOverlay entries are inserted into an [Overlay] using the\n[OverlayState.insert] or [OverlayState.insertAll] functions. To find the\nclosest enclosing overlay for a given [BuildContext], use the [Overlay.of]\nfunction.\n\nAn overlay entry can be in at most one overlay at a time. To remove an entry\nfrom its overlay, call the [remove] function on the overlay entry.\n\nBecause an [Overlay] uses a [Stack] layout, overlay entries can use\n[Positioned] and [AnimatedPositioned] to position themselves within the\noverlay.\n\nFor example, [Draggable] uses an [OverlayEntry] to show the drag avatar that\nfollows the user's finger across the screen after the drag begins. Using the\noverlay to display the drag avatar lets the avatar float over the other\nwidgets in the app. As the user's finger moves, draggable calls\n[markNeedsBuild] on the overlay entry to cause it to rebuild. It its build,\nthe entry includes a [Positioned] with its top and left property set to\nposition the drag avatar near the user's finger. When the drag is over,\n[Draggable] removes the entry from the overlay to remove the drag avatar\nfrom view.\n\nBy default, if there is an entirely [opaque] entry over this one, then this\none will not be included in the widget tree (in particular, stateful widgets\nwithin the overlay entry will not be instantiated). To ensure that your\noverlay entry is still built even if it is not visible, set [maintainState]\nto true. This is more expensive, so should be done with care. In particular,\nif widgets in an overlay entry with [maintainState] set to true repeatedly\ncall [State.setState], the user's battery will be drained unnecessarily.\n\nSee also:\n\n * [Overlay]\n * [OverlayState]\n * [WidgetsApp]\n * [MaterialApp]", "detail": "", "kind": 7, "label": "OverlayEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HoldScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing but can be released to resume\nnormal idle behavior.\n\nThis is used while the user is touching the [Scrollable] but before the\ntouch has become a [Drag].\n\nFor the purposes of [ScrollNotification]s, this activity does not constitute\nscrolling, and does not prevent the user from interacting with the contents\nof the [Scrollable] (unlike when a drag has begun or there is a scroll\nanimation underway).", "detail": "", "kind": 7, "label": "HoldScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a [Scrollable]'s contents, useful for modeling the state\nof its viewport.\n\nThis class defines a current position, [pixels], and a range of values\nconsidered \"in bounds\" for that position. The range has a minimum value at\n[minScrollExtent] and a maximum value at [maxScrollExtent] (inclusive). The\nviewport scrolls in the direction and axis described by [axisDirection]\nand [axis].\n\nThe [outOfRange] getter will return true if [pixels] is outside this defined\nrange. The [atEdge] getter will return true if the [pixels] position equals\neither the [minScrollExtent] or the [maxScrollExtent].\n\nThe dimensions of the viewport in the given [axis] are described by\n[viewportDimension].\n\nThe above values are also exposed in terms of [extentBefore],\n[extentInside], and [extentAfter], which may be more useful for use cases\nsuch as scroll bars; for example, see [Scrollbar].\n\nSee also:\n\n * [FixedScrollMetrics], which is an immutable object that implements this\n interface.", "detail": "", "kind": 7, "label": "ScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAliveClientMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin with convenience methods for clients of [AutomaticKeepAlive]. Used\nwith [State] subclasses.\n\nSubclasses must implement [wantKeepAlive], and their [build] methods must\ncall `super.build` (the return value will always return null, and should be\nignored).\n\nThen, whenever [wantKeepAlive]'s value changes (or might change), the\nsubclass should call [updateKeepAlive].\n\nThe type argument `T` is the type of the [StatefulWidget] subclass of the\n[State] into which this class is being mixed.\n\nSee also:\n\n * [AutomaticKeepAlive], which listens to messages from this mixin.\n * [KeepAliveNotification], the notifications sent by this mixin.", "detail": "", "kind": 7, "label": "AutomaticKeepAliveClientMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offstage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that lays the child out as if it was in the tree, but without\npainting anything, without making the child available for hit testing, and\nwithout taking any room in the parent.\n\nAnimations continue to run in offstage children, and therefore use battery\nand CPU time, regardless of whether the animations end up being visible.\n\n[Offstage] can be used to measure the dimensions of a widget without\nbringing it on screen (yet). To hide a widget from view while it is not\nneeded, prefer removing the widget from the tree entirely rather than\nkeeping it alive in an [Offstage] subtree.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly).\n * [TickerMode], which can be used to disable animations in a subtree.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Offstage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state of connection to an asynchronous computation.\n\nSee also:\n\n * [AsyncSnapshot], which augments a connection state with information\n received from the asynchronous computation.", "detail": "", "kind": 13, "label": "ConnectionState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ParentDataWidget] as its configuration.", "detail": "", "kind": 7, "label": "ParentDataElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenableBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget whose content stays synced with a [ValueListenable].\n\nGiven a [ValueListenable<T>] and a [builder] which builds widgets from\nconcrete values of `T`, this class will automatically register itself as a\nlistener of the [ValueListenable] and call the [builder] with updated values\nwhen the value changes.\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nvalue of the [ValueListenable], it's more efficient to build that subtree\nonce instead of rebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\n[ValueListenableBuilder] will pass it back to your [builder] function so\nthat you can incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis sample shows how you could use a [ValueListenableBuilder] instead of\nsetting state on the whole [Scaffold] in the default `flutter create` app.\n\n```dart\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State<MyHomePage> {\n final ValueNotifier<int> _counter = ValueNotifier<int>(0);\n final Widget goodJob = const Text('Good job!');\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title)\n ),\n body: Center(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pushed the button this many times:'),\n ValueListenableBuilder(\n builder: (BuildContext context, int value, Widget child) {\n // This builder will only get called when the _counter\n // is updated.\n return Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: <Widget>[\n Text('$value'),\n child,\n ],\n );\n },\n valueListenable: _counter,\n // The child parameter is most helpful if the child is\n // expensive to build and does not depend on the value from\n // the notifier.\n child: goodJob,\n )\n ],\n ),\n ),\n floatingActionButton: FloatingActionButton(\n child: Icon(Icons.plus_one),\n onPressed: () => _counter.value += 1,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedBuilder], which also triggers rebuilds from a [Listenable]\n without passing back a specific value from a [ValueListenable].\n * [NotificationListener], which lets you rebuild based on [Notification]\n coming from its descendant widgets rather than a [ValueListenable] that\n you have a direct reference to.\n * [StreamBuilder], where a builder can depend on a [Stream] rather than\n a [ValueListenable] for more advanced use cases.", "detail": "", "kind": 7, "label": "ValueListenableBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route with entrance and exit transitions.", "detail": "", "kind": 7, "label": "TransitionRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePageBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's primary contents.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildPage] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) → Widget", "kind": 7, "label": "RoutePageBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of a method that provides a [BuildContext] and\n[ScrollController] for building a widget that may overflow the draggable\n[Axis] of the containing [DraggableScrollSheet].\n\nUsers should apply the [scrollController] to a [ScrollView] subclass, such\nas a [SingleChildScrollView], [ListView] or [GridView], to have the whole\nsheet be draggable.", "detail": "(BuildContext context, ScrollController scrollController) → Widget", "kind": 7, "label": "ScrollableWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that builds a widget given an [Orientation].\n\nUsed by [OrientationBuilder.builder].", "detail": "(BuildContext context, Orientation orientation) → Widget", "kind": 7, "label": "OrientationWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A viewport showing a subset of children on a wheel.\n\nTypically used with [ListWheelScrollView], this viewport is similar to\n[Viewport] in that it shows a subset of children in a scrollable based\non the scrolling offset and the children's dimensions. But uses\n[RenderListWheelViewport] to display the children on a wheel.\n\nSee also:\n\n * [ListWheelScrollView], widget that combines this viewport with a scrollable.\n * [RenderListWheelViewport], the render object that renders the children\n on a wheel.", "detail": "", "kind": 7, "label": "ListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget, e.g. [StatelessWidget.build]\nor [State.build].\n\nUsed by [Builder.builder], [OverlayEntry.builder], etc.\n\nSee also:\n\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [TransitionBuilder], which is similar but also takes a child.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context) → Widget", "kind": 7, "label": "WidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the draggable is dropped.\n\nThe velocity and offset at which the pointer was moving when the draggable\nwas dropped is available in the [DraggableDetails]. Also included in the\n`details` is whether the draggable's [DragTarget] accepted it.\n\nUsed by [Draggable.onDragEnd]", "detail": "(DraggableDetails details) → void", "kind": 7, "label": "DragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the constructor that is called when an error occurs while\nbuilding a widget.\n\nThe argument provides information regarding the cause of the error.\n\nSee also:\n\n * [ErrorWidget.builder], which can be set to override the default\n [ErrorWidget] builder.\n * [FlutterError.reportError], which is typically called with the same\n [FlutterErrorDetails] object immediately prior to [ErrorWidget.builder]\n being called.", "detail": "(FlutterErrorDetails details) → Widget", "kind": 7, "label": "ErrorWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewHeaderSliversBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [NestedScrollView] for building its header.\n\nThe `innerBoxIsScrolled` argument is typically used to control the\n[SliverAppBar.forceElevated] property to ensure that the app bar shows a\nshadow, since it would otherwise not necessarily be aware that it had\ncontent ostensibly below it.", "detail": "(BuildContext context, bool innerBoxIsScrolled) → List<Widget>", "kind": 7, "label": "NestedScrollViewHeaderSliversBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes how [Scrollable] widgets should behave.\n\nUsed by [ScrollConfiguration] to configure the [Scrollable] widgets in a\nsubtree.", "detail": "", "kind": 7, "label": "ScrollBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AspectRatio", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that attempts to size the child to a specific aspect ratio.\n\nThe widget first tries the largest width permitted by the layout\nconstraints. The height of the widget is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The widget will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the widget would\ncontinue iterating through the constraints. If the widget does not\nfind a feasible size after consulting each constraint, the widget\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "AspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetAccept", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for causing a [DragTarget] to accept the given data.\n\nUsed by [DragTarget.onAccept].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that overlays a widget over the current route.", "detail": "", "kind": 7, "label": "PopupRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has a child widget provided to it, instead of building a new\nwidget.\n\nUseful as a base class for other widgets, such as [InheritedWidget] and\n[ParentDataWidget].\n\nSee also:\n\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [ParentDataWidget], for widgets that populate the\n [RenderObject.parentData] slot of their child's [RenderObject] to\n configure the parent widget's layout.\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "ProxyWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleTickerProviderStateMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides a single [Ticker] that is configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create the [AnimationController] in a [State] that only uses a single\n[AnimationController], mix in this class, then pass `vsync: this`\nto the animation controller constructor.\n\nThis mixin only supports vending a single ticker. If you might have multiple\n[AnimationController] objects over the lifetime of the [State], use a full\n[TickerProviderStateMixin] instead.", "detail": "", "kind": 7, "label": "SingleTickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NeverScrollableScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that does not allow the user to scroll.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "NeverScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectionChangedCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the selection change callback used by\n[WidgetInspectorService.selectionChangedCallback].", "detail": "() → void", "kind": 7, "label": "InspectorSelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcher", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that by default does a [FadeTransition] between a new widget and\nthe widget previously set on the [AnimatedSwitcher] as a child.\n\nIf they are swapped fast enough (i.e. before [duration] elapses), more than\none previous child can exist and be transitioning out while the newest one\nis transitioning in.\n\nIf the \"new\" child is the same widget type and key as the \"old\" child, but\nwith different parameters, then [AnimatedSwitcher] will *not* do a\ntransition between them, since as far as the framework is concerned, they\nare the same widget and the existing widget can be updated with the new\nparameters. To force the transition to occur, set a [Key] on each child\nwidget that you wish to be considered unique (typically a [ValueKey] on the\nwidget data that distinguishes this child from the others).\n\nThe same key can be used for a new child as was used for an already-outgoing\nchild; the two will not be considered related. (For example, if a progress\nindicator with key A is first shown, then an image with key B, then another\nprogress indicator with key A again, all in rapid succession, then the old\nprogress indicator and the image will be fading out while a new progress\nindicator is fading in.)\n\n\n```dart\nclass ClickCounter extends StatefulWidget {\n const ClickCounter({Key key}) : super(key: key);\n\n @override\n _ClickCounterState createState() => _ClickCounterState();\n}\n\nclass _ClickCounterState extends State<ClickCounter> {\n int _count = 0;\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Material(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n AnimatedSwitcher(\n duration: const Duration(milliseconds: 500),\n transitionBuilder: (Widget child, Animation<double> animation) {\n return ScaleTransition(child: child, scale: animation);\n },\n child: Text(\n '$_count',\n // This key causes the AnimatedSwitcher to interpret this as a \"new\"\n // child each time the count changes, so that it will begin its animation\n // when the count changes.\n key: ValueKey<int>(_count),\n style: Theme.of(context).textTheme.display1,\n ),\n ),\n RaisedButton(\n child: const Text('Increment'),\n onPressed: () {\n setState(() {\n _count += 1;\n });\n },\n ),\n ],\n ),\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedCrossFade], which only fades between two children, but also\n interpolates their sizes, and is reversible.\n * [FadeTransition] which [AnimatedSwitcher] uses to perform the transition.", "detail": "", "kind": 7, "label": "AnimatedSwitcher" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building the widget representing the form field.\n\nUsed by [FormField.builder].", "detail": "(FormFieldState<T> field) → Widget", "kind": 7, "label": "FormFieldBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Builder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that calls a closure to obtain its child widget.\n\nSee also:\n\n * [StatefulBuilder], a platonic widget which also has state.", "detail": "", "kind": 7, "label": "Builder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPrototypeExtentList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places its box children in a linear array and constrains them\nto have the same extent as a prototype item along the main axis.\n\n[SliverPrototypeExtentList] arranges its children in a line along\nthe main axis starting at offset zero and without gaps. Each child is\nconstrained to the same extent as the [prototypeItem] along the main axis\nand the [SliverConstraints.crossAxisExtent] along the cross axis.\n\n[SliverPrototypeExtentList] is more efficient than [SliverList] because\n[SliverPrototypeExtentList] does not need to lay out its children to obtain\ntheir extent along the main axis. It's a little more flexible than\n[SliverFixedExtentList] because there's no need to determine the appropriate\nitem extent in pixels.\n\nSee also:\n\n * [SliverFixedExtentList], whose itemExtent is a pixel value.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverPrototypeExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Center", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that centers its child within itself.\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\nSee also:\n\n * [Align], which lets you arbitrarily position a child within itself,\n rather than just centering it.\n * [Row], a widget that displays its children in a horizontal array.\n * [Column], a widget that displays its children in a vertical array.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Center" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Text", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A run of text with a single style.\n\nThe [Text] widget displays a string of text with single style. The string\nmight break across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nThe [style] argument is optional. When omitted, the text will use the style\nfrom the closest enclosing [DefaultTextStyle]. If the given style's\n[TextStyle.inherit] property is true (the default), the given style will\nbe merged with the closest enclosing [DefaultTextStyle]. This merging\nbehavior is useful, for example, to make the text bold while using the\ndefault font family and size.\n\n\n```dart\nText(\n 'Hello, $_name! How are you?',\n textAlign: TextAlign.center,\n overflow: TextOverflow.ellipsis,\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\nUsing the [Text.rich] constructor, the [Text] widget can\ndisplay a paragraph with differently styled [TextSpan]s. The sample\nthat follows displays \"Hello beautiful world\" with different styles\nfor each word.\n\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'Hello', // default text style\n children: <TextSpan>[\n TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),\n TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),\n ],\n ),\n)\n```\n\n## Interactivity\n\nTo make [Text] react to touch events, wrap it in a [GestureDetector] widget\nwith a [GestureDetector.onTap] handler.\n\nIn a material design application, consider using a [FlatButton] instead, or\nif that isn't appropriate, at least using an [InkWell] instead of\n[GestureDetector].\n\nTo make sections of the text interactive, use [RichText] and specify a\n[TapGestureRecognizer] as the [TextSpan.recognizer] of the relevant part of\nthe text.\n\nSee also:\n\n * [RichText], which gives you more control over the text styles.\n * [DefaultTextStyle], which sets default styles for [Text] widgets.", "detail": "", "kind": 7, "label": "Text" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes and positions children efficiently, according to the\nlogic in a [FlowDelegate].\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow, which happens\nwithout the children being laid out again (contrast this with a [Stack],\nwhich does the sizing and positioning together during layout).\n\nThe most efficient way to trigger a repaint of the flow is to supply an\nanimation to the constructor of the [FlowDelegate]. The flow will listen to\nthis animation and repaint whenever the animation ticks, avoiding both the\nbuild and layout phases of the pipeline.\n\nSee also:\n\n * [Wrap], which provides the layout model that some other frameworks call\n \"flow\", and is otherwise unrelated to [Flow].\n * [FlowDelegate], which controls the visual presentation of the children.\n * [Stack], which arranges children relative to the edges of the container.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that both has state and calls a closure to obtain its child widget.\n\nSee also:\n\n * [Builder], the platonic stateless widget.", "detail": "", "kind": 7, "label": "StatefulBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A bridge from a [RenderObject] to an [Element] tree.\n\nThe given container is the [RenderObject] that the [Element] tree should be\ninserted into. It must be a [RenderObject] that implements the\n[RenderObjectWithChildMixin] protocol. The type argument `T` is the kind of\n[RenderObject] that the container expects as its child.\n\nUsed by [runApp] to bootstrap applications.", "detail": "", "kind": 7, "label": "RenderObjectToWidgetAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivityDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A backend for a [ScrollActivity].\n\nUsed by subclasses of [ScrollActivity] to manipulate the scroll view that\nthey are acting upon.\n\nSee also:\n\n * [ScrollActivity], which uses this class as its delegate.\n * [ScrollPositionWithSingleContext], the main implementation of this interface.", "detail": "", "kind": 7, "label": "ScrollActivityDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rectangle.\n\nBy default, [ClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].\n\n[ClipRect] is commonly used with these widgets, which commonly paint outside\ntheir bounds:\n\n * [CustomPaint]\n * [CustomSingleChildLayout]\n * [CustomMultiChildLayout]\n * [Align] and [Center] (e.g., if [Align.widthFactor] or\n [Align.heightFactor] is less than 1.0).\n * [OverflowBox]\n * [SizedOverflowBox]\n\n\nFor example, by combining a [ClipRect] with an [Align], one can show just\nthe top half of an [Image]:\n\n```dart\nClipRect(\n child: Align(\n alignment: Alignment.topCenter,\n heightFactor: 0.5,\n child: Image.network(userAvatarUrl),\n ),\n)\n```\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutId", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metadata for identifying children in a [CustomMultiChildLayout].\n\nThe [MultiChildLayoutDelegate.hasChild],\n[MultiChildLayoutDelegate.layoutChild], and\n[MultiChildLayoutDelegate.positionChild] methods use these identifiers.", "detail": "", "kind": 7, "label": "LayoutId" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Placeholder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a box that represents where other widgets will one day\nbe added.\n\nThis widget is useful during development to indicate that the interface is\nnot yet complete.\n\nBy default, the placeholder is sized to fit its container. If the\nplaceholder is in an unbounded space, it will size itself according to the\ngiven [fallbackWidth] and [fallbackHeight].", "detail": "", "kind": 7, "label": "Placeholder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RebuildDirtyWidgetCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugOnRebuildDirtyWidget] implementations.", "detail": "(Element e, bool builtOnce) → void", "kind": 7, "label": "RebuildDirtyWidgetCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConfirmDismissCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to give the application an opportunity to\nconfirm or veto a dismiss gesture.\n\nUsed by [Dismissible.confirmDismiss].", "detail": "(DismissDirection direction) → Future<bool>", "kind": 7, "label": "ConfirmDismissCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a multiple box children that each fill the viewport.\n\n[SliverFillViewport] places its children in a linear array along the main\naxis. Each child is sized to fill the viewport, both in the main and cross\naxis.\n\nSee also:\n\n * [SliverFixedExtentList], which has a configurable\n [SliverFixedExtentList.itemExtent].\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LimitedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box that limits its size only when it's unconstrained.\n\nIf this widget's maximum width is unconstrained then its child's width is\nlimited to [maxWidth]. Similarly, if this widget's maximum height is\nunconstrained then its child's height is limited to [maxHeight].\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).\n\nSee also:\n\n * [ConstrainedBox], which applies its constraints in all cases, not just\n when the incoming constraints are unbounded.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "LimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncSnapshot", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable representation of the most recent interaction with an asynchronous\ncomputation.\n\nSee also:\n\n * [StreamBuilder], which builds itself based on a snapshot from interacting\n with a [Stream].\n * [FutureBuilder], which builds itself based on a snapshot from interacting\n with a [Future].", "detail": "", "kind": 7, "label": "AsyncSnapshot" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultAssetBundle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the default asset bundle for its descendants.\n\nFor example, used by [Image] to determine which bundle to use for\n[AssetImage]s if no bundle is specified explicitly.\n\n\nThis can be used in tests to override what the current asset bundle is, thus\nallowing specific resources to be injected into the widget under test.\n\nFor example, a test could create a test asset bundle like this:\n\n```dart\nclass TestAssetBundle extends CachingAssetBundle {\n @override\n Future<ByteData> load(String key) async {\n if (key == 'resources/test')\n return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);\n return null;\n }\n}\n```\n\n...then wrap the widget under test with a [DefaultAssetBundle] using this\nbundle implementation:\n\n```dart\nawait tester.pumpWidget(\n MaterialApp(\n home: DefaultAssetBundle(\n bundle: TestAssetBundle(),\n child: TestWidget(),\n ),\n ),\n);\n```\n\nAssuming that `TestWidget` uses [DefaultAssetBundle.of] to obtain its\n[AssetBundle], it will now see the [TestAssetBundle]'s \"Hello World!\" data\nwhen requesting the \"resources/test\" asset.\n\nSee also:\n\n * [AssetBundle], the interface for asset bundles.\n * [rootBundle], the default default asset bundle.", "detail": "", "kind": 7, "label": "DefaultAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Banner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a diagonal message above the corner of another widget.\n\nUseful for showing the execution mode of an app (e.g., that asserts are\nenabled.)\n\nSee also:\n\n * [CheckedModeBanner], which the [WidgetsApp] widget includes by default in\n debug mode, to show a banner that says \"DEBUG\".", "detail": "", "kind": 7, "label": "Banner" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay show two time series. The first shows how much time was required\non this thread to produce each frame. The second shows how much time was\nrequired on the GPU thread to produce each frame. Ideally, both these values\nwould be less than the total frame budget for the hardware on which the app\nis running. For example, if the hardware has a screen that updates at 60 Hz,\neach thread should ideally spend less than 16ms producing each frame. This\nideal condition is indicated by a green vertical line for each thread.\nOtherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "PerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildListDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using an explicit list.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[SliverChildBuilderDelegate] or by subclassing [SliverChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.\n\nThe widgets in the given [children] list are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\nSee [SliverChildBuilderDelegate] for sample code using\n`semanticIndexOffset` and `semanticIndexCallback`.\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.", "detail": "", "kind": 7, "label": "SliverChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling view inside of which can be nested other scrolling views, with\ntheir scroll positions being intrinsically linked.\n\nThe most common use case for this widget is a scrollable view with a\nflexible [SliverAppBar] containing a [TabBar] in the header (build by\n[headerSliverBuilder], and with a [TabBarView] in the [body], such that the\nscrollable view's contents vary based on which tab is visible.\n\n## Motivation\n\nIn a normal [ScrollView], there is one set of slivers (the components of the\nscrolling view). If one of those slivers hosted a [TabBarView] which scrolls\nin the opposite direction (e.g. allowing the user to swipe horizontally\nbetween the pages represented by the tabs, while the list scrolls\nvertically), then any list inside that [TabBarView] would not interact with\nthe outer [ScrollView]. For example, flinging the inner list to scroll to\nthe top would not cause a collapsed [SliverAppBar] in the outer [ScrollView]\nto expand.\n\n[NestedScrollView] solves this problem by providing custom\n[ScrollController]s for the outer [ScrollView] and the inner [ScrollView]s\n(those inside the [TabBarView], hooking them together so that they appear,\nto the user, as one coherent scroll view.\n\n\nThis example shows a [NestedScrollView] whose header is the combination of a\n[TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a\n[SliverOverlapAbsorber]/[SliverOverlapInjector] pair to make the inner lists\nalign correctly, and it uses [SafeArea] to avoid any horizontal disturbances\n(e.g. the \"notch\" on iOS when the phone is horizontal). In addition,\n[PageStorageKey]s are used to remember the scroll position of each tab's\nlist.\n\nIn the example below, `_tabs` is a list of strings, one for each tab, giving\nthe tab labels. In a real application, it would be replaced by the actual\ndata model being represented.\n\n```dart\nDefaultTabController(\n length: _tabs.length, // This is the number of tabs.\n child: NestedScrollView(\n headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {\n // These are the slivers that show up in the \"outer\" scroll view.\n return <Widget>[\n SliverOverlapAbsorber(\n // This widget takes the overlapping behavior of the SliverAppBar,\n // and redirects it to the SliverOverlapInjector below. If it is\n // missing, then it is possible for the nested \"inner\" scroll view\n // below to end up under the SliverAppBar even when the inner\n // scroll view thinks it has not been scrolled.\n // This is not necessary if the \"headerSliverBuilder\" only builds\n // widgets that do not overlap the next sliver.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n child: SliverAppBar(\n title: const Text('Books'), // This is the title in the app bar.\n pinned: true,\n expandedHeight: 150.0,\n // The \"forceElevated\" property causes the SliverAppBar to show\n // a shadow. The \"innerBoxIsScrolled\" parameter is true when the\n // inner scroll view is scrolled beyond its \"zero\" point, i.e.\n // when it appears to be scrolled below the SliverAppBar.\n // Without this, there are cases where the shadow would appear\n // or not appear inappropriately, because the SliverAppBar is\n // not actually aware of the precise position of the inner\n // scroll views.\n forceElevated: innerBoxIsScrolled,\n bottom: TabBar(\n // These are the widgets to put in each tab in the tab bar.\n tabs: _tabs.map((String name) => Tab(text: name)).toList(),\n ),\n ),\n ),\n ];\n },\n body: TabBarView(\n // These are the contents of the tab views, below the tabs.\n children: _tabs.map((String name) {\n return SafeArea(\n top: false,\n bottom: false,\n child: Builder(\n // This Builder is needed to provide a BuildContext that is \"inside\"\n // the NestedScrollView, so that sliverOverlapAbsorberHandleFor() can\n // find the NestedScrollView.\n builder: (BuildContext context) {\n return CustomScrollView(\n // The \"controller\" and \"primary\" members should be left\n // unset, so that the NestedScrollView can control this\n // inner scroll view.\n // If the \"controller\" property is set, then this scroll\n // view will not be associated with the NestedScrollView.\n // The PageStorageKey should be unique to this ScrollView;\n // it allows the list to remember its scroll position when\n // the tab view is not on the screen.\n key: PageStorageKey<String>(name),\n slivers: <Widget>[\n SliverOverlapInjector(\n // This is the flip side of the SliverOverlapAbsorber above.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n ),\n SliverPadding(\n padding: const EdgeInsets.all(8.0),\n // In this example, the inner scroll view has\n // fixed-height list items, hence the use of\n // SliverFixedExtentList. However, one could use any\n // sliver widget here, e.g. SliverList or SliverGrid.\n sliver: SliverFixedExtentList(\n // The items in this example are fixed to 48 pixels\n // high. This matches the Material Design spec for\n // ListTile widgets.\n itemExtent: 48.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n // This builder is called for each child.\n // In this example, we just number each list item.\n return ListTile(\n title: Text('Item $index'),\n );\n },\n // The childCount of the SliverChildBuilderDelegate\n // specifies how many children this inner list\n // has. In this example, each tab has a list of\n // exactly 30 items, but this is arbitrary.\n childCount: 30,\n ),\n ),\n ),\n ],\n );\n },\n ),\n );\n }).toList(),\n ),\n ),\n)\n```", "detail": "", "kind": 7, "label": "NestedScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list that works page by page.\n\nEach child of a page view is forced to be the same size as the viewport.\n\nYou can use a [PageController] to control which page is visible in the view.\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nThe [PageController] can also be used to control the\n[PageController.initialPage], which determines which page is shown when the\n[PageView] is first constructed, and the [PageController.viewportFraction],\nwhich determines the size of the pages as a fraction of the viewport size.\n\n\nSee also:\n\n * [PageController], which controls which page is visible in the view.\n * [SingleChildScrollView], when you need to make a single child scrollable.\n * [ListView], for a scrollable list of boxes.\n * [GridView], for a scrollable grid of boxes.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "PageView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBoxTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DecoratedBox] that animates the different properties\nof its [Decoration].\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [DecoratedBox], which also draws a [Decoration] but is not animated.\n * [AnimatedContainer], a more full-featured container that also animates on\n decoration using an internal animation.", "detail": "", "kind": 7, "label": "DecoratedBoxTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetectorState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [RawGestureDetector].", "detail": "", "kind": 7, "label": "RawGestureDetectorState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Decoration]s.\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[Decoration.lerp].\n\nFor [ShapeDecoration]s which know how to [ShapeDecoration.lerpTo] or\n[ShapeDecoration.lerpFrom] each other, this will produce a smooth\ninterpolation between decorations.\n\nSee also:\n\n * [Tween] for a discussion on how to use interpolation objects.\n * [ShapeDecoration], [RoundedRectangleBorder], [CircleBorder], and\n [StadiumBorder] for examples of shape borders that can be smoothly\n interpolated.\n * [BoxBorder] for a border that can only be smoothly interpolated between other\n [BoxBorder]s.", "detail": "", "kind": 7, "label": "DecorationTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [RenderObjectWidget] as its configuration.\n\n[RenderObjectElement] objects have an associated [RenderObject] widget in\nthe render tree, which handles concrete operations like laying out,\npainting, and hit testing.\n\nContrast with [ComponentElement].\n\nFor details on the lifecycle of an element, see the discussion at [Element].\n\n## Writing a RenderObjectElement subclass\n\nThere are three common child models used by most [RenderObject]s:\n\n* Leaf render objects, with no children: The [LeafRenderObjectElement] class\n handles this case.\n\n* A single child: The [SingleChildRenderObjectElement] class handles this\n case.\n\n* A linked list of children: The [MultiChildRenderObjectElement] class\n handles this case.\n\nSometimes, however, a render object's child model is more complicated. Maybe\nit has a two-dimensional array of children. Maybe it constructs children on\ndemand. Maybe it features multiple lists. In such situations, the\ncorresponding [Element] for the [Widget] that configures that [RenderObject]\nwill be a new subclass of [RenderObjectElement].\n\nSuch a subclass is responsible for managing children, specifically the\n[Element] children of this object, and the [RenderObject] children of its\ncorresponding [RenderObject].\n\n### Specializing the getters\n\n[RenderObjectElement] objects spend much of their time acting as\nintermediaries between their [widget] and their [renderObject]. To make this\nmore tractable, most [RenderObjectElement] subclasses override these getters\nso that they return the specific type that the element expects, e.g.:\n\n```dart\nclass FooElement extends RenderObjectElement {\n\n @override\n Foo get widget => super.widget;\n\n @override\n RenderFoo get renderObject => super.renderObject;\n\n // ...\n}\n```\n\n### Slots\n\nEach child [Element] corresponds to a [RenderObject] which should be\nattached to this element's render object as a child.\n\nHowever, the immediate children of the element may not be the ones that\neventually produce the actual [RenderObject] that they correspond to. For\nexample a [StatelessElement] (the element of a [StatelessWidget]) simply\ncorresponds to whatever [RenderObject] its child (the element returned by\nits [StatelessWidget.build] method) corresponds to.\n\nEach child is therefore assigned a _slot_ token. This is an identifier whose\nmeaning is private to this [RenderObjectElement] node. When the descendant\nthat finally produces the [RenderObject] is ready to attach it to this\nnode's render object, it passes that slot token back to this node, and that\nallows this node to cheaply identify where to put the child render object\nrelative to the others in the parent render object.\n\n### Updating children\n\nEarly in the lifecycle of an element, the framework calls the [mount]\nmethod. This method should call [updateChild] for each child, passing in\nthe widget for that child, and the slot for that child, thus obtaining a\nlist of child [Element]s.\n\nSubsequently, the framework will call the [update] method. In this method,\nthe [RenderObjectElement] should call [updateChild] for each child, passing\nin the [Element] that was obtained during [mount] or the last time [update]\nwas run (whichever happened most recently), the new [Widget], and the slot.\nThis provides the object with a new list of [Element] objects.\n\nWhere possible, the [update] method should attempt to map the elements from\nthe last pass to the widgets in the new pass. For example, if one of the\nelements from the last pass was configured with a particular [Key], and one\nof the widgets in this new pass has that same key, they should be paired up,\nand the old element should be updated with the widget (and the slot\ncorresponding to the new widget's new position, also). The [updateChildren]\nmethod may be useful in this regard.\n\n[updateChild] should be called for children in their logical order. The\norder can matter; for example, if two of the children use [PageStorage]'s\n`writeState` feature in their build method (and neither has a [Widget.key]),\nthen the state written by the first will be overwritten by the second.\n\n#### Dynamically determining the children during the build phase\n\nThe child widgets need not necessarily come from this element's widget\nverbatim. They could be generated dynamically from a callback, or generated\nin other more creative ways.\n\n#### Dynamically determining the children during layout\n\nIf the widgets are to be generated at layout time, then generating them when\nthe [update] method won't work: layout of this element's render object\nhasn't started yet at that point. Instead, the [update] method can mark the\nrender object as needing layout (see [RenderObject.markNeedsLayout]), and\nthen the render object's [RenderObject.performLayout] method can call back\nto the element to have it generate the widgets and call [updateChild]\naccordingly.\n\nFor a render object to call an element during layout, it must use\n[RenderObject.invokeLayoutCallback]. For an element to call [updateChild]\noutside of its [update] method, it must use [BuildOwner.buildScope].\n\nThe framework provides many more checks in normal operation than it does\nwhen doing a build during layout. For this reason, creating widgets with\nlayout-time build semantics should be done with great care.\n\n#### Handling errors when building\n\nIf an element calls a builder function to obtain widgets for its children,\nit may find that the build throws an exception. Such exceptions should be\ncaught and reported using [FlutterError.reportError]. If a child is needed\nbut a builder has failed in this way, an instance of [ErrorWidget] can be\nused instead.\n\n### Detaching children\n\nIt is possible, when using [GlobalKey]s, for a child to be proactively\nremoved by another element before this element has been updated.\n(Specifically, this happens when the subtree rooted at a widget with a\nparticular [GlobalKey] is being moved from this element to an element\nprocessed earlier in the build phase.) When this happens, this element's\n[forgetChild] method will be called with a reference to the affected child\nelement.\n\nThe [forgetChild] method of a [RenderObjectElement] subclass must remove the\nchild element from its child list, so that when it next [update]s its\nchildren, the removed child is not considered.\n\nFor performance reasons, if there are many elements, it may be quicker to\ntrack which elements were forgotten by storing them in a [Set], rather than\nproactively mutating the local record of the child list and the identities\nof all the slots. For example, see the implementation of\n[MultiChildRenderObjectElement].\n\n### Maintaining the render object tree\n\nOnce a descendant produces a render object, it will call\n[insertChildRenderObject]. If the descendant's slot changes identity, it\nwill call [moveChildRenderObject]. If a descendant goes away, it will call\n[removeChildRenderObject].\n\nThese three methods should update the render tree accordingly, attaching,\nmoving, and detaching the given child render object from this element's own\nrender object respectively.\n\n### Walking the children\n\nIf a [RenderObjectElement] object has any children [Element]s, it must\nexpose them in its implementation of the [visitChildren] method. This method\nis used by many of the framework's internal mechanisms, and so should be\nfast. It is also used by the test framework and [debugDumpApp].", "detail": "", "kind": 7, "label": "RenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ProxyWidget] as its configuration.", "detail": "", "kind": 7, "label": "ProxyElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which takes a specific\n[Animation<RelativeRect>] to transition the child's position from a start\nposition to an end position over the lifetime of the animation.\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [PositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "PositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CreateRectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that takes two [Rect] instances and returns a\n[RectTween] that transitions between them.\n\nThis is typically used with a [HeroController] to provide an animation for\n[Hero] positions that looks nicer than a linear movement. For example, see\n[MaterialRectArcTween].", "detail": "(Rect begin, Rect end) → Tween<Rect>", "kind": 7, "label": "CreateRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for strategies that build widgets based on asynchronous\ninteraction.\n\nSee also:\n\n * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Stream].\n * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Future].", "detail": "(BuildContext context, AsyncSnapshot<T> snapshot) → Widget", "kind": 7, "label": "AsyncWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlockSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops the semantics of all widget that were painted before it\nin the same semantic container.\n\nThis is useful to hide widgets from accessibility tools that are painted\nbehind a certain widget, e.g. an alert should usually disallow interaction\nwith any widget located \"behind\" the alert (even when they are still\npartially visible). Similarly, an open [Drawer] blocks interactions with\nany widget outside the drawer.\n\nSee also:\n\n * [ExcludeSemantics] which drops all semantics of its descendants.", "detail": "", "kind": 7, "label": "BlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[SliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [SliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children.\n\n\nIf the children have a fixed extent in the main axis, consider using\n[SliverFixedExtentList] rather than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis and is therefore more efficient.\n\n\nSee also:\n\n * [SliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDetector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures.\n\nAttempts to recognize gestures that correspond to its non-null callbacks.\n\nIf this widget has a child, it defers to that child for its sizing behavior.\nIf it does not have a child, it grows to fit the parent instead.\n\nBy default a GestureDetector with an invisible child ignores touches;\nthis behavior can be controlled with [behavior].\n\nGestureDetector also listens for accessibility events and maps\nthem to the callbacks. To ignore accessibility events, set\n[excludeFromSemantics] to true.\n\nSee <http://flutter.dev/gestures/> for additional information.\n\nMaterial design applications typically react to touches with ink splash\neffects. The [InkWell] class implements this effect and can be used in place\nof a [GestureDetector] for handling taps.\n\n\nThis example makes a rectangle react to being tapped by setting the\n`_lights` field:\n\n```dart\nGestureDetector(\n onTap: () {\n setState(() { _lights = true; });\n },\n child: Container(\n color: Colors.yellow,\n child: Text('TURN LIGHTS ON'),\n ),\n)\n```\n\n## Debugging\n\nTo see how large the hit test box of a [GestureDetector] is for debugging\npurposes, set [debugPaintPointersEnabled] to true.", "detail": "", "kind": 7, "label": "GestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalizationsDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A factory for a set of localized resources of type `T`, to be loaded by a\n[Localizations] widget.\n\nTypical applications have one [Localizations] widget which is created by the\n[WidgetsApp] and configured with the app's `localizationsDelegates`\nparameter (a list of delegates). The delegate's [type] is used to identify\nthe object created by an individual delegate's [load] method.", "detail": "", "kind": 7, "label": "LocalizationsDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProviderStateMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides [Ticker] objects that are configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create an [AnimationController] in a class that uses this mixin, pass\n`vsync: this` to the animation controller constructor whenever you\ncreate a new animation controller.\n\nIf you only have a single [Ticker] (for example only a single\n[AnimationController]) for the lifetime of your [State], then using a\n[SingleTickerProviderStateMixin] is more efficient. This is the common case.", "detail": "", "kind": 7, "label": "TickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that hook [ParentData] information to children of\n[RenderObjectWidget]s.\n\nThis can be used to provide per-child configuration for\n[RenderObjectWidget]s with more than one child. For example, [Stack] uses\nthe [Positioned] parent data widget to position each child.\n\nA [ParentDataWidget] is specific to a particular kind of [RenderObject], and\nthus also to a particular [RenderObjectWidget] class. That class is `T`, the\n[ParentDataWidget] type argument.\n\n\nThis example shows how you would build a [ParentDataWidget] to configure a\n`FrogJar` widget's children by specifying a [Size] for each one.\n\n```dart\nclass FrogSize extends ParentDataWidget<FrogJar> {\n FrogSize({\n Key key,\n @required this.size,\n @required Widget child,\n }) : assert(child != null),\n assert(size != null),\n super(key: key, child: child);\n\n final Size size;\n\n @override\n void applyParentData(RenderObject renderObject) {\n final FrogJarParentData parentData = renderObject.parentData;\n if (parentData.size != size) {\n parentData.size = size;\n final RenderFrogJar targetParent = renderObject.parent;\n targetParent.markNeedsLayout();\n }\n }\n}\n```\n\nSee also:\n\n * [RenderObject], the superclass for layout algorithms.\n * [RenderObject.parentData], the slot that this class configures.\n * [ParentData], the superclass of the data that will be placed in\n [RenderObject.parentData] slots.\n * [RenderObjectWidget], the class for widgets that wrap [RenderObject]s.\n The `T` type parameter for [ParentDataWidget] is a [RenderObjectWidget].\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.", "detail": "", "kind": 7, "label": "ParentDataWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for scrolling activities like dragging and flinging.\n\nSee also:\n\n * [ScrollPosition], which uses [ScrollActivity] objects to manage the\n [ScrollPosition] of a [Scrollable].", "detail": "", "kind": 7, "label": "ScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageIcon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An icon that comes from an [ImageProvider], e.g. an [AssetImage].\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for icons based on glyphs from fonts instead of images.\n * [Icons], a predefined font based set of icons from the material design library.", "detail": "", "kind": 7, "label": "ImageIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorberHandle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Handle to provide to a [SliverOverlapAbsorber], a [SliverOverlapInjector],\nand an [NestedScrollViewViewport], to shift overlap in a [NestedScrollView].\n\nA particular [SliverOverlapAbsorberHandle] can only be assigned to a single\n[SliverOverlapAbsorber] at a time. It can also be (and normally is) assigned\nto one or more [SliverOverlapInjector]s, which must be later descendants of\nthe same [NestedScrollViewViewport] as the [SliverOverlapAbsorber]. The\n[SliverOverlapAbsorber] must be a direct descendant of the\n[NestedScrollViewViewport], taking part in the same sliver layout. (The\n[SliverOverlapInjector] can be a descendant that takes part in a nested\nscroll view's sliver layout.)\n\nWhenever the [NestedScrollViewViewport] is marked dirty for layout, it will\ncause its assigned [SliverOverlapAbsorberHandle] to fire notifications. It\nis the responsibility of the [SliverOverlapInjector]s (and any other\nclients) to mark themselves dirty when this happens, in case the geometry\nsubsequently changes during layout.\n\nSee also:\n\n * [NestedScrollView], which uses a [NestedScrollViewViewport] and a\n [SliverOverlapAbsorber] to align its children, and which shows sample\n usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorberHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nSee also the discussions at [Key] and [Widget.key].", "detail": "", "kind": 7, "label": "ObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetToRenderBoxAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An adapter for placing a specific [RenderBox] in the widget tree.\n\nA given render object can be placed at most once in the widget tree. This\nwidget enforces that restriction by keying itself using a [GlobalObjectKey]\nfor the given render object.", "detail": "", "kind": 7, "label": "WidgetToRenderBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ValueKey] that defines where [PageStorage] values will be saved.\n\n[Scrollable]s ([ScrollPosition]s really) use [PageStorage] to save their\nscroll offset. Each time a scroll completes, the scrollable's page\nstorage is updated.\n\n[PageStorage] is used to save and restore values that can outlive the widget.\nThe values are stored in a per-route [Map] whose keys are defined by the\n[PageStorageKey]s for the widget and its ancestors. To make it possible\nfor a saved value to be found when a widget is recreated, the key's values\nmust not be objects whose identity will change each time the widget is created.\n\nFor example, to ensure that the scroll offsets for the scrollable within\neach `MyScrollableTabView` below are restored when the [TabBarView]\nis recreated, we've specified [PageStorageKey]s whose values are the\ntabs' string labels.\n\n```dart\nTabBarView(\n children: myTabs.map((Tab tab) {\n MyScrollableTabView(\n key: PageStorageKey<String>(tab.text), // like 'Tab 1'\n tab: tab,\n ),\n }),\n)\n```", "detail": "", "kind": 7, "label": "PageStorageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectButtonBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by\n[WidgetInspector.selectButtonBuilder].", "detail": "(BuildContext context, VoidCallback onPressed) → Widget", "kind": 7, "label": "InspectorSelectButtonBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOval", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildBuilderDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using a builder\ncallback.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot have to be built until they are displayed.", "detail": "", "kind": 7, "label": "ListWheelChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatelessWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatelessElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenConstructor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a [Tween] factory.\n\nThis is the type of one of the arguments of [TweenVisitor], the signature\nused by [AnimatedWidgetBaseState.forEachTween].", "detail": "(T targetValue) → Tween<T>", "kind": 7, "label": "TweenConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetLeave", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] leaves a [DragTarget].\n\nUsed by [DragTarget.onLeave].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetLeave" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigationToolbar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[NavigationToolbar] is a layout helper to position 3 widgets or groups of\nwidgets along a horizontal axis that's sensible for an application's\nnavigation bar such as in Material Design and in iOS.\n\nThe [leading] and [trailing] widgets occupy the edges of the widget with\nreasonable size constraints while the [middle] widget occupies the remaining\nspace in either a center aligned or start aligned fashion.\n\nEither directly use the themed app bars such as the Material [AppBar] or\nthe iOS [CupertinoNavigationBar] or wrap this widget with more theming\nspecifications for your own custom app bar.", "detail": "", "kind": 7, "label": "NavigationToolbar" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines which portion of the content is visible in a scroll view.\n\nThe [pixels] value determines the scroll offset that the scroll view uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThe [ScrollPosition] applies [physics] to scrolling, and stores the\n[minScrollExtent] and [maxScrollExtent].\n\nScrolling is controlled by the current [activity], which is set by\n[beginActivity]. [ScrollPosition] itself does not start any activities.\nInstead, concrete subclasses, such as [ScrollPositionWithSingleContext],\ntypically start activities in response to user input or instructions from a\n[ScrollController].\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\n## Subclassing ScrollPosition\n\nOver time, a [Scrollable] might have many different [ScrollPosition]\nobjects. For example, if [Scrollable.physics] changes type, [Scrollable]\ncreates a new [ScrollPosition] with the new physics. To transfer state from\nthe old instance to the new instance, subclasses implement [absorb]. See\n[absorb] for more details.\n\nSubclasses also need to call [didUpdateScrollDirection] whenever\n[userScrollDirection] changes values.\n\nSee also:\n\n * [Scrollable], which uses a [ScrollPosition] to determine which portion of\n its content to display.\n * [ScrollController], which can be used with [ListView], [GridView] and\n other scrollable widgets to control a [ScrollPosition].\n * [ScrollPositionWithSingleContext], which is the most commonly used\n concrete subclass of [ScrollPosition].\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents the details when a specific pointer event occurred on\nthe [Draggable].\n\nThis includes the [Velocity] at which the pointer was moving and [Offset]\nwhen the draggable event occurred, and whether its [DragTarget] accepted it.\n\nAlso, this is the details object for callbacks that use [DragEndCallback].", "detail": "", "kind": 7, "label": "DraggableDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeMatcher", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This class is a work-around for the \"is\" operator not accepting a variable value as its right operand", "detail": "", "kind": 7, "label": "TypeMatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [MultiChildRenderObjectWidget] as its configuration.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [ContainerRenderObjectMixin] mixin with a parent data\ntype that implements [ContainerParentDataMixin<RenderObject>]. Such widgets\nare expected to inherit from [MultiChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "MultiChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given [Listenable] changes value.\n\n[AnimatedWidget] is most commonly used with [Animation] objects, which are\n[Listenable], but it can be used with any [Listenable], including\n[ChangeNotifier] and [ValueNotifier].\n\n[AnimatedWidget] is most useful for widgets that are otherwise stateless. To\nuse [AnimatedWidget], simply subclass it and implement the build function.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedWidget].\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with TickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return SpinningContainer(controller: _controller);\n }\n}\n\nclass SpinningContainer extends AnimatedWidget {\n const SpinningContainer({Key key, AnimationController controller})\n : super(key: key, listenable: controller);\n\n Animation<double> get _progress => listenable;\n\n @override\n Widget build(BuildContext context) {\n return Transform.rotate(\n angle: _progress.value * 2.0 * math.pi,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n );\n }\n}\n```\n\nFor more complex case involving additional state, consider using\n[AnimatedBuilder].\n\nSee also:\n\n * [AnimatedBuilder], which is useful for more complex use cases.\n * [Animation], which is a [Listenable] object that can be used for\n [listenable].\n * [ChangeNotifier], which is another [Listenable] object that can be used\n for [listenable].", "detail": "", "kind": 7, "label": "AnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Localizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the [Locale] for its `child` and the localized resources that the\nchild depends on.\n\nLocalized resources are loaded by the list of [LocalizationsDelegate]\n`delegates`. Each delegate is essentially a factory for a collection\nof localized resources. There are multiple delegates because there are\nmultiple sources for localizations within an app.\n\nDelegates are typically simple subclasses of [LocalizationsDelegate] that\noverride [LocalizationsDelegate.load]. For example a delegate for the\n`MyLocalizations` class defined below would be:\n\n```dart\nclass _MyDelegate extends LocalizationsDelegate<MyLocalizations> {\n @override\n Future<MyLocalizations> load(Locale locale) => MyLocalizations.load(locale);\n\n @override\n bool shouldReload(MyLocalizationsDelegate old) => false;\n}\n```\n\nEach delegate can be viewed as a factory for objects that encapsulate a\na set of localized resources. These objects are retrieved with\nby runtime type with [Localizations.of].\n\nThe [WidgetsApp] class creates a `Localizations` widget so most apps\nwill not need to create one. The widget app's `Localizations` delegates can\nbe initialized with [WidgetsApp.localizationsDelegates]. The [MaterialApp]\nclass also provides a `localizationsDelegates` parameter that's just\npassed along to the [WidgetsApp].\n\nApps should retrieve collections of localized resources with\n`Localizations.of<MyLocalizations>(context, MyLocalizations)`,\nwhere MyLocalizations is an app specific class defines one function per\nresource. This is conventionally done by a static `.of` method on the\nMyLocalizations class.\n\nFor example, using the `MyLocalizations` class defined below, one would\nlookup a localized title string like this:\n```dart\nMyLocalizations.of(context).title()\n```\nIf `Localizations` were to be rebuilt with a new `locale` then\nthe widget subtree that corresponds to [BuildContext] `context` would\nbe rebuilt after the corresponding resources had been loaded.\n\nThis class is effectively an [InheritedWidget]. If it's rebuilt with\na new `locale` or a different list of delegates or any of its\ndelegates' [LocalizationsDelegate.shouldReload()] methods returns true,\nthen widgets that have created a dependency by calling\n`Localizations.of(context)` will be rebuilt after the resources\nfor the new locale have been loaded.\n\n\nThis following class is defined in terms of the\n[Dart `intl` package](https://github.com/dart-lang/intl). Using the `intl`\npackage isn't required.\n\n```dart\nclass MyLocalizations {\n MyLocalizations(this.locale);\n\n final Locale locale;\n\n static Future<MyLocalizations> load(Locale locale) {\n return initializeMessages(locale.toString())\n .then((void _) {\n return MyLocalizations(locale);\n });\n }\n\n static MyLocalizations of(BuildContext context) {\n return Localizations.of<MyLocalizations>(context, MyLocalizations);\n }\n\n String title() => Intl.message('<title>', name: 'title', locale: locale.toString());\n // ... more Intl.message() methods like title()\n}\n```\nA class based on the `intl` package imports a generated message catalog that provides\nthe `initializeMessages()` function and the per-locale backing store for `Intl.message()`.\nThe message catalog is produced by an `intl` tool that analyzes the source code for\nclasses that contain `Intl.message()` calls. In this case that would just be the\n`MyLocalizations` class.\n\nOne could choose another approach for loading localized resources and looking them up while\nstill conforming to the structure of this example.", "detail": "", "kind": 7, "label": "Localizations" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformTarget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be targeted by a [CompositedTransformFollower].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\nupdates the [link] object so that any [CompositedTransformFollower] widgets\nthat are subsequently composited in the same frame and were given the same\n[LayerLink] can position themselves at the same screen location.\n\nA single [CompositedTransformTarget] can be followed by multiple\n[CompositedTransformFollower] widgets.\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nany linked [CompositedTransformFollower]s.\n\nSee also:\n\n * [CompositedTransformFollower], the widget that can target this one.\n * [LeaderLayer], the layer that implements this widget's logic.", "detail": "", "kind": 7, "label": "CompositedTransformTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for being notified when a form field changes value.\n\nUsed by [FormField.onSaved].", "detail": "(T newValue) → void", "kind": 7, "label": "FormFieldSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFadeBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [AnimatedCrossFade.layoutBuilder] callback.\n\nThe `topChild` is the child fading in, which is normally drawn on top. The\n`bottomChild` is the child fading out, normally drawn on the bottom.\n\nFor good performance, the returned widget tree should contain both the\n`topChild` and the `bottomChild`; the depth of the tree, and the types of\nthe widgets in the tree, from the returned widget to each of the children\nshould be the same; and where there is a widget with multiple children, the\ntop child and the bottom child should be keyed using the provided\n`topChildKey` and `bottomChildKey` keys respectively.\n\n\n```dart\nWidget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) {\n return Stack(\n fit: StackFit.loose,\n children: <Widget>[\n Positioned(\n key: bottomChildKey,\n left: 0.0,\n top: 0.0,\n right: 0.0,\n child: bottomChild,\n ),\n Positioned(\n key: topChildKey,\n child: topChild,\n )\n ],\n );\n}\n```", "detail": "(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) → Widget", "kind": 7, "label": "AnimatedCrossFadeBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableScrollableSheet", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container for a [Scrollable] that responds to drag gestures by resizing\nthe scrollable until a limit is reached, and then scrolling.\n\nThis widget can be dragged along the vertical axis between its\n[minChildSize], which defaults to `0.25` and [maxChildSize], which defaults\nto `1.0`. These sizes are percentages of the height of the parent container.\n\nThe widget coordinates resizing and scrolling of the widget returned by\nbuilder as the user drags along the horizontal axis.\n\nThe widget will initially be displayed at its initialChildSize which\ndefaults to `0.5`, meaning half the height of its parent. Dragging will work\nbetween the range of minChildSize and maxChildSize (as percentages of the\nparent container's height) as long as the builder creates a widget which\nuses the provided [ScrollController]. If the widget created by the\n[ScrollableWidgetBuilder] does not use provided [ScrollController], the\nsheet will remain at the initialChildSize.\n\n\nThis is a sample widget which shows a [ListView] that has 25 [ListTile]s.\nIt starts out as taking up half the body of the [Scaffold], and can be\ndragged up to the full height of the scaffold or down to 25% of the height\nof the scaffold. Upon reaching full height, the list contents will be\nscrolled up or down, until they reach the top of the list again and the user\ndrags the sheet back down.\n\n```dart\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('DraggableScrollableSheet'),\n ),\n body: SizedBox.expand(\n child: DraggableScrollableSheet(\n builder: (BuildContext context, ScrollController scrollController) {\n return Container(\n color: Colors.blue[100],\n child: ListView.builder(\n controller: scrollController,\n itemCount: 25,\n itemBuilder: (BuildContext context, int index) {\n return ListTile(title: Text('Item $index'));\n },\n ),\n );\n },\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DraggableScrollableSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ControlsWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that creates a widget given the two callbacks `onStepContinue` and\n`onStepCancel`.\n\nUsed by [Stepper.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].", "detail": "(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) → Widget", "kind": 7, "label": "ControlsWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.pageRouteBuilder].\n\nCreates a [PageRoute] using the given [RouteSettings] and [WidgetBuilder].", "detail": "(RouteSettings settings, WidgetBuilder builder) → PageRoute<T>", "kind": 7, "label": "PageRouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverToBoxAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box widget.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverToBoxAdapter]\nis a basic sliver that creates a bridge back to one of the usual box-based\nwidgets.\n\nRather than using multiple [SliverToBoxAdapter] widgets to display multiple\nbox widgets in a [CustomScrollView], consider using [SliverList],\n[SliverFixedExtentList], [SliverPrototypeExtentList], or [SliverGrid],\nwhich are more efficient because they instantiate only those children that\nare actually visible through the scroll view's viewport.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.\n * [SliverList], which displays multiple box widgets in a linear array.\n * [SliverFixedExtentList], which displays multiple box widgets with the\n same main-axis extent in a linear array.\n * [SliverPrototypeExtentList], which displays multiple box widgets with the\n same main-axis extent as a prototype item, in a linear array.\n * [SliverGrid], which displays multiple box widgets in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin used by routes to handle back navigations internally by popping a list.\n\nWhen a [Navigator] is instructed to pop, the current route is given an\nopportunity to handle the pop internally. A `LocalHistoryRoute` handles the\npop internally if its list of local history entries is non-empty. Rather\nthan being removed as the current route, the most recent [LocalHistoryEntry]\nis removed from the list and its [LocalHistoryEntry.onRemove] is called.", "detail": "", "kind": 7, "label": "LocalHistoryRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An element that lazily builds children for a [SliverMultiBoxAdaptorWidget].\n\nImplements [RenderSliverBoxChildManager], which lets this element manage\nthe children of subclasses of [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flex", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a one-dimensional array.\n\nThe [Flex] widget allows you to control the axis along which the children are\nplaced (horizontal or vertical). This is referred to as the _main axis_. If\nyou know the main axis in advance, then consider using a [Row] (if it's\nhorizontal) or [Column] (if it's vertical) instead, because that will be less\nverbose.\n\nTo cause a child to expand to fill the available space in the [direction]\nof this widget's main axis, wrap the child in an [Expanded] widget.\n\nThe [Flex] widget does not scroll (and in general it is considered an error\nto have more children in a [Flex] than will fit in the available room). If\nyou have some widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nIf you only have one child, then rather than using [Flex], [Row], or\n[Column], consider using [Align] or [Center] to position the child.\n\n## Layout algorithm\n\n_This section describes how a [Flex] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Flex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded main axis constraints and the incoming\n cross axis constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight cross axis constraints\n that match the incoming max extent in the cross axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of main axis space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [Flex] is the maximum cross axis extent of\n the children (which will always satisfy the incoming constraints).\n5. The main axis extent of the [Flex] is determined by the [mainAxisSize]\n property. If the [mainAxisSize] property is [MainAxisSize.max], then the\n main axis extent of the [Flex] is the max extent of the incoming main\n axis constraints. If the [mainAxisSize] property is [MainAxisSize.min],\n then the main axis extent of the [Flex] is the sum of the main axis\n extents of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a version of this widget that is always horizontal.\n * [Column], for a version of this widget that is always vertical.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n that may be sized smaller (leaving some remaining room unused).\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flex" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GenerateAppTitle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.onGenerateTitle].\n\nUsed to generate a value for the app's [Title.title], which the device uses\nto identify the app for the user. The `context` includes the [WidgetsApp]'s\n[Localizations] widget so that this method can be used to produce a\nlocalized title.\n\nThis function must not return null.", "detail": "(BuildContext context) → String", "kind": 7, "label": "GenerateAppTitle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExcludeSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops all the semantics of its descendants.\n\nWhen [excluding] is true, this widget (and its subtree) is excluded from\nthe semantics tree.\n\nThis can be used to hide descendant widgets that would otherwise be\nreported but that would only be confusing. For example, the\nmaterial library's [Chip] widget hides the avatar since it is\nredundant with the chip label.\n\nSee also:\n\n * [BlockSemantics] which drops semantics of widgets earlier in the tree.", "detail": "", "kind": 7, "label": "ExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlayChanged", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting changes to the selection component of a\n[TextEditingValue] for the purposes of a [TextSelectionOverlay]. The\n[caretRect] argument gives the location of the caret in the coordinate space\nof the [RenderBox] given by the [TextSelectionOverlay.renderObject].\n\nUsed by [TextSelectionOverlay.onSelectionOverlayChanged].", "detail": "(TextEditingValue value, Rect caretRect) → void", "kind": 7, "label": "TextSelectionOverlayChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollEndNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has stopped scrolling.\n\nSee also:\n\n * [ScrollStartNotification], which indicates that scrolling has started.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollEndNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatefulWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatefulElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of the [LayoutBuilder] builder function.", "detail": "(BuildContext context, BoxConstraints constraints) → Widget", "kind": 7, "label": "LayoutWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImagePhase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The phases a [FadeInImage] goes through.", "detail": "", "kind": 13, "label": "FadeInImagePhase" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SlideTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the position of a widget relative to its normal position.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nBy default, the offsets are applied in the coordinate system of the canvas\n(so positive x offsets move the child towards the right). If a\n[textDirection] is provided, then the offsets are applied in the reading\ndirection, so in right-to-left text, positive x offsets move towards the\nleft, and in left-to-right text, positive x offsets move towards the right.\n\nHere's an illustration of the [SlideTransition] widget, with it's [position]\nanimated by a [CurvedAnimation] set to [Curves.elasticIn]:\n\nSee also:\n\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SlideTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyleTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [TextStyle]s.\n\nThis class specializes the interpolation of [Tween<TextStyle>] to use\n[TextStyle.lerp].\n\nThis will not work well if the styles don't set the same fields.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "TextStyleTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches Android.\n\nSee also:\n\n * [BouncingScrollSimulation], which implements iOS scroll physics.", "detail": "", "kind": 7, "label": "ClampingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The activity a scroll view performs when a the user drags their finger\nacross the screen.\n\nSee also:\n\n * [ScrollDragController], which listens to the [Drag] and actually scrolls\n the scroll view.", "detail": "", "kind": 7, "label": "DragScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildLoopingListDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies infinite children for [ListWheelScrollView] by\nlooping an explicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildLoopingListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsFlutterBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A concrete binding for applications based on the Widgets framework.\n\nThis is the glue that binds the framework to the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Route", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstraction for an entry managed by a [Navigator].\n\nThis class defines an abstract interface between the navigator and the\n\"routes\" that are pushed on and popped off the navigator. Most routes have\nvisual affordances, which they place in the navigators [Overlay] using one\nor more [OverlayEntry] objects.\n\nSee [Navigator] for more explanation of how to use a Route\nwith navigation, including code examples.\n\nSee [MaterialPageRoute] for a route that replaces the\nentire screen with a platform-adaptive transition.", "detail": "", "kind": 7, "label": "Route" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates its own size and clips and aligns its child.\n\n[SizeTransition] acts as a [ClipRect] that animates either its width or its\nheight, depending upon the value of [axis]. The alignment of the child along\nthe [axis] is specified by the [axisAlignment].\n\nLike most widgets, [SizeTransition] will conform to the constraints it is\ngiven, so be sure to put it in a context where it can change size. For\ninstance, if you place it into a [Container] with a fixed size, then the\n[SizeTransition] will not be able to change size, and will appear to do\nnothing.\n\nHere's an illustration of the [SizeTransition] widget, with it's [sizeFactor]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [AnimatedCrossFade], for a widget that automatically animates between\n the sizes of two children, fading between them.\n * [ScaleTransition], a widget that scales the size of the child instead of\n clipping it.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SizeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IdleScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing.\n\nWhen a scroll view is not scrolling, it is performing the idle activity.\n\nIf the [Scrollable] changes dimensions, this activity triggers a ballistic\nactivity to restore the view.", "detail": "", "kind": 7, "label": "IdleScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building children of a [DragTarget].\n\nThe `candidateData` argument contains the list of drag data that is hovering\nover this [DragTarget] and that has passed [DragTarget.onWillAccept]. The\n`rejectedData` argument contains the list of drag data that is hovering over\nthis [DragTarget] and that will not be accepted by the [DragTarget].\n\nUsed by [DragTarget.builder].", "detail": "(BuildContext context, List<T> candidateData, List<dynamic> rejectedData) → Widget", "kind": 7, "label": "DragTargetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticIndexCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback which produces a semantic index given a widget and the local index.\n\nReturn a null value to prevent a widget from receiving an index.\n\nA semantic index is used to tag child semantic nodes for accessibility\nannouncements in scroll view.\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.\n * [SliverChildBuilderDelegate], for an explanation of how this is used to\n generate indexes.", "detail": "(Widget widget, int localIndex) → int", "kind": 7, "label": "SemanticIndexCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDragController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scrolls a scroll view as the user drags their finger across the screen.\n\nSee also:\n\n * [DragScrollActivity], which is the activity the scroll view performs\n while a drag is underway.", "detail": "", "kind": 7, "label": "ScrollDragController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedStack", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] that shows a single child from a list of children.\n\nThe displayed child is the one with the given [index]. The stack is\nalways as big as the largest child.\n\nIf value is null, then nothing is displayed.\n\nSee also:\n\n * [Stack], for more details about stacks.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Transform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a transformation before painting its child.\n\n\n\nThis example rotates and skews an orange box containing text, keeping the\ntop right corner pinned to its original position.\n\n```dart\nContainer(\n color: Colors.black,\n child: Transform(\n alignment: Alignment.topRight,\n transform: Matrix4.skewY(0.3)..rotateZ(-math.pi / 12.0),\n child: Container(\n padding: const EdgeInsets.all(8.0),\n color: const Color(0xFFE8581C),\n child: const Text('Apartment for rent!'),\n ),\n ),\n)\n```\n\nSee also:\n\n * [RotatedBox], which rotates the child widget during layout, not just\n during painting.\n * [FractionalTranslation], which applies a translation to the child\n that is relative to the child's size.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.", "detail": "", "kind": 7, "label": "Transform" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotificationPredicate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A predicate for [ScrollNotification], used to customize widgets that\nlisten to notifications from their children.", "detail": "(ScrollNotification notification) → bool", "kind": 7, "label": "ScrollNotificationPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated widget that automatically transitions its size over a given\nduration whenever the given child's size changes.", "detail": "", "kind": 7, "label": "AnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysScrollableScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that always lets the user scroll.\n\nOn Android, overscrolls will be clamped by default and result in an\noverscroll glow. On iOS, overscrolls will load a spring that will return\nthe scroll view to its normal range when released.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "AlwaysScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that prevent the scroll offset from reaching\nbeyond the bounds of the content.\n\nThis is the behavior typically seen on Android.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on Android.\n * [BouncingScrollPhysics], which is the analogous physics for iOS' bouncing\n behavior.\n * [GlowingOverscrollIndicator], which is used by [ScrollConfiguration] to\n provide the glowing effect that is usually found with this clamping effect\n on Android. When using a [MaterialApp], the [GlowingOverscrollIndicator]'s\n glow color is specified to use [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "ClampingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RichText", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A paragraph of rich text.\n\nThe [RichText] widget displays text that uses multiple different styles. The\ntext to display is described using a tree of [TextSpan] objects, each of\nwhich has an associated style that is used for that subtree. The text might\nbreak across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nText displayed in a [RichText] widget must be explicitly styled. When\npicking which style to use, consider using [DefaultTextStyle.of] the current\n[BuildContext] to provide defaults. For more details on how to style text in\na [RichText] widget, see the documentation for [TextStyle].\n\nConsider using the [Text] widget to integrate with the [DefaultTextStyle]\nautomatically. When all the text uses the same style, the default constructor\nis less verbose. The [Text.rich] constructor allows you to style multiple\nspans with the default text style while still allowing specified styles per\nspan.\n\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Hello ',\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),\n TextSpan(text: ' world!'),\n ],\n ),\n)\n```\n\nSee also:\n\n * [TextStyle], which discusses how to style text.\n * [TextSpan], which is used to describe the text in a paragraph.\n * [Text], which automatically applies the ambient styles described by a\n [DefaultTextStyle] to a single string.", "detail": "", "kind": 7, "label": "RichText" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScope", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a scope in which widgets can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nA focus scope does not itself receive focus but instead helps remember\nprevious focus states. A scope is currently active when its [node] is the\nfirst focus of its parent scope. To activate a [FocusScope], either use the\n[autofocus] property or explicitly make the [node] the first focus in the\nparent scope:\n\n```dart\nFocusScope.of(context).setFirstFocus(node);\n```\n\nIf a [FocusScope] is removed from the widget tree, then the previously\nfocused node will be focused, but only if the [node] is the same [node]\nobject as in the previous frame. To assure this, you can use a GlobalKey to\nkeep the [FocusScope] widget from being rebuilt from one frame to the next,\nor pass in the [node] from a parent that is not rebuilt. If there is no next\nsibling, then the parent scope node will be focused.\n\nSee also:\n\n * [FocusScopeNode], which is the associated node in the focus tree.\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.", "detail": "", "kind": 7, "label": "FocusScope" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Form", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An optional container for grouping together multiple form field widgets\n(e.g. [TextField] widgets).\n\nEach individual form field should be wrapped in a [FormField] widget, with\nthe [Form] widget as a common ancestor of all of those. Call methods on\n[FormState] to save, reset, or validate each [FormField] that is a\ndescendant of this [Form]. To obtain the [FormState], you may use [Form.of]\nwith a context whose ancestor is the [Form], or pass a [GlobalKey] to the\n[Form] constructor and call [GlobalKey.currentState].\n\nThis example shows a [Form] with one [TextFormField] and a [RaisedButton]. A\n[GlobalKey] is used here to identify the [Form] and validate input.\n\n```dart\nfinal _formKey = GlobalKey<FormState>();\n\n@override\nWidget build(BuildContext context) {\n return Form(\n key: _formKey,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n TextFormField(\n validator: (value) {\n if (value.isEmpty) {\n return 'Please enter some text';\n }\n },\n ),\n Padding(\n padding: const EdgeInsets.symmetric(vertical: 16.0),\n child: RaisedButton(\n onPressed: () {\n // Validate will return true if the form is valid, or false if\n // the form is invalid.\n if (_formKey.currentState.validate()) {\n // Process data.\n }\n },\n child: Text('Submit'),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [GlobalKey], a key that is unique across the entire app.\n * [FormField], a single form field widget that maintains the current state.\n * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].", "detail": "", "kind": 7, "label": "Form" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4Tween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Matrix4]s.\n\nThis class specializes the interpolation of [Tween<Matrix4>] to be\nappropriate for transformation matrices.\n\nCurrently this class works only for translations.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "Matrix4Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IgnorePointer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is invisible during hit testing.\n\nWhen [ignoring] is true, this widget (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because it returns\nfalse from [RenderBox.hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [AbsorbPointer], which also prevents its children from receiving pointer\n events but is itself visible to hit testing.", "detail": "", "kind": 7, "label": "IgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Table", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses the table layout algorithm for its children.\n\n\nIf you only have one row, the [Row] widget is more appropriate. If you only\nhave one column, the [SliverList] or [Column] widgets will be more\nappropriate.\n\nRows size vertically based on their contents. To control the column widths,\nuse the [columnWidths] property.\n\nFor more details about the table layout algorithm, see [RenderTable].\nTo control the alignment of children, see [TableCell].", "detail": "", "kind": 7, "label": "Table" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that does not require mutable state.\n\nA stateless widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\n\nStateless widget are useful when the part of the user interface you are\ndescribing does not depend on anything other than the configuration\ninformation in the object itself and the [BuildContext] in which the widget\nis inflated. For compositions that can change dynamically, e.g. due to\nhaving an internal clock-driven state, or depending on some system state,\nconsider using [StatefulWidget].\n\n## Performance considerations\n\nThe [build] method of a stateless widget is typically only called in three\nsituations: the first time the widget is inserted in the tree, when the\nwidget's parent changes its configuration, and when an [InheritedWidget] it\ndepends on changes.\n\nIf a widget's parent will regularly change the widget's configuration, or if\nit depends on inherited widgets that frequently change, then it is important\nto optimize the performance of the [build] method to maintain a fluid\nrendering performance.\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateless widget:\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. For example, instead of an elaborate arrangement\n of [Row]s, [Column]s, [Padding]s, and [SizedBox]es to position a single\n child in a particularly fancy manner, consider using just an [Align] or a\n [CustomSingleChildLayout]. Instead of an intricate layering of multiple\n [Container]s and with [Decoration]s to draw just the right graphical\n effect, consider a single [CustomPaint] widget.\n\n * Use `const` widgets where possible, and provide a `const` constructor for\n the widget so that users of the widget can also do so.\n\n * Consider refactoring the stateless widget into a stateful widget so that\n it can use some of the techniques described at [StatefulWidget], such as\n caching common parts of subtrees and using [GlobalKey]s when changing the\n tree structure.\n\n * If the widget is likely to get rebuilt frequently due to the use of\n [InheritedWidget]s, consider refactoring the stateless widget into\n multiple widgets, with the parts of the tree that change being pushed to\n the leaves. For example instead of building a tree with four widgets, the\n inner-most widget depending on the [Theme], consider factoring out the\n part of the build function that builds the inner-most widget into its own\n widget, so that only the inner-most widget needs to be rebuilt when the\n theme changes.\n\n\nThe following is a skeleton of a stateless widget subclass called `GreenFrog`.\n\nNormally, widgets have more constructor arguments, each of which corresponds\nto a `final` property.\n\n```dart\nclass GreenFrog extends StatelessWidget {\n const GreenFrog({ Key key }) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFF2DBD3A));\n }\n}\n```\n\n\nThis next example shows the more generic widget `Frog` which can be given\na color and a child:\n\n```dart\nclass Frog extends StatelessWidget {\n const Frog({\n Key key,\n this.color = const Color(0xFF2DBD3A),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n @override\n Widget build(BuildContext context) {\n return Container(color: color, child: child);\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatelessWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteObserver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that notifies [RouteAware]s of changes to the\nstate of their [Route].\n\n[RouteObserver] informs subscribers whenever a route of type `R` is pushed\non top of their own route of type `R` or popped from it. This is for example\nuseful to keep track of page transitions, e.g. a `RouteObserver<PageRoute>`\nwill inform subscribed [RouteAware]s whenever the user navigates away from\nthe current page route to another page route.\n\nTo be informed about route changes of any type, consider instantiating a\n`RouteObserver<Route>`.\n\n## Type arguments\n\nWhen using more aggressive\n[lints](http://dart-lang.github.io/linter/lints/), in particular lints such\nas `always_specify_types`, the Dart analyzer will require that certain types\nbe given with their type arguments. Since the [Route] class and its\nsubclasses have a type argument, this includes the arguments passed to this\nclass. Consider using `dynamic` to specify the entire class of routes rather\nthan only specific subtypes. For example, to watch for all [PageRoute]\nvariants, the `RouteObserver<PageRoute<dynamic>>` type may be used.\n\n\nTo make a [StatefulWidget] aware of its current [Route] state, implement\n[RouteAware] in its [State] and subscribe it to a [RouteObserver]:\n\n```dart\n// Register the RouteObserver as a navigation observer.\nfinal RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();\nvoid main() {\n runApp(MaterialApp(\n home: Container(),\n navigatorObservers: [routeObserver],\n ));\n}\n\nclass RouteAwareWidget extends StatefulWidget {\n State<RouteAwareWidget> createState() => RouteAwareWidgetState();\n}\n\n// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.\nclass RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n routeObserver.subscribe(this, ModalRoute.of(context));\n }\n\n @override\n void dispose() {\n routeObserver.unsubscribe(this);\n super.dispose();\n }\n\n @override\n void didPush() {\n // Route was pushed onto navigator and is now topmost route.\n }\n\n @override\n void didPopNext() {\n // Covering route was popped off the navigator.\n }\n\n @override\n Widget build(BuildContext context) => Container();\n\n}\n```", "detail": "", "kind": 7, "label": "RouteObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Future].\n\nThe [future] must have been obtained earlier, e.g. during [State.initState],\n[State.didUpdateConfig], or [State.didChangeDependencies]. It must not be\ncreated during the [State.build] or [StatelessWidget.build] method call when\nconstructing the [FutureBuilder]. If the [future] is created at the same\ntime as the [FutureBuilder], then every time the [FutureBuilder]'s parent is\nrebuilt, the asynchronous task will be restarted.\n\nA general guideline is to assume that every `build` method could get called\nevery frame, and to treat omitted calls as an optimization.\n\n\n## Timing\n\nWidget rebuilding is scheduled by the completion of the future, using\n[State.setState], but is otherwise decoupled from the timing of the future.\nThe [builder] callback is called at the discretion of the Flutter pipeline, and\nwill thus receive a timing-dependent sub-sequence of the snapshots that\nrepresent the interaction with the future.\n\nA side-effect of this is that providing a new but already-completed future\nto a [FutureBuilder] will result in a single frame in the\n[ConnectionState.waiting] state. This is because there is no way to\nsynchronously determine that a [Future] has already completed.\n\n## Builder contract\n\nFor a future that completes successfully with data, assuming [initialData]\nis null, the [builder] will be called with either both or only the latter of\nthe following snapshots:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withData(ConnectionState.done, 'some data')`\n\nIf that same future instead completed with an error, the [builder] would be\ncalled with either both or only the latter of:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withError(ConnectionState.done, 'some error')`\n\nThe initial snapshot data can be controlled by specifying [initialData]. You\nwould use this facility to ensure that if the [builder] is invoked before\nthe future completes, the snapshot carries data of your choice rather than\nthe default null value.\n\nThe data and error fields of the snapshot change only as the connection\nstate field transitions from `waiting` to `done`, and they will be retained\nwhen changing the [FutureBuilder] configuration to another future. If the\nold future has already completed successfully with data as above, changing\nconfiguration to a new future results in snapshot pairs of the form:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.none, 'data of first future')`\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, 'data of second future')`\n\nIn general, the latter will be produced only when the new future is\nnon-null, and the former only when the old future is non-null.\n\nA [FutureBuilder] behaves identically to a [StreamBuilder] configured with\n`future?.asStream()`, except that snapshots with `ConnectionState.active`\nmay appear for the latter, depending on how the stream is implemented.\n\n\nThis sample shows a [FutureBuilder] configuring a text label to show the\nstate of an asynchronous calculation returning a string. Assume the\n`_calculation` field is set by pressing a button elsewhere in the UI.\n\n```dart\nFutureBuilder<String>(\n future: _calculation, // a previously-obtained Future<String> or null\n builder: (BuildContext context, AsyncSnapshot<String> snapshot) {\n switch (snapshot.connectionState) {\n case ConnectionState.none:\n return Text('Press button to start.');\n case ConnectionState.active:\n case ConnectionState.waiting:\n return Text('Awaiting result...');\n case ConnectionState.done:\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n return Text('Result: ${snapshot.data}');\n }\n return null; // unreachable\n },\n)\n```", "detail": "", "kind": 7, "label": "FutureBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossFadeState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Specifies which of two children to show. See [AnimatedCrossFade].\n\nThe child that is shown will fade in, while the other will fade out.", "detail": "", "kind": 13, "label": "CrossFadeState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalObjectKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nIf the object is not private, then it is possible that collisions will occur\nwhere independent widgets will reuse the same object as their\n[GlobalObjectKey] value in a different part of the tree, leading to a global\nkey conflict. To avoid this problem, create a private [GlobalObjectKey]\nsubclass, as in:\n\n```dart\nclass _MyKey extends GlobalObjectKey {\n const _MyKey(Object value) : super(value);\n}\n```\n\nSince the [runtimeType] of the key is part of its identity, this will\nprevent clashes with other [GlobalObjectKey]s even if they have the same\nvalue.\n\nAny [GlobalObjectKey] created for the same value will match.", "detail": "", "kind": 7, "label": "GlobalObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the default color, opacity, and size of icons in a widget subtree.\n\nThe icon theme is honored by [Icon] and [ImageIcon] widgets.", "detail": "", "kind": 7, "label": "IconTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyedSubtree", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that builds its child.\n\nUseful for attaching a key to an existing widget.", "detail": "", "kind": 7, "label": "KeyedSubtree" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of an [Align] that animates its [Align.alignment] property.\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "AlignTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls callbacks in response to pointer events.\n\nRather than listening for raw pointer events, consider listening for\nhigher-level gestures using [GestureDetector].\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nIf it has a child, this widget defers to the child for sizing behavior. If\nit does not have a child, it grows to fit the parent instead.\n\nThis example makes a [Container] react to being entered by a mouse\npointer, showing a count of the number of entries and exits.\n\n```dart\nimport 'package:flutter/gestures.dart';\n```\n\n```dart\nint _enterCounter = 0;\nint _exitCounter = 0;\ndouble x = 0.0;\ndouble y = 0.0;\n\nvoid _incrementCounter(PointerEnterEvent details) {\n setState(() {\n _enterCounter++;\n });\n}\n\nvoid _decrementCounter(PointerExitEvent details) {\n setState(() {\n _exitCounter++;\n });\n}\n\nvoid _updateLocation(PointerHoverEvent details) {\n setState(() {\n x = details.position.dx;\n y = details.position.dy;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Center(\n child: ConstrainedBox(\n constraints: new BoxConstraints.tight(Size(300.0, 200.0)),\n child: Listener(\n onPointerEnter: _incrementCounter,\n onPointerHover: _updateLocation,\n onPointerExit: _decrementCounter,\n child: Container(\n color: Colors.lightBlueAccent,\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pointed at this box this many times:'),\n Text(\n '$_enterCounter Entries\\n$_exitCounter Exits',\n style: Theme.of(context).textTheme.display1,\n ),\n Text(\n 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [MouseTracker] an object that tracks mouse locations in the [GestureBinding].", "detail": "", "kind": 7, "label": "Listener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherLayoutBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom layouts for\n[AnimatedSwitcher].\n\nThe builder should return a widget which contains the given children, laid\nout as desired. It must not return null. The builder should be able to\nhandle an empty list of `previousChildren`, or a null `currentChild`.\n\nThe `previousChildren` list is an unmodifiable list, sorted with the oldest\nat the beginning and the newest at the end. It does not include the\n`currentChild`.", "detail": "(Widget currentChild, List<Widget> previousChildren) → Widget", "kind": 7, "label": "AnimatedSwitcherLayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView].\n\n[ListWheelScrollView] lazily constructs its children during layout to avoid\ncreating more children than are visible through the [Viewport]. This\ndelegate is responsible for providing children to [ListWheelScrollView]\nduring that stage.\n\nSee also:\n\n * [ListWheelChildListDelegate], a delegate that supplies children using an\n explicit list.\n * [ListWheelChildLoopingListDelegate], a delegate that supplies infinite\n children by looping an explicit list.\n * [ListWheelChildBuilderDelegate], a delegate that supplies children using\n a builder callback.", "detail": "", "kind": 7, "label": "ListWheelChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositionedDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PositionedDirectional] which automatically transitions\nthe child's position over a given duration whenever the given position\nchanges.\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositionedDirectional] will trigger\na relayout as well. ([SlideTransition] is also text-direction-aware.)\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositioned], which specifies the widget's position visually (the\n same as this widget, but for animating [Positioned]).", "detail": "", "kind": 7, "label": "AnimatedPositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopScope", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Registers a callback to veto attempts by the user to dismiss the enclosing\n[ModalRoute].\n\nSee also:\n\n * [ModalRoute.addScopedWillPopCallback] and [ModalRoute.removeScopedWillPopCallback],\n which this widget uses to register and unregister [onWillPop].", "detail": "", "kind": 7, "label": "WillPopScope" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetWillAccept", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for determining whether the given data will be accepted by a [DragTarget].\n\nUsed by [DragTarget.onWillAccept].", "detail": "(T data) → bool", "kind": 7, "label": "DragTargetWillAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCell", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Table] is aligned.\n\nA [TableCell] widget must be a descendant of a [Table], and the path from\nthe [TableCell] widget to its enclosing [Table] must contain only\n[TableRow]s, [StatelessWidget]s, or [StatefulWidget]s (not\nother kinds of widgets, like [RenderObjectWidget]s).", "detail": "", "kind": 7, "label": "TableCell" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableTextState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [EditableText].", "detail": "", "kind": 7, "label": "EditableTextState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteAware", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for objects that are aware of their current [Route].\n\nThis is used with [RouteObserver] to make a widget aware of changes to the\n[Navigator]'s session history.", "detail": "", "kind": 7, "label": "RouteAware" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [LeafRenderObjectWidget] as its configuration.", "detail": "", "kind": 7, "label": "LeafRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorObserver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for observing the behavior of a [Navigator].", "detail": "", "kind": 7, "label": "NavigatorObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [State.setState] functions.", "detail": "(VoidCallback fn) → void", "kind": 7, "label": "StateSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list of widgets arranged linearly.\n\n[ListView] is the most commonly used scrolling widget. It displays its\nchildren one after another in the scroll direction. In the cross axis, the\nchildren are required to fill the [ListView].\n\nIf non-null, the [itemExtent] forces the children to have the given extent\nin the scroll direction. Specifying an [itemExtent] is more efficient than\nletting the children determine their own extent because the scrolling\nmachinery can make use of the foreknowledge of the children's extent to save\nwork, for example when the scroll position changes drastically.\n\nThere are four options for constructing a [ListView]:\n\n 1. The default constructor takes an explicit [List<Widget>] of children. This\n constructor is appropriate for list views with a small number of\n children because constructing the [List] requires doing work for every\n child that could possibly be displayed in the list view instead of just\n those children that are actually visible.\n\n 2. The [ListView.builder] constructor takes an [IndexedWidgetBuilder], which\n builds the children on demand. This constructor is appropriate for list views\n with a large (or infinite) number of children because the builder is called\n only for those children that are actually visible.\n\n 3. The [ListView.separated] constructor takes two [IndexedWidgetBuilder]s:\n `itemBuilder` builds child items on demand, and `separatorBuilder`\n similarly builds separator children which appear in between the child items.\n This constructor is appropriate for list views with a fixed number of children.\n\n 4. The [ListView.custom] constructor takes a [SliverChildDelegate], which provides\n the ability to customize additional aspects of the child model. For example,\n a [SliverChildDelegate] can control the algorithm used to estimate the\n size of children that are not actually visible.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nThis example uses the default constructor for [ListView] which takes an\nexplicit [List<Widget>] of children. This [ListView]'s children are made up\nof [Container]s with [Text].\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view.png)\n\n```dart\nListView(\n padding: const EdgeInsets.all(8.0),\n children: <Widget>[\n Container(\n height: 50,\n color: Colors.amber[600],\n child: const Center(child: Text('Entry A')),\n ),\n Container(\n height: 50,\n color: Colors.amber[500],\n child: const Center(child: Text('Entry B')),\n ),\n Container(\n height: 50,\n color: Colors.amber[100],\n child: const Center(child: Text('Entry C')),\n ),\n ],\n)\n```\n\nThis example mirrors the previous one, creating the same list using the\n[ListView.builder] constructor. Using the [IndexedWidgetBuilder], children\nare built lazily and can be infinite in number.\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_builder.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.builder(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n }\n);\n```\n\nThis example continues to build from our the previous ones, creating a\nsimilar list using [ListView.separated]. Here, a [Divider] is used as a\nseparator.\n\n![A ListView of 3 amber colored containers with sample text and a Divider\nbetween each of them.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_separated.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.separated(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n },\n separatorBuilder: (BuildContext context, int index) => const Divider(),\n);\n```\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as when using\nthe default constructor) or lazily provided ones (such as when using the\n[ListView.builder] constructor).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree,\nstates and render objects are destroyed. A new child at the same position\nin the list will be lazily recreated along with new elements, states and\nrender objects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the list child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the list child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child\n widget subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the list child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the list keeps the child's render\n object (and by extension, its associated elements and states) in a cache\n list instead of destroying them. When scrolled back into view, the render\n object is repainted as-is (if it wasn't marked dirty in the interim).\n\n This only works if [addAutomaticKeepAlives] and [addRepaintBoundaries]\n are false since those parameters cause the [ListView] to wrap each child\n widget subtree with other widgets.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default when\n [addAutomaticKeepAlives] is true). Instead of unconditionally caching the\n child element subtree when scrolling off-screen like [KeepAlive],\n [AutomaticKeepAlive] can let whether to cache the subtree be determined\n by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its list child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the list child element subtree will be destroyed\n when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive\n by using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\n## Transitioning to [CustomScrollView]\n\nA [ListView] is basically a [CustomScrollView] with a single [SliverList] in\nits [CustomScrollView.slivers] property.\n\nIf [ListView] is no longer sufficient, for example because the scroll view\nis to have both a list and a grid, or because the list is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[ListView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [ListView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing either a\n[SliverList] or a [SliverFixedExtentList]; the former if [itemExtent] on the\n[ListView] was null, and the latter if [itemExtent] was not null.\n\nThe [childrenDelegate] property on [ListView] corresponds to the\n[SliverList.delegate] (or [SliverFixedExtentList.delegate]) property. The\n[new ListView] constructor's `children` argument corresponds to the\n[childrenDelegate] being a [SliverChildListDelegate] with that same\nargument. The [new ListView.builder] constructor's `itemBuilder` and\n`childCount` arguments correspond to the [childrenDelegate] being a\n[SliverChildBuilderDelegate] with the matching arguments.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the list itself, and having\nthe [SliverList] instead be a child of the [SliverPadding].\n\n[CustomScrollView]s don't automatically avoid obstructions from [MediaQuery]\nlike [ListView]s do. To reproduce the behavior, wrap the slivers in\n[SliverSafeArea]s.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [ListView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nListView(\n shrinkWrap: true,\n padding: const EdgeInsets.all(20.0),\n children: <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n shrinkWrap: true,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverList(\n delegate: SliverChildListDelegate(\n <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n ),\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is scrollable, 2D array of widgets.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [ListBody], which arranges its children in a similar manner, but without\n scrolling.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ListView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable, 2D array of widgets.\n\nThe main axis direction of a grid is the direction in which it scrolls (the\n[scrollDirection]).\n\nThe most commonly used grid layouts are [GridView.count], which creates a\nlayout with a fixed number of tiles in the cross axis, and\n[GridView.extent], which creates a layout with tiles that have a maximum\ncross-axis extent. A custom [SliverGridDelegate] can produce an arbitrary 2D\narrangement of children, including arrangements that are unaligned or\noverlapping.\n\nTo create a grid with a large (or infinite) number of children, use the\n[GridView.builder] constructor with either a\n[SliverGridDelegateWithFixedCrossAxisCount] or a\n[SliverGridDelegateWithMaxCrossAxisExtent] for the [gridDelegate].\n\nTo use a custom [SliverChildDelegate], use [GridView.custom].\n\nTo create a linear array of children, use a [ListView].\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n## Transitioning to [CustomScrollView]\n\nA [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in\nits [CustomScrollView.slivers] property.\n\nIf [GridView] is no longer sufficient, for example because the scroll view\nis to have both a grid and a list, or because the grid is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[GridView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [GridView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing just a\n[SliverGrid].\n\nThe [childrenDelegate] property on [GridView] corresponds to the\n[SliverGrid.delegate] property, and the [gridDelegate] property on the\n[GridView] corresponds to the [SliverGrid.gridDelegate] property.\n\nThe [new GridView], [new GridView.count], and [new GridView.extent]\nconstructors' `children` arguments correspond to the [childrenDelegate]\nbeing a [SliverChildListDelegate] with that same argument. The [new\nGridView.builder] constructor's `itemBuilder` and `childCount` arguments\ncorrespond to the [childrenDelegate] being a [SliverChildBuilderDelegate]\nwith the matching arguments.\n\nThe [new GridView.count] and [new GridView.extent] constructors create\ncustom grid delegates, and have equivalently named constructors on\n[SliverGrid] to ease the transition: [new SliverGrid.count] and [new\nSliverGrid.extent] respectively.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the grid itself, and having\nthe [SliverGrid] instead be a child of the [SliverPadding].\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [GridView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nGridView.count(\n primary: false,\n padding: const EdgeInsets.all(20.0),\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n primary: false,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverGrid.count(\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ListView], which is scrollable, linear list of widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "GridView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Opacity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.\n\n\n\nThis example shows some [Text] when the `_visible` member field is true, and\nhides it when it is false:\n\n```dart\nOpacity(\n opacity: _visible ? 1.0 : 0.0,\n child: const Text('Now you see me, now you don\\'t!'),\n)\n```\n\nThis is more efficient than adding and removing the child widget from the\ntree on demand.\n\n## Performance considerations for opacity animation\n\nAnimating an [Opacity] widget directly causes the widget (and possibly its\nsubtree) to rebuild each frame, which is not very efficient. Consider using\nan [AnimatedOpacity] instead.\n\n## Transparent image\n\nIf only a single [Image] or [Color] needs to be composited with an opacity\nbetween 0.0 and 1.0, it's much faster to directly use them without [Opacity]\nwidgets.\n\nFor example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much\nfaster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`.\n\n\nThe following example draws an [Image] with 0.5 opacity without using\n[Opacity]:\n\n```dart\nImage.network(\n 'https://raw.githubusercontent.com/flutter/assets-for-api-docs/master/packages/diagrams/assets/blend_mode_destination.jpeg',\n color: Color.fromRGBO(255, 255, 255, 0.5),\n colorBlendMode: BlendMode.modulate\n)\n```\n\n\nDirectly drawing an [Image] or [Color] with opacity is faster than using\n[Opacity] on top of them because [Opacity] could apply the opacity to a\ngroup of widgets and therefore a costly offscreen buffer will be used.\nDrawing content into the offscreen buffer may also trigger render target\nswitches and such switching is particularly slow in older GPUs.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly, because it is either visible or hidden, rather than allowing\n fractional opacity values).\n * [ShaderMask], which can apply more elaborate effects to its child.\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [AnimatedOpacity], which uses an animation internally to efficiently\n animate opacity.\n * [FadeTransition], which uses a provided animation to efficiently animate\n opacity.\n * [Image], which can directly provide a partially transparent image with\n much less performance hit.", "detail": "", "kind": 7, "label": "Opacity" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that merges the semantics of its descendants.\n\nCauses all the semantics of the subtree rooted at this node to be\nmerged into one node in the semantics tree. For example, if you\nhave a widget with a Text node next to a checkbox widget, this\ncould be used to merge the label from the Text node with the\n\"checked\" semantic state of the checkbox into a single node that\nhad both the label and the checked state. Otherwise, the label\nwould be presented as a separate feature than the checkbox, and\nthe user would not be able to be sure that they were related.\n\nBe aware that if two nodes in the subtree have conflicting\nsemantics, the result may be nonsensical. For example, a subtree\nwith a checked checkbox and an unchecked checkbox will be\npresented as checked. All the labels will be merged into a single\nstring (with newlines separating each label from the other). If\nmultiple nodes in the merged subtree can handle semantic gestures,\nthe first one in tree order will be the one to receive the\ncallbacks.", "detail": "", "kind": 7, "label": "MergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that automatically dispatches a [SizeChangedLayoutNotification]\nwhen the layout dimensions of its child change.\n\nThe notification is not sent for the initial layout (since the size doesn't\nchange in that case, it's just established).\n\nTo listen for the notification dispatched by this widget, use a\n[NotificationListener<SizeChangedLayoutNotification>].\n\nThe [Material] class listens for [LayoutChangedNotification]s, including\n[SizeChangedLayoutNotification]s, to repaint [InkResponse] and [InkWell] ink\neffects. When a widget is likely to change size, wrapping it in a\n[SizeChangedLayoutNotifier] will cause the ink effects to correctly repaint\nwhen the child changes size.\n\nSee also:\n\n * [Notification], the base class for notifications that bubble through the\n widget tree.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollHoldController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for holding a [Scrollable] stationary.\n\nAn object that implements this interface is returned by\n[ScrollPosition.hold]. It holds the scrollable stationary until an activity\nis started or the [cancel] method is called.", "detail": "", "kind": 7, "label": "ScrollHoldController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Notification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that can bubble up the widget tree.\n\nYou can determine the type of a notification using the `is` operator to\ncheck the [runtimeType] of the notification.\n\nTo listen for notifications in a subtree, use a [NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].", "detail": "", "kind": 7, "label": "Notification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleResolutionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeResolutionCallback].\n\nIt is recommended to provide a [LocaleListResolutionCallback] instead of a\n[LocaleResolutionCallback] when possible, as [LocaleResolutionCallback] only\nreceives a subset of the information provided in [LocaleListResolutionCallback].\n\nA [LocaleResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the default\nlocale for the device after [LocaleListResolutionCallback] fails or is not provided.\n\nThis callback is also used if the app is created with a specific locale using\nthe [new WidgetsApp] `locale` parameter.\n\nThe [locale] is either the value of [WidgetsApp.locale], or the device's default\nlocale when the app started, or the device locale the user selected after the app\nwas started. The default locale is the first locale in the list of preferred\nlocales. If [locale] is null, then Flutter has not yet received the locale\ninformation from the platform. The [supportedLocales] parameter is just the value of\n[WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleListResolutionCallback], which takes a list of preferred locales (instead of one locale).\n Resolutions by [LocaleListResolutionCallback] take precedence over [LocaleResolutionCallback].", "detail": "(Locale locale, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBindingObserver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for classes that register with the Widgets layer binding.\n\nWhen used as a mixin, provides no-op method implementations.\n\nSee [WidgetsBinding.addObserver] and [WidgetsBinding.removeObserver].\n\nThis class can be extended directly, to get default behaviors for all of the\nhandlers, or can used with the `implements` keyword, in which case all the\nhandlers must be implemented (and the analyzer will list those that have\nbeen omitted).\n\n\nThis [StatefulWidget] implements the parts of the [State] and\n[WidgetsBindingObserver] protocols necessary to react to application\nlifecycle messages. See [didChangeAppLifecycleState].\n\n```dart\nclass AppLifecycleReactor extends StatefulWidget {\n const AppLifecycleReactor({ Key key }) : super(key: key);\n\n @override\n _AppLifecycleReactorState createState() => _AppLifecycleReactorState();\n}\n\nclass _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {\n @override\n void initState() {\n super.initState();\n WidgetsBinding.instance.addObserver(this);\n }\n\n @override\n void dispose() {\n WidgetsBinding.instance.removeObserver(this);\n super.dispose();\n }\n\n AppLifecycleState _notification;\n\n @override\n void didChangeAppLifecycleState(AppLifecycleState state) {\n setState(() { _notification = state; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Text('Last notification: $_notification');\n }\n}\n```\n\nTo respond to other notifications, replace the [didChangeAppLifecycleState]\nmethod above with other methods from this class.", "detail": "", "kind": 7, "label": "WidgetsBindingObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirectionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to indicate that it has been dismissed in\nthe given `direction`.\n\nUsed by [Dismissible.onDismissed].", "detail": "(DismissDirection direction) → void", "kind": 7, "label": "DismissDirectionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract widget for building widgets that gradually change their\nvalues over a period of time.\n\nSubclasses' States must provide a way to visit the subclass's relevant\nfields to animate. [ImplicitlyAnimatedWidget] will then automatically\ninterpolate and animate those fields using the provided duration and\ncurve when those fields change.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that blocks interaction with previous routes.\n\n[ModalRoute]s cover the entire [Navigator]. They are not necessarily\n[opaque], however; for example, a pop-up menu uses a [ModalRoute] but only\nshows the menu in a small box overlapping the previous route.\n\nThe `T` type argument is the return value of the route. If there is no\nreturn value, consider using `void` as the return value.", "detail": "", "kind": 7, "label": "ModalRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BorderRadius]s.\n\nThis class specializes the interpolation of [Tween<BorderRadius>] to use\n[BorderRadius.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderRadiusTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that efficiently propagate information down the tree.\n\nTo obtain the nearest instance of a particular type of inherited widget from\na build context, use [BuildContext.inheritFromWidgetOfExactType].\n\nInherited widgets, when referenced in this way, will cause the consumer to\nrebuild when the inherited widget itself changes state.\n\n\n\nThe following is a skeleton of an inherited widget called `FrogColor`:\n\n```dart\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor) as FrogColor;\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n```\n\nThe convention is to provide a static method `of` on the [InheritedWidget]\nwhich does the call to [BuildContext.inheritFromWidgetOfExactType]. This\nallows the class to define its own fallback logic in case there isn't\na widget in scope. In the example above, the value returned will be\nnull in that case, but it could also have defaulted to a value.\n\nSometimes, the `of` method returns the data rather than the inherited\nwidget; for example, in this case it could have returned a [Color] instead\nof the `FrogColor` widget.\n\nOccasionally, the inherited widget is an implementation detail of another\nclass, and is therefore private. The `of` method in that case is typically\nput on the public class instead. For example, [Theme] is implemented as a\n[StatelessWidget] that builds a private inherited widget; [Theme.of] looks\nfor that inherited widget using [BuildContext.inheritFromWidgetOfExactType]\nand then returns the [ThemeData].\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressDraggable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child draggable starting from long press.", "detail": "", "kind": 7, "label": "LongPressDraggable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls how [Scrollable] widgets behave in a subtree.\n\nThe scroll configuration determines the [ScrollPhysics] and viewport\ndecorations used by descendants of [child].", "detail": "", "kind": 7, "label": "ScrollConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interactive button within either material's [BottomNavigationBar]\nor the iOS themed [CupertinoTabBar] with an icon and title.\n\nThis class is rarely used in isolation. It is typically embedded in one of\nthe bottom navigation widgets above.\n\nSee also:\n\n * [BottomNavigationBar]\n * <https://material.io/design/components/bottom-navigation.html>\n * [CupertinoTabBar]\n * <https://developer.apple.com/ios/human-interface-guidelines/bars/tab-bars>", "detail": "", "kind": 7, "label": "BottomNavigationBarItem" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that enables inspecting the child widget's structure.\n\nSelect a location on your device or emulator and view what widgets and\nrender object that best matches the location. An outline of the selected\nwidget and terse summary information is shown on device with detailed\ninformation is shown in the observatory or in IntelliJ when using the\nFlutter Plugin.\n\nThe inspector has a select mode and a view mode.\n\nIn the select mode, tapping the device selects the widget that best matches\nthe location of the touch and switches to view mode. Dragging a finger on\nthe device selects the widget under the drag location but does not switch\nmodes. Touching the very edge of the bounding box of a widget triggers\nselecting the widget even if another widget that also overlaps that\nlocation would otherwise have priority.\n\nIn the view mode, the previously selected widget is outlined, however,\ntouching the device has the same effect it would have if the inspector\nwasn't present. This allows interacting with the application and viewing how\nthe selected widget changes position. Clicking on the select icon in the\nbottom left corner of the application switches back to select mode.", "detail": "", "kind": 7, "label": "WidgetInspector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A graphical icon widget drawn with a glyph from a font described in\nan [IconData] such as material's predefined [IconData]s in [Icons].\n\nIcons are not interactive. For an interactive icon, consider material's\n[IconButton].\n\nThere must be an ambient [Directionality] widget when using [Icon].\nTypically this is introduced automatically by the [WidgetsApp] or\n[MaterialApp].\n\nThis widget assumes that the rendered icon is squared. Non-squared icons may\nrender incorrectly.\n\n\nThis example shows how to use [Icon] to create an addition icon, in the\ncolor pink, and 30 x 30 pixels in size.\n\n```dart\nIcon(\n Icons.add,\n color: Colors.pink,\n size: 30.0,\n)\n```\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [Icons], for the list of available icons for use with this class.\n * [IconTheme], which provides ambient configuration for icons.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "Icon" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidgetBaseState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations that need to rebuild their\nwidget tree as the animation runs.\n\nThis class calls [build] each frame that the animation tickets. For a\nvariant that does not rebuild each frame, consider subclassing\n[ImplicitlyAnimatedWidgetState] directly.\n\nSubclasses must implement the [forEachTween] method to allow\n[AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields\nand animate them.", "detail": "", "kind": 7, "label": "AnimatedWidgetBaseState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePopDisposition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates whether the current route should be popped.\n\nUsed as the return value for [Route.willPop].\n\nSee also:\n\n * [WillPopScope], a widget that hooks into the route's [Route.willPop]\n mechanism.", "detail": "", "kind": 13, "label": "RoutePopDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rounded rectangle.\n\nBy default, [ClipRRect] uses its own bounds as the base rectangle for the\nclip, but the size and location of the clip can be customized using a custom\n[clipper].\n\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Hero", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that marks its child as being a candidate for\n[hero animations](https://flutter.dev/docs/development/ui/animations/hero-animations).\n\nWhen a [PageRoute] is pushed or popped with the [Navigator], the entire\nscreen's content is replaced. An old route disappears and a new route\nappears. If there's a common visual feature on both routes then it can\nbe helpful for orienting the user for the feature to physically move from\none page to the other during the routes' transition. Such an animation\nis called a *hero animation*. The hero widgets \"fly\" in the Navigator's\noverlay during the transition and while they're in-flight they're, by\ndefault, not shown in their original locations in the old and new routes.\n\nTo label a widget as such a feature, wrap it in a [Hero] widget. When\nnavigation happens, the [Hero] widgets on each route are identified\nby the [HeroController]. For each pair of [Hero] widgets that have the\nsame tag, a hero animation is triggered.\n\nIf a [Hero] is already in flight when navigation occurs, its\nflight animation will be redirected to its new destination. The\nwidget shown in-flight during the transition is, by default, the\ndestination route's [Hero]'s child.\n\nFor a Hero animation to trigger, the Hero has to exist on the very first\nframe of the new page's animation.\n\nRoutes must not contain more than one [Hero] for each [tag].\n\n\n## Discussion\n\nHeroes and the [Navigator]'s [Overlay] [Stack] must be axis-aligned for\nall this to work. The top left and bottom right coordinates of each animated\nHero will be converted to global coordinates and then from there converted\nto that [Stack]'s coordinate space, and the entire Hero subtree will, for\nthe duration of the animation, be lifted out of its original place, and\npositioned on that stack. If the [Hero] isn't axis aligned, this is going to\nfail in a rather ugly fashion. Don't rotate your heroes!\n\nTo make the animations look good, it's critical that the widget tree for the\nhero in both locations be essentially identical. The widget of the *target*\nis, by default, used to do the transition: when going from route A to route\nB, route B's hero's widget is placed over route A's hero's widget. If a\n[flightShuttleBuilder] is supplied, its output widget is shown during the\nflight transition instead.\n\nBy default, both route A and route B's heroes are hidden while the\ntransitioning widget is animating in-flight above the 2 routes.\n[placeholderBuilder] can be used to show a custom widget in their place\ninstead once the transition has taken flight.\n\nDuring the transition, the transition widget is animated to route B's hero's\nposition, and then the widget is inserted into route B. When going back from\nB to A, route A's hero's widget is, by default, placed over where route B's\nhero's widget was, and then the animation goes the other way.\n\n### Nested Navigators\n\nIf either or both routes contain nested [Navigator]s, only [Hero]s\ncontained in the top-most routes (as defined by [Route.isCurrent]) *of those\nnested [Navigator]s* are considered for animation. Just like in the\nnon-nested case the top-most routes containing these [Hero]s in the nested\n[Navigator]s have to be [PageRoute]s.\n\n## Parts of a Hero Transition\n\n![Diagrams with parts of the Hero transition.](https://flutter.github.io/assets-for-api-docs/assets/interaction/heroes.png)", "detail": "", "kind": 7, "label": "Hero" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling container that animates items when they are inserted or removed.\n\nThis widget's [AnimatedListState] can be used to dynamically insert or remove\nitems. To refer to the [AnimatedListState] either provide a [GlobalKey] or\nuse the static [of] method from an item's input callback.\n\nThis widget is similar to one created by [ListView.builder].", "detail": "", "kind": 7, "label": "AnimatedList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Scrollable] to build the viewport through which the\nscrollable content is displayed.", "detail": "(BuildContext context, ViewportOffset position) → Widget", "kind": 7, "label": "ViewportBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraintsTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BoxConstraints].\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[BoxConstraints.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BoxConstraintsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses an [InheritedWidget] as its configuration.", "detail": "", "kind": 7, "label": "InheritedElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformFollower", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that follows a [CompositedTransformTarget].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\napplies a transformation that causes it to provide its child with a\ncoordinate space that matches that of the linked [CompositedTransformTarget]\nwidget, offset by [offset].\n\nThe [LayerLink] object used as the [link] must be the same object as that\nprovided to the matching [CompositedTransformTarget].\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nthis [CompositedTransformFollower].\n\nHit testing on descendants of this widget will only work if the target\nposition is within the box that this widget's parent considers to be\nhittable. If the parent covers the screen, this is trivially achievable, so\nthis widget is usually used as the root of an [OverlayEntry] in an app-wide\n[Overlay] (e.g. as created by the [MaterialApp] widget's [Navigator]).\n\nSee also:\n\n * [CompositedTransformTarget], the widget that this widget can target.\n * [FollowerLayer], the layer that implements this widget's logic.\n * [Transform], which applies an arbitrary transform to a child.", "detail": "", "kind": 7, "label": "CompositedTransformFollower" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableText", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A basic text input field.\n\nThis widget interacts with the [TextInput] service to let the user edit the\ntext it contains. It also provides scrolling, selection, and cursor\nmovement. This widget does not provide any focus management (e.g.,\ntap-to-focus).\n\n## Input Actions\n\nA [TextInputAction] can be provided to customize the appearance of the\naction button on the soft keyboard for Android and iOS. The default action\nis [TextInputAction.done].\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\nEditableText receives focus. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\n## Lifecycle\n\nUpon completion of editing, like pressing the \"done\" button on the keyboard,\ntwo actions take place:\n\n 1st: Editing is finalized. The default behavior of this step includes\n an invocation of [onChanged]. That default behavior can be overridden.\n See [onEditingComplete] for details.\n\n 2nd: [onSubmitted] is invoked with the user's input value.\n\n[onSubmitted] can be used to manually move focus to another input widget\nwhen a user finishes with the currently focused input widget.\n\nRather than using this widget directly, consider using [TextField], which\nis a full-featured, material-design text input field with placeholder text,\nlabels, and [Form] integration.\n\n## Gesture Events Handling\n\nThis widget provides rudimentary, platform-agnostic gesture handling for\nuser actions such as tapping, long-pressing and scrolling when\n[rendererIgnoresPointer] is false (false by default). To tightly conform\nto the platform behavior with respect to input gestures in text fields, use\n[TextField] or [CupertinoTextField]. For custom selection behavior, call\nmethods such as [RenderEditable.selectPosition],\n[RenderEditable.selectWord], etc. programmatically.\n\nSee also:\n\n * [TextField], which is a full-featured, material-design text input field\n with placeholder text, labels, and [Form] integration.", "detail": "", "kind": 7, "label": "EditableText" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an editable text field.\n\nWhenever the user modifies a text field with an associated\n[TextEditingController], the text field updates [value] and the controller\nnotifies its listeners. Listeners can then read the [text] and [selection]\nproperties to learn what the user has typed or how the selection has been\nupdated.\n\nSimilarly, if you modify the [text] or [selection] properties, the text\nfield will be notified and will update itself appropriately.\n\nA [TextEditingController] can also be used to provide an initial value for a\ntext field. If you build a text field with a controller that already has\n[text], the text field will use that text as its initial value.\n\nThe [text] or [selection] properties can be set from within a listener\nadded to this controller. If both properties need to be changed then the\ncontroller's [value] should be set instead.\n\nThis example creates a [TextField] with a [TextEditingController] whose\nchange listener forces the entered text to be lower case and keeps the\ncursor at the end of the input.\n\n```dart\nfinal _controller = TextEditingController();\n\nvoid initState() {\n _controller.addListener(() {\n final text = _controller.text.toLowerCase();\n _controller.value = _controller.value.copyWith(\n text: text,\n selection: TextSelection(baseOffset: text.length, extentOffset: text.length),\n composing: TextRange.empty,\n );\n });\n super.initState();\n}\n\nvoid dispose() {\n _controller.dispose();\n super.dispose();\n}\n\nWidget build(BuildContext context) {\n return Scaffold(\n body: Container(\n alignment: Alignment.center,\n padding: const EdgeInsets.all(6),\n child: TextFormField(\n controller: _controller,\n decoration: InputDecoration(border: OutlineInputBorder()),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [TextField], which is a Material Design text field that can be controlled\n with a [TextEditingController].\n * [EditableText], which is a raw region of editable text that can be\n controlled with a [TextEditingController].", "detail": "", "kind": 7, "label": "TextEditingController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsApp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience class that wraps a number of widgets that are commonly\nrequired for an application.\n\nOne of the primary roles that [WidgetsApp] provides is binding the system\nback button to popping the [Navigator] or quitting the application.\n\nSee also: [CheckedModeBanner], [DefaultTextStyle], [MediaQuery],\n[Localizations], [Title], [Navigator], [Overlay], [SemanticsDebugger] (the\nwidgets wrapped by this one).", "detail": "", "kind": 7, "label": "WidgetsApp" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for scroll views whose items have the same size.\n\nSimilar to a standard [ScrollController] but with the added convenience\nmechanisms to read and go to item indices rather than a raw pixel scroll\noffset.\n\nSee also:\n\n * [ListWheelScrollView], a scrollable view widget with fixed size items\n that this widget controls.\n * [FixedExtentMetrics], the `metrics` property exposed by\n [ScrollNotification] from [ListWheelScrollView] which can be used\n to listen to the current item index on a push basis rather than polling\n the [FixedExtentScrollController].", "detail": "", "kind": 7, "label": "FixedExtentScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays an image.\n\nSeveral constructors are provided for the various ways that an image can be\nspecified:\n\n * [new Image], for obtaining an image from an [ImageProvider].\n * [new Image.asset], for obtaining an image from an [AssetBundle]\n using a key.\n * [new Image.network], for obtaining an image from a URL.\n * [new Image.file], for obtaining an image from a [File].\n * [new Image.memory], for obtaining an image from a [Uint8List].\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\nTo automatically perform pixel-density-aware asset resolution, specify the\nimage using an [AssetImage] and make sure that a [MaterialApp], [WidgetsApp],\nor [MediaQuery] widget exists above the [Image] widget in the widget tree.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nSee also:\n\n * [Icon], which shows an image from a font.\n * [new Ink.image], which is the preferred way to show an image in a\n material application (especially if the image is in a [Material] and will\n have an [InkWell] on top of it).\n * [Image](https://api.flutter.dev/flutter/dart-ui/Image-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspectorService", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Service used by GUI tools to interact with the [WidgetInspector].\n\nCalls to this object are typically made from GUI tools such as the [Flutter\nIntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nusing the [Dart VM Service protocol](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md).\nThis class uses its own object id and manages object lifecycles itself\ninstead of depending on the [object ids](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#getobject)\nspecified by the VM Service Protocol because the VM Service Protocol ids\nexpire unpredictably. Object references are tracked in groups so that tools\nthat clients can use dereference all objects in a group with a single\noperation making it easier to avoid memory leaks.\n\nAll methods in this class are appropriate to invoke from debugging tools\nusing the Observatory service protocol to evaluate Dart expressions of the\nform `WidgetInspectorService.instance.methodName(arg1, arg2, ...)`. If you\nmake changes to any instance method of this class you need to verify that\nthe [Flutter IntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nwidget inspector support still works with the changes.\n\nAll methods returning String values return JSON.", "detail": "", "kind": 7, "label": "WidgetInspectorService" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorber", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[SliverOverlapInjector].\n\nSee also:\n\n * [NestedScrollView], whose documentation has sample code showing how to\n use this widget.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned without\ncommitting to a specific [TextDirection].\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nA [PositionedDirectional] widget must be a descendant of a [Stack], and the\npath from the [PositionedDirectional] widget to its enclosing [Stack] must\ncontain only [StatelessWidget]s or [StatefulWidget]s (not other kinds of\nwidgets, like [RenderObjectWidget]s).\n\nIf a widget is wrapped in a [PositionedDirectional], then it is a\n_positioned_ widget in its [Stack]. If the [top] property is non-null, the\ntop edge of this child/ will be positioned [top] layout units from the top\nof the stack widget. The [start], [bottom], and [end] properties work\nanalogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [start] and [end] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nSee also:\n\n * [Positioned], which specifies the widget's position visually.\n * [Positioned.directional], which also specifies the widget's horizontal\n position using [start] and [end] but has an explicit [TextDirection].", "detail": "", "kind": 7, "label": "PositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsDebugger", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that visualizes the semantics for the child.\n\nThis widget is useful for understand how an app presents itself to\naccessibility technology.", "detail": "", "kind": 7, "label": "SemanticsDebugger" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPadding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that applies padding on each side of another sliver.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverPadding]\nis a basic sliver that insets another sliver by applying padding on each\nside.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a [SliverPersistentHeader] with\n`pinned:true` will cause the app bar to overlap earlier slivers (contrary to\nthe normal behavior of pinned app bars), and while the app bar is pinned,\nthe padding will scroll away.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.", "detail": "", "kind": 7, "label": "SliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [SingleChildRenderObjectWidget] as its configuration.\n\nThe child is optional.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [RenderObjectWithChildMixin] mixin. Such widgets are\nexpected to inherit from [SingleChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "SingleChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQueryData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Information about a piece of media (e.g., a window).\n\nFor example, the [MediaQueryData.size] property contains the width and\nheight of the current window.\n\nTo obtain the current [MediaQueryData] for a given [BuildContext], use the\n[MediaQuery.of] function. For example, to obtain the size of the current\nwindow, use `MediaQuery.of(context).size`.\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nMediaQueryData includes two [EdgeInsets] values:\n[padding] and [viewInsets]. These\nvalues reflect the configuration of the device and are used by\nmany top level widgets, like [SafeArea] and the Cupertino and\nMaterial scaffold widgets. The padding value defines areas that\nmight not be completely visible, like the display \"notch\" on the\niPhone X. The viewInsets value defines areas that aren't visible at\nall, typically because they're obscured by the device's keyboard.\n\nThe viewInsets and padding values are independent, they're both\nmeasured from the edges of the MediaQuery widget's bounds. The\nbounds of the top level MediaQuery created by [WidgetsApp] are the\nsame as the window that contains the app.\n\nWidgets whose layouts consume space defined by [viewInsets] or\n[padding] should enclose their children in secondary MediaQuery\nwidgets that reduce those properties by the same amount.\nThe [removePadding] and [removeInsets] methods are useful for this.", "detail": "", "kind": 7, "label": "MediaQueryData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalBarrier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nSee also:\n\n * [ModalRoute], which indirectly uses this widget.\n * [AnimatedModalBarrier], which is similar but takes an animated [color]\n instead of a single color value.", "detail": "", "kind": 7, "label": "ModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that builds a widget given a child.\n\nThe child should typically be part of the returned widget tree.\n\nUsed by [AnimatedBuilder.builder], as well as [WidgetsApp.builder] and\n[MaterialApp.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context, Widget child) → Widget", "kind": 7, "label": "TransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyleTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DefaultTextStyle] that animates the different properties\nof its [TextStyle].\n\nSee also:\n\n * [DefaultTextStyle], which also defines a [TextStyle] for its descendants\n but is not animated.", "detail": "", "kind": 7, "label": "DefaultTextStyleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderNestedScrollViewViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [RenderViewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "RenderNestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have no children.", "detail": "", "kind": 7, "label": "LeafRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Viewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside.\n\n[Viewport] is the visual workhorse of the scrolling machinery. It displays a\nsubset of its children according to its own dimensions and the given\n[offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[Viewport] hosts a bidirectional list of slivers, anchored on a [center]\nsliver, which is placed at the zero scroll offset. The center widget is\ndisplayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[Viewport] cannot contain box children directly. Instead, use a\n[SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [Viewport] into widgets that are easier to use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [ShrinkWrappingViewport], a variant of [Viewport] that shrink-wraps its\n contents along the main axis.", "detail": "", "kind": 7, "label": "Viewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a shape.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\nFor shapes that cannot be expressed as a rectangle with rounded corners use\n[PhysicalShape].\n\nSee also:\n\n * [DecoratedBox], which can apply more arbitrary shadow effects.\n * [ClipRect], which applies a clip to its child.", "detail": "", "kind": 7, "label": "PhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQuery", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a subtree in which media queries resolve to the given data.\n\nFor example, to learn the size of the current media (e.g., the window\ncontaining your app), you can read the [MediaQueryData.size] property from\nthe [MediaQueryData] returned by [MediaQuery.of]:\n`MediaQuery.of(context).size`.\n\nQuerying the current media using [MediaQuery.of] will cause your widget to\nrebuild automatically whenever the [MediaQueryData] changes (e.g., if the\nuser rotates their device).\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nSee also:\n\n * [WidgetsApp] and [MaterialApp], which introduce a [MediaQuery] and keep\n it up to date with the current screen metrics as they change.\n * [MediaQueryData], the data structure that represents the metrics.", "detail": "", "kind": 7, "label": "MediaQuery" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionGestureDetector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A gesture detector to respond to non-exclusive event chains for a text field.\n\nAn ordinary [GestureDetector] configured to handle events like tap and\ndouble tap will only recognize one or the other. This widget detects both:\nfirst the tap and then, if another tap down occurs within a time limit, the\ndouble tap.\n\nSee also:\n\n * [TextField], a Material text field which uses this gesture detector.\n * [CupertinoTextField], a Cupertino text field which uses this gesture\n detector.", "detail": "", "kind": 7, "label": "TextSelectionGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Baseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its child according to the child's baseline.\n\nThis widget shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child. If [baseline] is less than the distance from\nthe top of the child to the baseline of the child, then the child\nis top-aligned instead.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [Center], a widget that centers its child within itself.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Baseline" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LabeledGlobalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key with a debugging label.\n\nThe debug label is useful for documentation and for debugging. The label\ndoes not affect the key's identity.", "detail": "", "kind": 7, "label": "LabeledGlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of an icon fulfilled by a font glyph.\n\nSee [Icons] for a number of predefined icons available for material\ndesign applications.", "detail": "", "kind": 7, "label": "IconData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches iOS.\n\nSee also:\n\n * [ClampingScrollSimulation], which implements Android scroll physics.", "detail": "", "kind": 7, "label": "BouncingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillRemaining", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[SliverFillRemaining] sizes its child to fill the viewport in the cross axis\nand to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPositionWithSingleContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll position that manages scroll activities for a single\n[ScrollContext].\n\nThis class is a concrete subclass of [ScrollPosition] logic that handles a\nsingle [ScrollContext], such as a [Scrollable]. An instance of this class\nmanages [ScrollActivity] instances, which change what content is visible in\nthe [Scrollable]'s [Viewport].\n\nSee also:\n\n * [ScrollPosition], which defines the underlying model for a position\n within a [Scrollable] but is agnostic as to how that position is\n changed.\n * [ScrollView] and its subclasses such as [ListView], which use\n [ScrollPositionWithSingleContext] to manage their scroll position.\n * [ScrollController], which can manipulate one or more [ScrollPosition]s,\n and which uses [ScrollPositionWithSingleContext] as its default class for\n scroll positions.", "detail": "", "kind": 7, "label": "ScrollPositionWithSingleContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlowingOverscrollIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A visual indication that a scroll view has overscrolled.\n\nA [GlowingOverscrollIndicator] listens for [ScrollNotification]s in order\nto control the overscroll indication. These notifications are typically\ngenerated by a [ScrollView], such as a [ListView] or a [GridView].\n\n[GlowingOverscrollIndicator] generates [OverscrollIndicatorNotification]\nbefore showing an overscroll indication. To prevent the indicator from\nshowing the indication, call [OverscrollIndicatorNotification.disallowGlow]\non the notification.\n\nCreated automatically by [ScrollBehavior.buildViewportChrome] on platforms\n(e.g., Android) that commonly use this type of overscroll indication.\n\nIn a [MaterialApp], the edge glow color is the [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "GlowingOverscrollIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverflowBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nSee also:\n\n * [RenderConstrainedOverflowBox] for details about how [OverflowBox] is\n rendered.\n * [SizedOverflowBox], a widget that is a specific size but passes its\n original constraints through to its child, which may then overflow.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], a box with a specified size.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "OverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableCanceledCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] is dropped without being accepted by a [DragTarget].\n\nUsed by [Draggable.onDraggableCanceled].", "detail": "(Velocity velocity, Offset offset) → void", "kind": 7, "label": "DraggableCanceledCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShrinkWrappingViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside and shrink wraps its children in the\nmain axis.\n\n[ShrinkWrappingViewport] displays a subset of its children according to its\nown dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[ShrinkWrappingViewport] differs from [Viewport] in that [Viewport] expands\nto fill the main axis whereas [ShrinkWrappingViewport] sizes itself to match\nits children in the main axis. This shrink wrapping behavior is expensive\nbecause the children, and hence the viewport, could potentially change size\nwhenever the [offset] changes (e.g., because of a collapsing header).\n\n[ShrinkWrappingViewport] cannot contain box children directly. Instead, use\na [SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [ShrinkWrappingViewport] into widgets that are easier to\n use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [Viewport], a viewport that does not shrink-wrap its contents.", "detail": "", "kind": 7, "label": "ShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragSelectionUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that's dragging to select text has moved again.\n\nThe first argument [startDetails] contains the details of the event that\ninitiated the dragging.\n\nThe second argument [updateDetails] contains the details of the current\npointer movement. It's the same as the one passed to [DragGestureRecognizer.onUpdate].\n\nThis signature is different from [GestureDragUpdateCallback] to make it\neasier for various text fields to use [TextSelectionGestureDetector] without\nhaving to store the start position.", "detail": "(DragStartDetails startDetails, DragUpdateDetails updateDetails) → void", "kind": 7, "label": "DragSelectionUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverWithKeepAliveWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have [KeepAlive] children.", "detail": "", "kind": 7, "label": "SliverWithKeepAliveWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrackingScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollController] whose [initialScrollOffset] tracks its most recently\nupdated [ScrollPosition].\n\nThis class can be used to synchronize the scroll offset of two or more\nlazily created scroll views that share a single [TrackingScrollController].\nIt tracks the most recently updated scroll position and reports it as its\n`initialScrollOffset`.\n\n\nIn this example each [PageView] page contains a [ListView] and all three\n[ListView]'s share a [TrackingScrollController]. The scroll offsets of all\nthree list views will track each other, to the extent that's possible given\nthe different list lengths.\n\n```dart\nPageView(\n children: <Widget>[\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),\n ),\n ],\n)\n```\n\nIn this example the `_trackingController` would have been created by the\nstateful widget that built the widget tree.", "detail": "", "kind": 7, "label": "TrackingScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for stateful widgets that have exactly one inflated instance in\nthe tree.\n\nSuch widgets must be given a [GlobalKey]. This key can be generated by the\nsubclass from its [Type] object, e.g. by calling `super(key: new\nGlobalObjectKey(MyWidget))` where `MyWidget` is the name of the subclass.\n\nSince only one instance can be inflated at a time, there is only ever one\ncorresponding [State] object. That object is exposed, for convenience, via\nthe [currentState] property.\n\nWhen subclassing [UniqueWidget], provide the corresponding [State] subclass\nas the type argument.", "detail": "", "kind": 7, "label": "UniqueWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\nScrollable widgets consist of three pieces:\n\n 1. A [Scrollable] widget, which listens for various user gestures and\n implements the interaction design for scrolling.\n 2. A viewport widget, such as [Viewport] or [ShrinkWrappingViewport], which\n implements the visual design for scrolling by displaying only a portion\n of the widgets inside the scroll view.\n 3. One or more slivers, which are widgets that can be composed to created\n various scrolling effects, such as lists, grids, and expanding headers.\n\n[ScrollView] helps orchestrate these pieces by creating the [Scrollable] and\nthe viewport and deferring to its subclass to create the slivers.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatusTransitionWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given animation changes status.", "detail": "", "kind": 7, "label": "StatusTransitionWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutChangedNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the layout of one of the descendants of the object receiving\nthis notification has changed in some way, and that therefore any\nassumptions about that layout are no longer valid.\n\nUseful if, for instance, you're trying to align multiple descendants.\n\nTo listen for notifications in a subtree, use a\n[NotificationListener<LayoutChangedNotification>].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].\n\nIn the widgets library, only the [SizeChangedLayoutNotifier] class and\n[Scrollable] classes dispatch this notification (specifically, they dispatch\n[SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).\nTransitions, in particular, do not. Changing one's layout in one's build\nfunction does not cause this notification to be dispatched automatically. If\nan ancestor expects to be notified for any layout change, make sure you\neither only use widgets that never change layout, or that notify their\nancestors when appropriate, or alternatively, dispatch the notifications\nyourself when appropriate.\n\nAlso, since this notification is sent when the layout is changed, it is only\nuseful for paint effects that depend on the layout. If you were to use this\nnotification to change the build, for instance, you would always be one\nframe behind, which would look really ugly and laggy.", "detail": "", "kind": 7, "label": "LayoutChangedNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedModalBarrier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself,\nand can be configured with an animated color value.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nThis widget is similar to [ModalBarrier] except that it takes an animated\n[color] instead of a single color.\n\nSee also:\n\n * [ModalRoute], which uses this widget.", "detail": "", "kind": 7, "label": "AnimatedModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that creates custom scroll effects using slivers.\n\nA [CustomScrollView] lets you supply [slivers] directly to create various\nscrolling effects, such as lists, grids, and expanding headers. For example,\nto create a scroll view that contains an expanding app bar followed by a\nlist and a grid, use a list of three slivers: [SliverAppBar], [SliverList],\nand [SliverGrid].\n\n[Widget]s in these [slivers] must produce [RenderSliver] objects.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n\nThis sample code shows a scroll view that contains a flexible pinned app\nbar, a grid, and an infinite list.\n\n```dart\nCustomScrollView(\n slivers: <Widget>[\n const SliverAppBar(\n pinned: true,\n expandedHeight: 250.0,\n flexibleSpace: FlexibleSpaceBar(\n title: Text('Demo'),\n ),\n ),\n SliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n ),\n SliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n ),\n ],\n)\n```\n\n## Accessibility\n\nA [CustomScrollView] can allow Talkback/VoiceOver to make announcements\nto the user when the scroll state changes. For example, on Android an\nannouncement might be read as \"showing items 1 to 10 of 23\". To produce\nthis announcement, the scroll view needs three pieces of information:\n\n * The first visible child index.\n * The total number of children.\n * The total number of visible children.\n\nThe last value can be computed exactly by the framework, however the first\ntwo must be provided. Most of the higher-level scrollable widgets provide\nthis information automatically. For example, [ListView] provides each child\nwidget with a semantic index automatically and sets the semantic child\ncount to the length of the list.\n\nTo determine visible indexes, the scroll view needs a way to associate the\ngenerated semantics of each scrollable item with a semantic index. This can\nbe done by wrapping the child widgets in an [IndexedSemantics].\n\nThis semantic index is not necessarily the same as the index of the widget in\nthe scrollable, because some widgets may not contribute semantic\ninformation. Consider a [new ListView.separated()]: every other widget is a\ndivider with no semantic information. In this case, only odd numbered\nwidgets have a semantic index (equal to the index ~/ 2). Furthermore, the\ntotal number of children in this example would be half the number of\nwidgets. (The [new ListView.separated()] constructor handles this\nautomatically; this is only used here as an example.)\n\nThe total number of visible children can be provided by the constructor\nparameter `semanticChildCount`. This should always be the same as the\nnumber of widgets wrapped in [IndexedSemantics].\n\nSee also:\n\n * [SliverList], which is a sliver that displays linear list of children.\n * [SliverFixedExtentList], which is a more efficient sliver that displays\n linear list of children that have the same extent along the scroll axis.\n * [SliverGrid], which is a sliver that displays a 2D array of children.\n * [SliverPadding], which is a sliver that adds blank space around another\n sliver.\n * [SliverAppBar], which is a sliver that displays a header that can expand\n and float as the scroll view scrolls.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].\n * [IndexedSemantics], which allows annotating child lists with an index\n for scroll announcements.", "detail": "", "kind": 7, "label": "CustomScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's size.\n\nSimilar to the [Builder] widget except that the framework calls the [builder]\nfunction at layout time and provides the parent widget's constraints. This\nis useful when the parent constrains the child's size and doesn't depend on\nthe child's intrinsic size. The [LayoutBuilder]'s final size will match its\nchild's size.\n\n\nIf the child should be smaller than the parent, consider wrapping the child\nin an [Align] widget. If the child might want to be bigger, consider\nwrapping it in a [SingleChildScrollView].\n\nSee also:\n\n * [Builder], which calls a `builder` function at build time.\n * [StatefulBuilder], which passes its `builder` function a `setState` callback.\n * [CustomSingleChildLayout], which positions its child during layout.", "detail": "", "kind": 7, "label": "LayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPaint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [CustomPaint] first asks its [painter] to paint on the\ncurrent canvas, then it paints its child, and then, after painting its\nchild, it asks its [foregroundPainter] to paint. The coordinate system of the\ncanvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing [CustomPainter].\n\n\nBecause custom paint calls its painters during paint, you cannot call\n`setState` or `markNeedsLayout` during the callback (the layout for this\nframe has already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [size], which defaults to\n[Size.zero]. [size] must not be null.\n\n[isComplex] and [willChange] are hints to the compositor's raster cache\nand must not be null.\n\n\nThis example shows how the sample custom painter shown at [CustomPainter]\ncould be used in a [CustomPaint] widget to display a background to some\ntext.\n\n```dart\nCustomPaint(\n painter: Sky(),\n child: Center(\n child: Text(\n 'Once upon a time...',\n style: const TextStyle(\n fontSize: 40.0,\n fontWeight: FontWeight.w900,\n color: Color(0xFFFFFFFF),\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomPainter], the class to extend when creating custom painters.\n * [Canvas], the class that a custom painter uses to paint.", "detail": "", "kind": 7, "label": "CustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays a [dart:ui.Image] directly.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nThis widget is rarely used directly. Instead, consider using [Image].", "detail": "", "kind": 7, "label": "RawImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicHeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Element that supports building children lazily for [ListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotatedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rotates its child by a integral number of quarter turns.\n\nUnlike [Transform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.\n\n\nThis snippet rotates the child (some [Text]) so that it renders from bottom\nto top, like an axis label on a graph:\n\n```dart\nRotatedBox(\n quarterTurns: 3,\n child: const Text('Hello World!'),\n)\n```\n\nSee also:\n\n * [Transform], which is a paint effect that allows you to apply an\n arbitrary transform to a child.\n * [new Transform.rotate], which applies a rotation paint effect.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "RotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapInjector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [RenderSliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [RenderViewport] (probably a [RenderNestedScrollViewViewport]), so\nthat it will always be laid out before the [RenderSliverOverlapInjector]\nduring a particular frame.", "detail": "", "kind": 7, "label": "RenderSliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSingleChildLayout", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.\n\nSee also:\n\n * [SingleChildLayoutDelegate], which controls the layout of the child.\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [FractionallySizedBox], which sizes its child based on a fraction of its own\n size and positions the child according to an [Alignment] value.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.", "detail": "", "kind": 7, "label": "CustomSingleChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the subtree through which this notification bubbles must be\nkept alive even if it would normally be discarded as an optimization.\n\nFor example, a focused text field might fire this notification to indicate\nthat it should not be disposed even if the user scrolls the field off\nscreen.\n\nEach [KeepAliveNotification] is configured with a [handle] that consists of\na [Listenable] that is triggered when the subtree no longer needs to be kept\nalive.\n\nThe [handle] should be triggered any time the sending widget is removed from\nthe tree (in [State.deactivate]). If the widget is then rebuilt and still\nneeds to be kept alive, it should immediately send a new notification\n(possible with the very same [Listenable]) during build.\n\nThis notification is listened to by the [AutomaticKeepAlive] widget, which\nis added to the tree automatically by [SliverList] (and [ListView]) and\n[SliverGrid] (and [GridView]) widgets.\n\nFailure to trigger the [handle] in the manner described above will likely\ncause the [AutomaticKeepAlive] to lose track of whether the widget should be\nkept alive or not, leading to memory leaks or lost data. For example, if the\nwidget that requested keep-alive is removed from the subtree but doesn't\ntrigger its [Listenable] on the way out, then the subtree will continue to\nbe kept alive until the list itself is disposed. Similarly, if the\n[Listenable] is triggered while the widget needs to be kept alive, but a new\n[KeepAliveNotification] is not immediately sent, then the widget risks being\ngarbage collected while it wants to be kept alive.\n\nIt is an error to use the same [handle] in two [KeepAliveNotification]s\nwithin the same [AutomaticKeepAlive] without triggering that [handle] before\nthe second notification is sent.\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses\n[KeepAliveNotification] internally.", "detail": "", "kind": 7, "label": "KeepAliveNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a route for the given route settings.\n\nUsed by [Navigator.onGenerateRoute] and [Navigator.onUnknownRoute].", "detail": "(RouteSettings settings) → Route<dynamic>", "kind": 7, "label": "RouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPath", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a path.\n\nCalls a callback on a delegate whenever the widget is to be\npainted. The callback returns a path and the widget prevents the\nchild from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized widgets:\n\n * To clip to a rectangle, consider [ClipRect].\n * To clip to an oval or circle, consider [ClipOval].\n * To clip to a rounded rectangle, consider [ClipRRect].\n\nTo clip to a particular [ShapeBorder], consider using either the\n[ClipPath.shape] static method or the [ShapeBorderClipper] custom clipper\nclass.", "detail": "", "kind": 7, "label": "ClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElementVisitor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback to [BuildContext.visitChildElements].\n\nThe argument is the child being visited.\n\nIt is safe to call `element.visitChildElements` reentrantly within\nthis callback.", "detail": "(Element element) → void", "kind": 7, "label": "ElementVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormField", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single form field.\n\nThis widget maintains the current state of the form field, so that updates\nand validation errors are visually reflected in the UI.\n\nWhen used inside a [Form], you can use methods on [FormState] to query or\nmanipulate the form data as a whole. For example, calling [FormState.save]\nwill invoke each [FormField]'s [onSaved] callback in turn.\n\nUse a [GlobalKey] with [FormField] if you want to retrieve its current\nstate, for example if you want one form field to depend on another.\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nSee also:\n\n * [Form], which is the widget that aggregates the form fields.\n * [TextField], which is a commonly used form field for entering text.", "detail": "", "kind": 7, "label": "FormField" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the widgets layer and the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListenerCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [Notification] listeners.\n\nReturn true to cancel the notification bubbling. Return false to allow the\nnotification to continue to be dispatched to further ancestors.\n\nUsed by [NotificationListener.onNotification].", "detail": "(T notification) → bool", "kind": 7, "label": "NotificationListenerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidgetState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations.\n\n[ImplicitlyAnimatedWidgetState] requires that subclasses respond to the\nanimation, themselves. If you would like `setState()` to be called\nautomatically as the animation changes, use [AnimatedWidgetBaseState].\n\nSubclasses must implement the [forEachTween] method to allow\n[ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's\nfields and animate them.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidgetState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteTransitionsBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's transitions.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildTransitions] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) → Widget", "kind": 7, "label": "RouteTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserScrollNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that the user has changed the direction in which they are\nscrolling.\n\nSee also:\n\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "UserScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusManager", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the focus tree.\n\nThe focus tree keeps track of which [FocusNode] is the user's current\nkeyboard focus. The widget that owns the [FocusNode] often listens for\nkeyboard events.\n\nThe focus manager is responsible for holding the [FocusScopeNode] that is\nthe root of the focus tree and tracking which [FocusNode] has the overall\nfocus.\n\nThe [FocusManager] is held by the [WidgetsBinding] as\n[WidgetsBinding.focusManager]. The [FocusManager] is rarely accessed\ndirectly. Instead, to find the [FocusScopeNode] for a given [BuildContext],\nuse [FocusScope.of].\n\nThe [FocusManager] knows nothing about [FocusNode]s other than the one that\nis currently focused. If a [FocusScopeNode] is removed, then the\n[FocusManager] will attempt to focus the next [FocusScopeNode] in the focus\ntree that it maintains, but if the current focus in that [FocusScopeNode] is\nnull, it will stop there, and no [FocusNode] will have focus.\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusManager" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for [PageView].\n\nA page controller lets you manipulate which page is visible in a [PageView].\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nSee also:\n\n * [PageView], which is the widget this object controls.", "detail": "", "kind": 7, "label": "PageController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Align", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that aligns its child within itself and optionally sizes itself\nbased on the child's size.\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\n## How it works\n\nThe [alignment] property describes a point in the `child`'s coordinate system\nand a different point in the coordinate system of this widget. The [Align]\nwidget positions the `child` such that both points are lined up on top of\neach other.\n\nThe [Align] widget in this example uses one of the defined constants from\n[Alignment], [topRight]. This places the [FlutterLogo] in the top right corner\nof the parent blue [Container].\n\n![A blue square container with the Flutter logo in the top right corner.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_constant.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment.topRight,\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [Alignment] used in the following example defines a single point:\n\n * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height\n of [FlutterLogo]/2 + height of [FlutterLogo]/2) = (36.0, 48.0).\n\nThe [Alignment] class uses a coordinate system with an origin in the center\nof the [Container], as shown with the [Icon] above. [Align] will place the\n[FlutterLogo] at (36.0, 48.0) according to this coordinate system.\n\n![A blue square container with the Flutter logo positioned according to the\nAlignment specified above. A point is marked at the center of the container\nfor the origin of the Alignment coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_alignment.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [FractionalOffset] used in the following example defines two points:\n\n * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0)\n in the coordinate system of the blue container.\n * (0.2 * width of [Align], 0.6 * height of [Align]) = (24.0, 72.0) in the\n coordinate system of the [Align] widget.\n\nThe [Align] widget positions the [FlutterLogo] such that the two points are on\ntop of each other. In this example, the top left of the [FlutterLogo] will\nbe placed at (24.0, 72.0) - (12.0, 36.0) = (12.0, 36.0) from the top left of\nthe [Align] widget.\n\nThe [FractionalOffset] class uses a coordinate system with an origin in the top-left\ncorner of the [Container] in difference to the center-oriented system used in\nthe example above with [Alignment].\n\n![A blue square container with the Flutter logo positioned according to the\nFractionalOffset specified above. A point is marked at the top left corner\nof the container for the origin of the FractionalOffset coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_fractional_offset.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: FractionalOffset(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Center], which is the same as [Align] but with the [alignment] always\n set to [Alignment.center].\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Align" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables or disables tickers (and thus animation controllers) in the widget\nsubtree.\n\nThis only works if [AnimationController] objects are created using\nwidget-aware ticker providers. For example, using a\n[TickerProviderStateMixin] or a [SingleTickerProviderStateMixin].", "detail": "", "kind": 7, "label": "TickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is unique across the entire app.\n\nGlobal keys uniquely identify elements. Global keys provide access to other\nobjects that are associated with elements, such as the a [BuildContext] and,\nfor [StatefulWidget]s, a [State].\n\nWidgets that have global keys reparent their subtrees when they are moved\nfrom one location in the tree to another location in the tree. In order to\nreparent its subtree, a widget must arrive at its new location in the tree\nin the same animation frame in which it was removed from its old location in\nthe tree.\n\nGlobal keys are relatively expensive. If you don't need any of the features\nlisted above, consider using a [Key], [ValueKey], [ObjectKey], or\n[UniqueKey] instead.\n\nYou cannot simultaneously include two widgets in the tree with the same\nglobal key. Attempting to do so will assert at runtime.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "GlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget for a given index, e.g., in a\nlist.\n\nUsed by [ListView.builder] and other APIs that use lazily-generated widgets.\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [TransitionBuilder], which is similar but also takes a child.", "detail": "(BuildContext context, int index) → Widget", "kind": 7, "label": "IndexedWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Column", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a vertical array.\n\nTo cause a child to expand to fill the available vertical space, wrap the\nchild in an [Expanded] widget.\n\nThe [Column] widget does not scroll (and in general it is considered an error\nto have more children in a [Column] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a horizontal variant, see [Row].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example uses a [Column] to arrange three widgets vertically, the last\nbeing made to fill all the remaining space.\n\n```dart\nColumn(\n children: <Widget>[\n Text('Deliver features faster'),\n Text('Craft beautiful UIs'),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\nIn the sample above, the text and the logo are centered on each line. In the\nfollowing example, the [crossAxisAlignment] is set to\n[CrossAxisAlignment.start], so that the children are left-aligned. The\n[mainAxisSize] is set to [MainAxisSize.min], so that the column shrinks to\nfit the children.\n\n```dart\nColumn(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n Text('We move under cover and we move as one'),\n Text('Through the night, we have one shot to live another day'),\n Text('We cannot let a stray gunshot give us away'),\n Text('We will fight up close, seize the moment and stay in it'),\n Text('It’s either that or meet the business end of a bayonet'),\n Text('The code word is ‘Rochambeau,’ dig me?'),\n Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),\n ],\n)\n```\n\n## Troubleshooting\n\n### When the incoming vertical constraints are unbounded\n\nWhen a [Column] has one or more [Expanded] or [Flexible] children, and is\nplaced in another [Column], or in a [ListView], or in some other context\nthat does not provide a maximum height constraint for the [Column], you will\nget an exception at runtime saying that there are children with non-zero\nflex but the vertical constraints are unbounded.\n\nThe problem, as described in the details that accompany that exception, is\nthat using [Flexible] or [Expanded] means that the remaining space after\nlaying out all the other children must be shared equally, but if the\nincoming vertical constraints are unbounded, there is infinite remaining\nspace.\n\nThe key to solving this problem is usually to determine why the [Column] is\nreceiving unbounded vertical constraints.\n\nOne common reason for this to happen is that the [Column] has been placed in\nanother [Column] (without using [Expanded] or [Flexible] around the inner\nnested [Column]). When a [Column] lays out its non-flex children (those that\nhave neither [Expanded] or [Flexible] around them), it gives them unbounded\nconstraints so that they can determine their own dimensions (passing\nunbounded constraints usually signals to the child that it should\nshrink-wrap its contents). The solution in this case is typically to just\nwrap the inner column in an [Expanded] to indicate that it should take the\nremaining space of the outer column, rather than being allowed to take any\namount of room it desires.\n\nAnother reason for this message to be displayed is nesting a [Column] inside\na [ListView] or other vertical scrollable. In that scenario, there really is\ninfinite vertical space (the whole point of a vertical scrolling list is to\nallow infinite space vertically). In such scenarios, it is usually worth\nexamining why the inner [Column] should have an [Expanded] or [Flexible]\nchild: what size should the inner children really be? The solution in this\ncase is typically to remove the [Expanded] or [Flexible] widgets from around\nthe inner children.\n\nFor more discussion about constraints, see [BoxConstraints].\n\n### The yellow and black striped banner\n\nWhen the contents of a [Column] exceed the amount of space available, the\n[Column] overflows, and the contents are clipped. In debug mode, a yellow\nand black striped bar is rendered at the overflowing edge to indicate the\nproblem, and a message is printed below the [Column] saying how much\noverflow was detected.\n\nThe usual solution is to use a [ListView] rather than a [Column], to enable\nthe contents to scroll when vertical space is limited.\n\n## Layout algorithm\n\n_This section describes how a [Column] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Column] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded vertical constraints and the incoming\n horizontal constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight horizontal constraints\n that match the incoming max width.\n2. Divide the remaining vertical space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of vertical space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same horizontal\n constraints as in step 1, but instead of using unbounded vertical\n constraints, use vertical constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The width of the [Column] is the maximum width of the children (which\n will always satisfy the incoming horizontal constraints).\n5. The height of the [Column] is determined by the [mainAxisSize] property.\n If the [mainAxisSize] property is [MainAxisSize.max], then the height of\n the [Column] is the max height of the incoming constraints. If the\n [mainAxisSize] property is [MainAxisSize.min], then the height of the\n [Column] is the sum of heights of the children (subject to the incoming\n constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any vertical\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a horizontal equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may size smaller (leaving some remaining room unused).\n * [SingleChildScrollView], whose documentation discusses some ways to\n use a [Column] inside a scrolling container.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Column" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotationTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the rotation of a widget.\n\nHere's an illustration of the [RotationTransition] widget, with it's [turns]\nanimated by a [CurvedAnimation] set to [Curves.elasticOut]:\nSee also:\n\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "RotationTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldValidator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for validating a form field.\n\nReturns an error string to display if the input is invalid, or null\notherwise.\n\nUsed by [FormField.validator].", "detail": "(T value) → String", "kind": 7, "label": "FormFieldValidator" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAlive", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mark a child as needing to stay alive even when it's in a lazy list that\nwould otherwise remove it.\n\nThis widget is for use in [SliverWithKeepAliveWidget]s, such as\n[SliverGrid] or [SliverList].\n\nThis widget is rarely used directly. The [SliverChildBuilderDelegate] and\n[SliverChildListDelegate] delegates, used with [SliverList] and\n[SliverGrid], as well as the scroll view counterparts [ListView] and\n[GridView], have an `addAutomaticKeepAlives` feature, which is enabled by\ndefault, and which causes [AutomaticKeepAlive] widgets to be inserted around\neach child, causing [KeepAlive] widgets to be automatically added and\nconfigured in response to [KeepAliveNotification]s.\n\nTherefore, to keep a widget alive, it is more common to use those\nnotifications than to directly deal with [KeepAlive] widgets.\n\nIn practice, the simplest way to deal with these notifications is to mix\n[AutomaticKeepAliveClientMixin] into one's [State]. See the documentation\nfor that mixin class for details.", "detail": "", "kind": 7, "label": "KeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that allow the scroll offset to go beyond\nthe bounds of the content, but then bounce the content back to the edge of\nthose bounds.\n\nThis is the behavior typically seen on iOS.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on iOS.\n * [ClampingScrollPhysics], which is the analogous physics for Android's\n clamping behavior.", "detail": "", "kind": 7, "label": "BouncingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageBucket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A storage bucket associated with a page in an app.\n\nUseful for storing per-page state that persists across navigations from one\npage to another.", "detail": "", "kind": 7, "label": "PageStorageBucket" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Stream].\n\n\nWidget rebuilding is scheduled by each interaction, using [State.setState],\nbut is otherwise decoupled from the timing of the stream. The [builder]\nis called at the discretion of the Flutter pipeline, and will thus receive a\ntiming-dependent sub-sequence of the snapshots that represent the\ninteraction with the stream.\n\nAs an example, when interacting with a stream producing the integers\n0 through 9, the [builder] may be called with any ordered sub-sequence\nof the following snapshots that includes the last one (the one with\nConnectionState.done):\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 0)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 1)`\n* ...\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 9)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.done, 9)`\n\nThe actual sequence of invocations of the [builder] depends on the relative\ntiming of events produced by the stream and the build rate of the Flutter\npipeline.\n\nChanging the [StreamBuilder] configuration to another stream during event\ngeneration introduces snapshot pairs of the form:\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.none, 5)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, 5)`\n\nThe latter will be produced only when the new stream is non-null, and the\nformer only when the old stream is non-null.\n\nThe stream may produce errors, resulting in snapshots of the form:\n\n* `new AsyncSnapshot<int>.withError(ConnectionState.active, 'some error')`\n\nThe data and error fields of snapshots produced are only changed when the\nstate is `ConnectionState.active`.\n\nThe initial snapshot data can be controlled by specifying [initialData].\nThis should be used to ensure that the first frame has the expected value,\nas the builder will always be called before the stream listener has a chance\nto be processed.\n\n\nThis sample shows a [StreamBuilder] configuring a text label to show the\nlatest bid received for a lot in an auction. Assume the `_lot` field is\nset by a selector elsewhere in the UI.\n\n```dart\nStreamBuilder<int>(\n stream: _lot?.bids, // a Stream<int> or null\n builder: (BuildContext context, AsyncSnapshot<int> snapshot) {\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n switch (snapshot.connectionState) {\n case ConnectionState.none: return Text('Select lot');\n case ConnectionState.waiting: return Text('Awaiting bids...');\n case ConnectionState.active: return Text('\\$${snapshot.data}');\n case ConnectionState.done: return Text('\\$${snapshot.data} (closed)');\n }\n return null; // unreachable\n },\n)\n```\n\nSee also:\n\n * [ValueListenableBuilder], which wraps a [ValueListenable] instead of a\n [Stream].\n * [StreamBuilderBase], which supports widget building based on a computation\n that spans all interactions made with the stream.", "detail": "", "kind": 7, "label": "StreamBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMask", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a mask generated by a [Shader] to its child.\n\nFor example, [ShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.\n\n\nThis example makes the text look like it is on fire:\n\n```dart\nShaderMask(\n shaderCallback: (Rect bounds) {\n return RadialGradient(\n center: Alignment.topLeft,\n radius: 1.0,\n colors: <Color>[Colors.yellow, Colors.deepOrange.shade900],\n tileMode: TileMode.mirror,\n ).createShader(bounds);\n },\n child: const Text('I’m burning the memories'),\n)\n```\n\nSee also:\n\n * [Opacity], which can apply a uniform alpha effect to its child.\n * [CustomPaint], which lets you draw directly on the canvas.\n * [DecoratedBox], for another approach at decorating child widgets.\n * [BackdropFilter], which applies an image filter to the background.", "detail": "", "kind": 7, "label": "ShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Semantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the widget tree with a description of the meaning of\nthe widgets.\n\nUsed by accessibility tools, search engines, and other semantic analysis\nsoftware to determine the meaning of the application.\n\nSee also:\n\n * [MergeSemantics], which marks a subtree as being a single node for\n accessibility purposes.\n * [ExcludeSemantics], which excludes a subtree from the semantics tree\n (which might be useful if it is, e.g., totally decorative and not\n important to the user).\n * [RenderObject.semanticsAnnotator], the rendering library API through which\n the [Semantics] widget is actually implemented.\n * [SemanticsNode], the object used by the rendering library to represent\n semantics in the semantics tree.\n * [SemanticsDebugger], an overlay to help visualize the semantics tree. Can\n be enabled using [WidgetsApp.showSemanticsDebugger] or\n [MaterialApp.showSemanticsDebugger].", "detail": "", "kind": 7, "label": "Semantics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Draggable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dragged from to a [DragTarget].\n\nWhen a draggable widget recognizes the start of a drag gesture, it displays\na [feedback] widget that tracks the user's finger across the screen. If the\nuser lifts their finger while on top of a [DragTarget], that target is given\nthe opportunity to accept the [data] carried by the draggable.\n\nOn multitouch devices, multiple drags can occur simultaneously because there\ncan be multiple pointers in contact with the device at once. To limit the\nnumber of simultaneous drags, use the [maxSimultaneousDrags] property. The\ndefault is to allow an unlimited number of simultaneous drags.\n\nThis widget displays [child] when zero drags are under way. If\n[childWhenDragging] is non-null, this widget instead displays\n[childWhenDragging] when one or more drags are underway. Otherwise, this\nwidget always displays [child].\n\nSee also:\n\n * [DragTarget]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "Draggable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).", "detail": "(TextSelection selection, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a [Dismissible] can be dismissed.", "detail": "", "kind": 13, "label": "DismissDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Positioned", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned.\n\nA [Positioned] widget must be a descendant of a [Stack], and the path from\nthe [Positioned] widget to its enclosing [Stack] must contain only\n[StatelessWidget]s or [StatefulWidget]s (not other kinds of widgets, like\n[RenderObjectWidget]s).\n\n\nIf a widget is wrapped in a [Positioned], then it is a _positioned_ widget\nin its [Stack]. If the [top] property is non-null, the top edge of this child\nwill be positioned [top] layout units from the top of the stack widget. The\n[right], [bottom], and [left] properties work analogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [right] and [left] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nIf all three values on a particular axis are null, then the\n[Stack.alignment] property is used to position the child.\n\nIf all six values are null, the child is a non-positioned child. The [Stack]\nuses only the non-positioned children to size itself.\n\nSee also:\n\n * [PositionedDirectional], which adapts to the ambient [Directionality].", "detail": "", "kind": 7, "label": "Positioned" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is only equal to itself.", "detail": "", "kind": 7, "label": "UniqueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionallySizedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to a fraction of the total available space.\nFor more details about the layout algorithm, see\n[RenderFractionallySizedOverflowBox].\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionallySizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which a single widget can be scrolled.\n\nThis widget is useful when you have a single box that will normally be\nentirely visible, for example a clock face in a time picker, but you need to\nmake sure it can be scrolled if the container gets too small in one axis\n(the scroll direction).\n\nIt is also useful if you need to shrink-wrap in both axes (the main\nscrolling direction as well as the cross axis), as one might see in a dialog\nor pop-up menu. In that case, you might pair the [SingleChildScrollView]\nwith a [ListBody] child.\n\nWhen you have a list of children and do not require cross-axis\nshrink-wrapping behavior, for example a scrolling list that is always the\nwidth of the screen, consider [ListView], which is vastly more efficient\nthat a [SingleChildScrollView] containing a [ListBody] or [Column] with\nmany children.\n\n## Sample code: Using [SingleChildScrollView] with a [Column]\n\nSometimes a layout is designed around the flexible properties of a\n[Column], but there is the concern that in some cases, there might not\nbe enough room to see the entire contents. This could be because some\ndevices have unusually small screens, or because the application can\nbe used in landscape mode where the aspect ratio isn't what was\noriginally envisioned, or because the application is being shown in a\nsmall window in split-screen mode. In any case, as a result, it might\nmake sense to wrap the layout in a [SingleChildScrollView].\n\nSimply doing so, however, usually results in a conflict between the [Column],\nwhich typically tries to grow as big as it can, and the [SingleChildScrollView],\nwhich provides its children with an infinite amount of space.\n\nTo resolve this apparent conflict, there are a couple of techniques, as\ndiscussed below. These techniques should only be used when the content is\nnormally expected to fit on the screen, so that the lazy instantiation of\na sliver-based [ListView] or [CustomScrollView] is not expected to provide\nany performance benefit. If the viewport is expected to usually contain\ncontent beyond the dimensions of the screen, then [SingleChildScrollView]\nwould be very expensive.\n\n### Centering, spacing, or aligning fixed-height content\n\nIf the content has fixed (or intrinsic) dimensions but needs to be spaced out,\ncentered, or otherwise positioned using the [Flex] layout model of a [Column],\nthe following technique can be used to provide the [Column] with a minimum\ndimension while allowing it to shrink-wrap the contents when there isn't enough\nroom to apply these spacing or alignment needs.\n\nA [LayoutBuilder] is used to obtain the size of the viewport (implicitly via\nthe constraints that the [SingleChildScrollView] sees, since viewports\ntypically grow to fit their maximum height constraint). Then, inside the\nscroll view, a [ConstrainedBox] is used to set the minimum height of the\n[Column].\n\nThe [Column] has no [Expanded] children, so rather than take on the infinite\nheight from its [BoxConstraints.maxHeight], (the viewport provides no maximum height\nconstraint), it automatically tries to shrink to fit its children. It cannot\nbe smaller than its [BoxConstraints.minHeight], though, and It therefore\nbecomes the bigger of the minimum height provided by the\n[ConstrainedBox] and the sum of the heights of the children.\n\nIf the children aren't enough to fit that minimum size, the [Column] ends up\nwith some remaining space to allocate as specified by its\n[Column.mainAxisAlignment] argument.\n\nIn this example, the children are spaced out equally, unless there's no more\nroom, in which case they stack vertically and scroll.\n\nWhen using this technique, [Expanded] and [Flexible] are not useful, because\nin both cases the \"available space\" is infinite (since this is in a viewport).\nThe next section describes a technique for providing a maximum height constraint.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: Column(\n mainAxisSize: MainAxisSize.min,\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Container(\n // Another fixed-height child.\n color: const Color(0xff008000), // Green\n height: 120.0,\n ),\n ],\n ),\n ),\n );\n },\n );\n}\n```\n\n### Expanding content to fit the viewport\n\nThe following example builds on the previous one. In addition to providing a\nminimum dimension for the child [Column], an [IntrinsicHeight] widget is used\nto force the column to be exactly as big as its contents. This constraint\ncombines with the [ConstrainedBox] constraints discussed previously to ensure\nthat the column becomes either as big as viewport, or as big as the contents,\nwhichever is biggest.\n\nBoth constraints must be used to get the desired effect. If only the\n[IntrinsicHeight] was specified, then the column would not grow to fit the\nentire viewport when its children were smaller than the whole screen. If only\nthe size of the viewport was used, then the [Column] would overflow if the\nchildren were bigger than the viewport.\n\nThe widget that is to grow to fit the remaining space so provided is wrapped\nin an [Expanded] widget.\n\nThis technique is quite expensive, as it more or less requires that the contents\nof the viewport be laid out twice (once to find their intrinsic dimensions, and\nonce to actually lay them out). The number of widgets within the column should\ntherefore be kept small. Alternatively, subsets of the children that have known\ndimensions can be wrapped in a [SizedBox] that has tight vertical constraints,\nso that the intrinsic sizing algorithm can short-circuit the computation when it\nreaches those parts of the subtree.\n\nIn this example, the column becomes either as big as viewport, or as big as\nthe contents, whichever is biggest.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: IntrinsicHeight(\n child: Column(\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Expanded(\n // A flexible child that will grow to fit the viewport but\n // still be at least as big as necessary to fit its contents.\n child: Container(\n color: const Color(0xff800000), // Red\n height: 120.0,\n ),\n ),\n ],\n ),\n ),\n ),\n );\n },\n );\n}\n```\n\nSee also:\n\n * [ListView], which handles multiple children in a scrolling list.\n * [GridView], which handles multiple children in a scrolling grid.\n * [PageView], for a scrollable that works page by page.\n * [Scrollable], which handles arbitrary scrolling effects.", "detail": "", "kind": 7, "label": "SingleChildScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScopeNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interior node in the focus tree.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nThe interior nodes in the focus tree cannot themselves be focused but\ninstead remember previous focus states. A scope is currently active in its\nparent whenever [isFirstFocus] is true. If that scope is detached from its\nparent, its previous sibling becomes the parent's first focus.\n\nA [FocusNode] has the overall focus when the node is focused in its\nparent [FocusScopeNode] and [FocusScopeNode.isFirstFocus] is true for\nthat scope and all its ancestor scopes.\n\nIf a [FocusScopeNode] is removed, then the next sibling node will be set as\nthe focused node by the [FocusManager].\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].\n * [FocusScope], which is a widget that associates a [FocusScopeNode] with\n its location in the tree.", "detail": "", "kind": 7, "label": "FocusScopeNode" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAlive", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows subtrees to request to be kept alive in lazy lists.\n\nThis widget is like [KeepAlive] but instead of being explicitly configured,\nit listens to [KeepAliveNotification] messages from the [child] and other\ndescendants.\n\nThe subtree is kept alive whenever there is one or more descendant that has\nsent a [KeepAliveNotification] and not yet triggered its\n[KeepAliveNotification.handle].\n\nTo send these notifications, consider using [AutomaticKeepAliveClientMixin].", "detail": "", "kind": 7, "label": "AutomaticKeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryConstructor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.constructor].", "detail": "() → T", "kind": 7, "label": "GestureRecognizerFactoryConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilderBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that build themselves based on interaction with\na specified [Stream].\n\nA [StreamBuilderBase] is stateful and maintains a summary of the interaction\nso far. The type of the summary and how it is updated with each interaction\nis defined by sub-classes.\n\nExamples of summaries include:\n\n* the running average of a stream of integers;\n* the current direction and speed based on a stream of geolocation data;\n* a graph displaying data points from a stream.\n\nIn general, the summary is the result of a fold computation over the data\nitems and errors received from the stream along with pseudo-events\nrepresenting termination or change of stream. The initial summary is\nspecified by sub-classes by overriding [initial]. The summary updates on\nreceipt of stream data and errors are specified by overriding [afterData] and\n[afterError], respectively. If needed, the summary may be updated on stream\ntermination by overriding [afterDone]. Finally, the summary may be updated\non change of stream by overriding [afterDisconnected] and [afterConnected].\n\n`T` is the type of stream events.\n\n`S` is the type of interaction summary.\n\nSee also:\n\n * [StreamBuilder], which is specialized for the case where only the most\n recent interaction is needed for widget building.", "detail": "", "kind": 7, "label": "StreamBuilderBase" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapAbsorber", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[RenderSliverOverlapInjector].", "detail": "", "kind": 7, "label": "RenderSliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometryTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsetsGeometry]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsetsGeometry>] to\nuse [EdgeInsetsGeometry.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsTween], which interpolates between two [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryInitializer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.initializer].", "detail": "(T instance) → void", "kind": 7, "label": "GestureRecognizerFactoryInitializer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver whose size varies when the sliver is scrolled to the leading edge\nof the viewport.\n\nThis is the layout primitive that [SliverAppBar] uses for its\nshrinking/growing effect.", "detail": "", "kind": 7, "label": "SliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a [Navigator] widget.", "detail": "", "kind": 7, "label": "NavigatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Visibility", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to show or hide a child.\n\nBy default, the [visible] property controls whether the [child] is included\nin the subtree or not; when it is not [visible], the [replacement] child\n(typically a zero-sized box) is included instead.\n\nA variety of flags can be used to tweak exactly how the child is hidden.\n(Changing the flags dynamically is discouraged, as it can cause the [child]\nsubtree to be rebuilt, with any state in the subtree being discarded.\nTypically, only the [visible] flag is changed dynamically.)\n\nThese widgets provide some of the facets of this one:\n\n * [Opacity], which can stop its child from being painted.\n * [Offstage], which can stop its child from being laid out or painted.\n * [TickerMode], which can stop its child from being animated.\n * [ExcludeSemantics], which can hide the child from accessibility tools.\n * [IgnorePointer], which can disable touch interactions with the child.\n\nUsing this widget is not necessary to hide children. The simplest way to\nhide a child is just to not include it, or, if a child _must_ be given (e.g.\nbecause the parent is a [StatelessWidget]) then to use [SizedBox.shrink]\ninstead of the child that would otherwise be included.\n\nSee also:\n\n * [AnimatedSwitcher], which can fade from one child to the next as the\n subtree changes.\n * [AnimatedCrossFade], which can fade between two specific children.", "detail": "", "kind": 7, "label": "Visibility" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RootRenderObjectElement] that is hosted by a [RenderObject].\n\nThis element class is the instantiation of a [RenderObjectToWidgetAdapter]\nwidget. It can be used only as the root of an [Element] tree (it cannot be\nmounted into another [Element]; it's parent must be null).\n\nIn typical usage, it will be instantiated for a [RenderObjectToWidgetAdapter]\nwhose container is the [RenderView] that connects to the Flutter engine. In\nthis usage, it is normally instantiated by the bootstrapping logic in the\n[WidgetsFlutterBinding] singleton created by [runApp].", "detail": "", "kind": 7, "label": "RenderObjectToWidgetElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Wrap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in multiple horizontal or vertical runs.\n\nA [Wrap] lays out each child and attempts to place the child adjacent to the\nprevious child in the main axis, given by [direction], leaving [spacing]\nspace in between. If there is not enough space to fit the child, [Wrap]\ncreates a new _run_ adjacent to the existing children in the cross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].\n\n\n\nThis example renders some [Chip]s representing four contacts in a [Wrap] so\nthat they flow across lines as necessary.\n\n```dart\nWrap(\n spacing: 8.0, // gap between adjacent chips\n runSpacing: 4.0, // gap between lines\n children: <Widget>[\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('AH')),\n label: Text('Hamilton'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('ML')),\n label: Text('Lafayette'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('HM')),\n label: Text('Mulligan'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('JL')),\n label: Text('Laurens'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [Row], which places children in one line, and gives control over their\n alignment and spacing.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Wrap" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An inherited widget for a [Listenable] [notifier], which updates its\ndependencies when the [notifier] is triggered.\n\nThis is a variant of [InheritedWidget], specialized for subclasses of\n[Listenable], such as [ChangeNotifier] or [ValueNotifier].\n\nDependents are notified whenever the [notifier] sends notifications, or\nwhenever the identity of the [notifier] changes.\n\nMultiple notifications are coalesced, so that dependents only rebuild once\neven if the [notifier] fires multiple times between two frames.\n\nTypically this class is subclassed with a class that provides an `of` static\nmethod that calls [BuildContext.inheritFromWidgetOfExactType] with that\nclass.\n\nThe [updateShouldNotify] method may also be overridden, to change the logic\nin the cases where [notifier] itself is changed. The [updateShouldNotify]\nmethod is called with the old [notifier] in the case of the [notifier] being\nchanged. When it returns true, the dependents are marked as needing to be\nrebuilt this frame.\n\nSee also:\n\n * [Animation], an implementation of [Listenable] that ticks each frame to\n update a value.\n * [ViewportOffset] or its subclass [ScrollPosition], implementations of\n [Listenable] that trigger when a view is scrolled.\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a path.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\n[PhysicalModel] does the same but only supports shapes that can be expressed\nas rectangles with rounded corners.\n\nSee also:\n\n * [ShapeBorderClipper], which converts a [ShapeBorder] to a [CustomerClipper], as\n needed by this widget.", "detail": "", "kind": 7, "label": "PhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildOwner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manager class for the widgets framework.\n\nThis class tracks which widgets need rebuilding, and handles other tasks\nthat apply to widget trees as a whole, such as managing the inactive element\nlist for the tree and triggering the \"reassemble\" command when necessary\nduring hot reload when debugging.\n\nThe main build owner is typically owned by the [WidgetsBinding], and is\ndriven from the operating system along with the rest of the\nbuild/layout/paint pipeline.\n\nAdditional build owners can be built to manage off-screen widget trees.\n\nTo assign a build owner to a tree, use the\n[RootRenderObjectElement.assignOwner] method on the root element of the\nwidget tree.", "detail": "", "kind": 7, "label": "BuildOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] of entries that can be managed independently.\n\nOverlays let independent child widgets \"float\" visual elements on top of\nother widgets by inserting them into the overlay's [Stack]. The overlay lets\neach of these widgets manage their participation in the overlay using\n[OverlayEntry] objects.\n\nAlthough you can create an [Overlay] directly, it's most common to use the\noverlay created by the [Navigator] in a [WidgetsApp] or a [MaterialApp]. The\nnavigator uses its overlay to manage the visual appearance of its routes.\n\nSee also:\n\n * [OverlayEntry].\n * [OverlayState].\n * [WidgetsApp].\n * [MaterialApp].", "detail": "", "kind": 7, "label": "Overlay" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have multiple box children.\n\nHelps subclasses build their children lazily using a [SliverChildDelegate].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the color, opacity, and size of icons.\n\nUsed by [IconTheme] to control the color, opacity, and size of icons in a\nwidget subtree.\n\nTo obtain the current icon theme, use [IconTheme.of]. To convert an icon\ntheme to a version with all the fields filled in, use [new\nIconThemeData.fallback].", "detail": "", "kind": 7, "label": "IconThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedScrollMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable snapshot of values associated with a [Scrollable] viewport.\n\nFor details, see [ScrollMetrics], which defines this object's interfaces.", "detail": "", "kind": 7, "label": "FixedScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedAlign", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Align] which automatically transitions the child's\nposition over a given duration whenever the given [alignment] changes.\n\nHere's an illustration of what this can look like, using a [curve] of\n[Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedPadding], which can animate the padding instead of the\n alignment.\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.", "detail": "", "kind": 7, "label": "AnimatedAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Padding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.\n\n\nThis snippet indents the child (a [Card] with some [Text]) by eight pixels\nin each direction:\n\n```dart\nPadding(\n padding: EdgeInsets.all(8.0),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\n## Design discussion\n\n### Why use a [Padding] widget rather than a [Container] with a [Container.padding] property?\n\nThere isn't really any difference between the two. If you supply a\n[Container.padding] argument, [Container] simply builds a [Padding] widget\nfor you.\n\n[Container] doesn't implement its properties directly. Instead, [Container]\ncombines a number of simpler widgets together into a convenient package. For\nexample, the [Container.padding] property causes the container to build a\n[Padding] widget and the [Container.decoration] property causes the\ncontainer to build a [DecoratedBox] widget. If you find [Container]\nconvenient, feel free to use it. If not, feel free to build these simpler\nwidgets in whatever combination meets your needs.\n\nIn fact, the majority of widgets in Flutter are simply combinations of other\nsimpler widgets. Composition, rather than inheritance, is the primary\nmechanism for building up widgets.\n\nSee also:\n\n * [EdgeInsets], the class that is used to describe the padding dimensions.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Padding" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [StatefulBuilder].\n\nCall [setState] to schedule the [StatefulBuilder] to rebuild.", "detail": "(BuildContext context, StateSetter setState) → Widget", "kind": 7, "label": "StatefulWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildBuilderDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using a builder callback.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot even have to be built until they are displayed.\n\nThe widgets returned from the builder callback are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\n\nThis sample code shows how to use `semanticIndexOffset` to handle multiple\ndelegates in a single scroll view.\n\n```dart\nCustomScrollView(\n semanticChildCount: 4,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n ),\n ),\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n semanticIndexOffset: 2,\n ),\n ),\n ],\n)\n```\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\n\nThis sample code shows how to use `semanticIndexCallback` to handle\nannotating a subset of child nodes with a semantic index. There is\na [Spacer] widget at odd indexes which should not have a semantic\nindex.\n\n```dart\nCustomScrollView(\n semanticChildCount: 5,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n if (index.isEven) {\n return Text('...');\n }\n return Spacer();\n },\n semanticIndexCallback: (Widget widget, int localIndex) {\n if (localIndex.isEven) {\n return localIndex ~/ 2;\n }\n return null;\n },\n childCount: 10,\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.\n * [IndexedSemantics], for an example of manually annotating child nodes\n with semantic indexes.", "detail": "", "kind": 7, "label": "SliverChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which children on a wheel can be scrolled.\n\nThis widget is similar to a [ListView] but with the restriction that all\nchildren must be the same size along the scrolling axis.\n\nWhen the list is at the zero scroll offset, the first child is aligned with\nthe middle of the viewport. When the list is at the final scroll offset,\nthe last child is aligned with the middle of the viewport\n\nThe children are rendered as if rotating on a wheel instead of scrolling on\na plane.", "detail": "", "kind": 7, "label": "ListWheelScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragAnchor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where the [Draggable] should be anchored during a drag.", "detail": "", "kind": 13, "label": "DragAnchor" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A general-purpose widget for building animations.\n\nAnimatedBuilder is useful for more complex widgets that wish to include\nan animation as part of a larger build function. To use AnimatedBuilder,\nsimply construct the widget and pass it a builder function.\n\nFor simple cases without additional state, consider using\n[AnimatedWidget].\n\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nanimation, it's more efficient to build that subtree once instead of\nrebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\nAnimatedBuilder will pass it back to your builder function so that you\ncan incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedBuilder] and makes use of the\n[child] feature to avoid having to rebuild the [Container] each time.\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return AnimatedBuilder(\n animation: _controller,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n builder: (BuildContext context, Widget child) {\n return Transform.rotate(\n angle: _controller.value * 2.0 * math.pi,\n child: child,\n );\n },\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "AnimatedBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnconstrainedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes no constraints on its child, allowing it to render\nat its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This container will then attempt\nto adopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the container, a warning will be\nprinted on the console, and black and yellow striped areas will appear where\nthe overflow occurs.\n\nSee also:\n\n * [ConstrainedBox], for a box which imposes constraints on its child.\n * [Align], which loosens the constraints given to the child rather than\n removing them entirely.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow\n the parent.", "detail": "", "kind": 7, "label": "UnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedContainer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container that gradually changes its values over a period of time.\n\nThe [AnimatedContainer] will automatically animate between the old and\nnew values of properties when they change using the provided curve and\nduration. Properties that are null are not animated. Its child and\ndescendants are not animated.\n\nThis class is useful for generating simple implicit transitions between\ndifferent parameters to [Container] with its internal [AnimationController].\nFor more complex animations, you'll likely want to use a subclass of\n[AnimatedWidget] such as the [DecoratedBoxTransition] or use your own\n[AnimationController].\n\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPadding], which is a subset of this widget that only\n supports animating the [padding].\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.\n * [AnimatedSwitcher], which switches out a child for a new one with a customizable transition.\n * [AnimatedCrossFade], which fades between two children and interpolates their sizes.", "detail": "", "kind": 7, "label": "AnimatedContainer" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single list of children. (This superclass only provides the\nstorage for that child list, it doesn't actually provide the updating\nlogic.)", "detail": "", "kind": 7, "label": "MultiChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has not changed its scroll position\nbecause the change would have caused its scroll position to go outside of\nits scroll bounds.\n\nSee also:\n\n * [ScrollUpdateNotification], which indicates that a [Scrollable] widget\n has changed its scroll position.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "OverscrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A utility class for defining one-off page routes in terms of callbacks.\n\nCallers must define the [pageBuilder] function which creates the route's\nprimary contents. To add transitions define the [transitionsBuilder] function.", "detail": "", "kind": 7, "label": "PageRouteBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a callback that verifies that it's OK to call [Navigator.pop].\n\nUsed by [Form.onWillPop], [ModalRoute.addScopedWillPopCallback],\n[ModalRoute.removeScopedWillPopCallback], and [WillPopScope].", "detail": "() → Future<bool>", "kind": 7, "label": "WillPopCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedOverflowBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is a specific size but passes its original constraints\nthrough to its child, which may then overflow.\n\nSee also:\n\n * [OverflowBox], A widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteSettings", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data that might be useful in constructing a [Route].", "detail": "", "kind": 7, "label": "RouteSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box with a specified size.\n\nIf given a child, this widget forces its child to have a specific width\nand/or height (assuming values are permitted by this widget's parent). If\neither the width or height is null, this widget will size itself to match\nthe child's size in that dimension.\n\nIf not given a child, this widget will size itself to the given width and\nheight, treating nulls as zero.\n\nThe [new SizedBox.expand] constructor can be used to make a [SizedBox] that\nsizes itself to fit the parent. It is equivalent to setting [width] and\n[height] to [double.infinity].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) have the\nexact size 200x300, parental constraints permitting:\n\n```dart\nSizedBox(\n width: 200.0,\n height: 300.0,\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nSee also:\n\n * [ConstrainedBox], a more generic version of this class that takes\n arbitrary [BoxConstraints] instead of an explicit width and height.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [FractionallySizedBox], a widget that sizes its child to a fraction of\n the total available space.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherTransitionBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom transitions for\n[AnimatedSwitcher].\n\nThe `child` should be transitioning in when the `animation` is running in\nthe forward direction.\n\nThe function should return a widget which wraps the given `child`. It may\nalso use the `animation` to inform its transition. It must not return null.", "detail": "(Widget child, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedSwitcherTransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of a [FormField]. Passed to the [FormFieldBuilder] method\nfor use in constructing the form field's widget.", "detail": "", "kind": 7, "label": "FormFieldState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a filter to the existing painted content and then\npaints [child].\n\nThe filter will be applied to all the area within its parent or ancestor\nwidget's clip. If there's no clip, the filter will be applied to the full\nscreen.\n\n\nIf the [BackdropFilter] needs to be applied to an area that exactly matches\nits child, wraps the [BackdropFilter] with a clip widget that clips exactly\nto that child.\n\n```dart\nStack(\n fit: StackFit.expand,\n children: <Widget>[\n Text('0' * 10000),\n Center(\n child: ClipRect( // <-- clips to the 200x200 [Container] below\n child: BackdropFilter(\n filter: ui.ImageFilter.blur(\n sigmaX: 5.0,\n sigmaY: 5.0,\n ),\n child: Container(\n alignment: Alignment.center,\n width: 200.0,\n height: 200.0,\n child: Text('Hello World'),\n ),\n ),\n ),\n ),\n ],\n)\n```\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.\n\nSee also:\n\n * [DecoratedBox], which draws a background under (or over) a widget.\n * [Opacity], which changes the opacity of the widget itself.", "detail": "", "kind": 7, "label": "BackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].\n\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Notification] related to scrolling.\n\n[Scrollable] widgets notify their ancestors about scrolling-related changes.\nThe notifications have the following lifecycle:\n\n * A [ScrollStartNotification], which indicates that the widget has started\n scrolling.\n * Zero or more [ScrollUpdateNotification]s, which indicate that the widget\n has changed its scroll position, mixed with zero or more\n [OverscrollNotification]s, which indicate that the widget has not changed\n its scroll position because the change would have caused its scroll\n position to go outside its scroll bounds.\n * Interspersed with the [ScrollUpdateNotification]s and\n [OverscrollNotification]s are zero or more [UserScrollNotification]s,\n which indicate that the user has changed the direction in which they are\n scrolling.\n * A [ScrollEndNotification], which indicates that the widget has stopped\n scrolling.\n * A [UserScrollNotification], with a [UserScrollNotification.direction] of\n [ScrollDirection.idle].\n\nNotifications bubble up through the tree, which means a given\n[NotificationListener] will receive notifications for all descendant\n[Scrollable] widgets. To focus on notifications from the nearest\n[Scrollable] descendant, check that the [depth] property of the notification\nis zero.\n\nWhen a scroll notification is received by a [NotificationListener], the\nlistener will have already completed build and layout, and it is therefore\ntoo late for that widget to call [State.setState]. Any attempt to adjust the\nbuild or layout based on a scroll notification would result in a layout that\nlagged one frame behind, which is a poor user experience. Scroll\nnotifications are therefore primarily useful for paint effects (since paint\nhappens after layout). The [GlowingOverscrollIndicator] and [Scrollbar]\nwidgets are examples of paint effects that use scroll notifications.\n\nTo drive layout based on the scroll position, consider listening to the\n[ScrollPosition] directly (or indirectly via a [ScrollController]).", "detail": "", "kind": 7, "label": "ScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an Android view in the Widget hierarchy.\n\nRequires Android API level 20 or greater.\n\nEmbedding Android views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\nThe embedded Android view is painted just like any other Flutter widget and transformations\napply to it as well.\n\nThe widget fills all available space, the parent of this object must provide bounded layout\nconstraints.\n\nThe widget participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified in the `gestureRecognizers` constructor parameter. If\nthe set of gesture recognizers is empty, a gesture will be dispatched to the platform\nview iff it was not claimed by any other gesture recognizer.\n\nThe Android view object is created using a [PlatformViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewFactory.html).\nPlugins can register platform view factories with [PlatformViewRegistry#registerViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewRegistry.html#registerViewFactory-java.lang.String-io.flutter.plugin.platform.PlatformViewFactory-).\n\nRegistration is typically done in the plugin's registerWith method, e.g:\n\n```java\n public static void registerWith(Registrar registrar) {\n registrar.platformViewRegistry().registerViewFactory(\"webview\", WebViewFactory(registrar.messenger()));\n }\n```\n\nThe platform view's lifetime is the same as the lifetime of the [State] object for this widget.\nWhen the [State] is disposed the platform view (and auxiliary resources) are lazily\nreleased (some resources are immediately released and some by platform garbage collector).\nA stateful widget's state is disposed when the widget is removed from the tree or when it is\nmoved within the tree. If the stateful widget has a key and it's only moved relative to its siblings,\nor it has a [GlobalKey] and it's moved within the tree, it will not be disposed.", "detail": "", "kind": 7, "label": "AndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositioned", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which automatically transitions the child's\nposition over a given duration whenever the given position changes.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositioned] will trigger a relayout\nas well.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositionedDirectional], which adapts to the ambient\n [Directionality] (the same as this widget, but for animating\n [PositionedDirectional]).", "detail": "", "kind": 7, "label": "AnimatedPositioned" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Container", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience widget that combines common painting, positioning, and sizing\nwidgets.\n\nA container first surrounds the child with [padding] (inflated by any\nborders present in the [decoration]) and then applies additional\n[constraints] to the padded extent (incorporating the `width` and `height`\nas constraints, if either is non-null). The container is then surrounded by\nadditional empty space described from the [margin].\n\nDuring painting, the container first applies the given [transform], then\npaints the [decoration] to fill the padded extent, then it paints the child,\nand finally paints the [foregroundDecoration], also filling the padded\nextent.\n\nContainers with no children try to be as big as possible unless the incoming\nconstraints are unbounded, in which case they try to be as small as\npossible. Containers with children size themselves to their children. The\n`width`, `height`, and [constraints] arguments to the constructor override\nthis.\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nSince [Container] combines a number of other widgets each with their own\nlayout behavior, [Container]'s layout behavior is somewhat complicated.\n\nSummary: [Container] tries, in order: to honor [alignment], to size itself\nto the [child], to honor the `width`, `height`, and [constraints], to expand\nto fit the parent, to be as small as possible.\n\nMore specifically:\n\nIf the widget has no child, no `height`, no `width`, no [constraints],\nand the parent provides unbounded constraints, then [Container] tries to\nsize as small as possible.\n\nIf the widget has no child and no [alignment], but a `height`, `width`, or\n[constraints] are provided, then the [Container] tries to be as small as\npossible given the combination of those constraints and the parent's\nconstraints.\n\nIf the widget has no child, no `height`, no `width`, no [constraints], and\nno [alignment], but the parent provides bounded constraints, then\n[Container] expands to fit the constraints provided by the parent.\n\nIf the widget has an [alignment], and the parent provides unbounded\nconstraints, then the [Container] tries to size itself around the child.\n\nIf the widget has an [alignment], and the parent provides bounded\nconstraints, then the [Container] tries to expand to fit the parent, and\nthen positions the child within itself as per the [alignment].\n\nOtherwise, the widget has a [child] but no `height`, no `width`, no\n[constraints], and no [alignment], and the [Container] passes the\nconstraints from the parent to the child and sizes itself to match the\nchild.\n\nThe [margin] and [padding] properties also affect the layout, as described\nin the documentation for those properties. (Their effects merely augment the\nrules described above.) The [decoration] can implicitly increase the\n[padding] (e.g. borders in a [BoxDecoration] contribute to the [padding]);\nsee [Decoration.padding].\n\nThis example shows a 48x48 amber square (placed inside a [Center] widget in\ncase the parent widget has its own opinions regarding the size that the\n[Container] should take), with a margin so that it stays away from\nneighboring widgets:\n\n![An amber colored container with the dimensions of 48 square pixels.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_a.png)\n\n```dart\nCenter(\n child: Container(\n margin: const EdgeInsets.all(10.0),\n color: Colors.amber[600],\n width: 48.0,\n height: 48.0,\n ),\n)\n```\n\n\nThis example shows how to use many of the features of [Container] at once.\nThe [constraints] are set to fit the font size plus ample headroom\nvertically, while expanding horizontally to fit the parent. The [padding] is\nused to make sure there is space between the contents and the text. The\n[color] makes the box blue. The [alignment] causes the [child] to be\ncentered in the box. Finally, the [transform] applies a slight rotation to the\nentire contraption to complete the effect.\n\n![A blue rectangular container with 'Hello World' in the center, rotated\nslightly in the z axis.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_b.png)\n\n```dart\nContainer(\n constraints: BoxConstraints.expand(\n height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,\n ),\n padding: const EdgeInsets.all(8.0),\n color: Colors.blue[600],\n alignment: Alignment.center,\n child: Text('Hello World',\n style: Theme.of(context)\n .textTheme\n .display1\n .copyWith(color: Colors.white)),\n transform: Matrix4.rotationZ(0.1),\n)\n```\n\nSee also:\n\n * [AnimatedContainer], a variant that smoothly animates the properties when\n they change.\n * [Border], which has a sample which uses [Container] heavily.\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Container" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGrid", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[SliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nThe main axis direction of a grid is the direction in which it scrolls; the\ncross axis direction is the orthogonal direction.\n\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows twenty boxes in a pretty teal grid:\n\n```dart\nSliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n)\n```\n\n\nSee also:\n\n * [SliverList], which places its children in a linear array.\n * [SliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.", "detail": "", "kind": 7, "label": "SliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\n[Scrollable] implements the interaction model for a scrollable widget,\nincluding gesture recognition, but does not have an opinion about how the\nviewport, which actually displays the children, is constructed.\n\nIt's rare to construct a [Scrollable] directly. Instead, consider [ListView]\nor [GridView], which combine scrolling, viewporting, and a layout model. To\ncombine layout models (or to use a custom layout mode), consider using\n[CustomScrollView].\n\nThe static [Scrollable.of] and [Scrollable.ensureVisible] functions are\noften used to interact with the [Scrollable] widget inside a [ListView] or\na [GridView].\n\nTo further customize scrolling behavior with a [Scrollable]:\n\n1. You can provide a [viewportBuilder] to customize the child model. For\n example, [SingleChildScrollView] uses a viewport that displays a single\n box child whereas [CustomScrollView] uses a [Viewport] or a\n [ShrinkWrappingViewport], both of which display a list of slivers.\n\n2. You can provide a custom [ScrollController] that creates a custom\n [ScrollPosition] subclass. For example, [PageView] uses a\n [PageController], which creates a page-oriented scroll position subclass\n that keeps the same page visible when the [Scrollable] resizes.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "Scrollable" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Border]s.\n\nThis class specializes the interpolation of [Tween<Border>] to use\n[Border.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsets]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsets>] to use\n[EdgeInsets.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsGeometryTween], which interpolates between two\n [EdgeInsetsGeometry] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryWithHandlers", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers that delegates to callbacks.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactoryWithHandlers" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstrainedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes additional constraints on its child.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[constraints].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) fill the\nparent, by applying [BoxConstraints.expand] constraints:\n\n```dart\nConstrainedBox(\n constraints: const BoxConstraints.expand(),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nThe same behavior can be obtained using the [new SizedBox.expand] widget.\n\nSee also:\n\n * [BoxConstraints], the class that describes constraints.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "ConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image that shows a [placeholder] image while the target [image] is\nloading, then fades in the new image when it loads.\n\nUse this class to display long-loading images, such as [new NetworkImage],\nso that the image appears on screen with a graceful animation rather than\nabruptly pops onto the screen.\n\n\nIf the [image] emits an [ImageInfo] synchronously, such as when the image\nhas been loaded and cached, the [image] is displayed immediately and the\n[placeholder] is never displayed.\n\n[fadeOutDuration] and [fadeOutCurve] control the fade-out animation of the\nplaceholder.\n\n[fadeInDuration] and [fadeInCurve] control the fade-in animation of the\ntarget [image].\n\nPrefer a [placeholder] that's already cached so that it is displayed in one\nframe. This prevents it from popping onto the screen.\n\nWhen [image] changes it is resolved to a new [ImageStream]. If the new\n[ImageStream.key] is different this widget subscribes to the new stream and\nreplaces the displayed image with images emitted by the new stream.\n\nWhen [placeholder] changes and the [image] has not yet emitted an\n[ImageInfo], then [placeholder] is resolved to a new [ImageStream]. If the\nnew [ImageStream.key] is different this widget subscribes to the new stream\nand replaces the displayed image to images emitted by the new stream.\n\nWhen either [placeholder] or [image] changes, this widget continues showing\nthe previously loaded image (if any) until the new image provider provides a\ndifferent image. This is known as \"gapless playback\" (see also\n[Image.gaplessPlayback]).\n\n\n```dart\nFadeInImage(\n // here `bytes` is a Uint8List containing the bytes for the in-memory image\n placeholder: MemoryImage(bytes),\n image: NetworkImage('https://backend.example.com/image.png'),\n)\n```", "detail": "", "kind": 7, "label": "FadeInImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that manages [Hero] transitions.\n\nAn instance of [HeroController] should be used in [Navigator.observers].\nThis is done automatically by [MaterialApp].", "detail": "", "kind": 7, "label": "HeroController" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListRemovedItemBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedListState.removeItem].", "detail": "(BuildContext context, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListRemovedItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [PageView].\n\nThe metrics are available on [ScrollNotification]s generated from\n[PageView]s.", "detail": "", "kind": 7, "label": "PageMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModelElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [InheritedModel] as its configuration.", "detail": "", "kind": 7, "label": "InheritedModelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBody", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that arranges its children sequentially along a given axis, forcing\nthem to the dimension of the parent in the other axis.\n\nThis widget is rarely used directly. Instead, consider using [ListView],\nwhich combines a similar layout algorithm with scrolling behavior, or\n[Column], which gives you more flexible control over the layout of a\nvertical set of boxes.\n\nSee also:\n\n * [RenderListBody], which implements this layout algorithm and the\n documentation for which describes some of its subtleties.\n * [SingleChildScrollView], which is sometimes used with [ListBody] to\n make the contents scrollable.\n * [Column] and [Row], which implement a more elaborate version of\n this layout algorithm (at the cost of being slightly less efficient).\n * [ListView], which implements an efficient scrolling version of this\n layout algorithm.", "detail": "", "kind": 7, "label": "ListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomMultiChildLayout", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses a delegate to size and position multiple children.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.\n\n[CustomMultiChildLayout] is appropriate when there are complex relationships\nbetween the size and positioning of a multiple widgets. To control the\nlayout of a single child, [CustomSingleChildLayout] is more appropriate. For\nsimple cases, such as aligning a widget to one or another edge, the [Stack]\nwidget is more appropriate.\n\nEach child must be wrapped in a [LayoutId] widget to identify the widget for\nthe delegate.\n\nSee also:\n\n * [MultiChildLayoutDelegate], for details about how to control the layout of\n the children.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Stack], which arranges children relative to the edges of the container.\n * [Flow], which provides paint-time control of its children using transform\n matrices.", "detail": "", "kind": 7, "label": "CustomMultiChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSizeWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for widgets that can return the size this widget would prefer\nif it were otherwise unconstrained.\n\nThere are a few cases, notably [AppBar] and [TabBar], where it would be\nundesirable for the widget to constrain its own size but where the widget\nneeds to expose a preferred or \"default\" size. For example a primary\n[Scaffold] sets its app bar height to the app bar's preferred height\nplus the height of the system status bar.\n\nUse [PreferredSize] to give a preferred size to an arbitrary widget.", "detail": "", "kind": 7, "label": "PreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An entry in the history of a [LocalHistoryRoute].", "detail": "", "kind": 7, "label": "LocalHistoryEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFixedExtentList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[SliverFixedExtentList] places its children in a linear array along the main\naxis starting at offset zero and without gaps. Each child is forced to have\nthe [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[SliverFixedExtentList] is more efficient than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis.\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows an infinite number of items in varying shades of blue:\n\n```dart\nSliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n)\n```\n\n\nSee also:\n\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Direction of the hero's flight based on the navigation operation.", "detail": "", "kind": 13, "label": "HeroFlightDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that replaces the entire screen.", "detail": "", "kind": 7, "label": "PageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of an [Overlay].\n\nUsed to insert [OverlayEntry]s into the overlay using the [insert] and\n[insertAll] functions.", "detail": "", "kind": 7, "label": "OverlayState" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultWidgetsLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "US English localizations for the widgets library.\n\nSee also:\n\n * [GlobalWidgetsLocalizations], which provides widgets localizations for\n many languages.\n * [WidgetsApp.delegates], which automatically includes\n [DefaultWidgetsLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultWidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RepaintBoundary", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that creates a separate display list for its child.\n\nThis widget creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree.\n\nThis is useful since [RenderObject.paint] may be triggered even if its\nassociated [Widget] instances did not change or rebuild. A [RenderObject]\nwill repaint whenever any [RenderObject] that shares the same [Layer] is\nmarked as being dirty and needing paint (see [RenderObject.markNeedsPaint]),\nsuch as when an ancestor scrolls or when an ancestor or descendant animates.\n\nContaining [RenderObject.paint] to parts of the render subtree that are\nactually visually changing using [RepaintBoundary] explicitly or implicitly\nis therefore critical to minimizing redundant work and improving the app's\nperformance.\n\nWhen a [RenderObject] is flagged as needing to paint via\n[RenderObject.markNeedsPaint], the nearest ancestor [RenderObject] with\n[RenderObject.isRepaintBoundary], up to possibly the root of the application,\nis requested to repaint. That nearest ancestor's [RenderObject.paint] method\nwill cause _all_ of its descendant [RenderObject]s to repaint in the same\nlayer.\n\n[RepaintBoundary] is therefore used, both while propagating the\n`markNeedsPaint` flag up the render tree and while traversing down the\nrender tree via [RenderObject.paintChild], to strategically contain repaints\nto the render subtree that visually changed for performance. This is done\nbecause the [RepaintBoundary] widget creates a [RenderObject] that always\nhas a [Layer], decoupling ancestor render objects from the descendant\nrender objects.\n\n[RepaintBoundary] has the further side-effect of possibly hinting to the\nengine that it should further optimize animation performance if the render\nsubtree behind the [RepaintBoundary] is sufficiently complex and is static\nwhile the surrounding tree changes frequently. In those cases, the engine\nmay choose to pay a one time cost of rasterizing and caching the pixel\nvalues of the subtree for faster future GPU re-rendering speed.\n\nSeveral framework widgets insert [RepaintBoundary] widgets to mark natural\nseparation points in applications. For instance, contents in Material Design\ndrawers typically don't change while the drawer opens and closes, so\nrepaints are automatically contained to regions inside or outside the drawer\nwhen using the [Drawer] widget during transitions.\n\nSee also:\n\n * [debugRepaintRainbowEnabled], a debugging flag to help visually monitor\n render tree repaints in a running app.\n * [debugProfilePaintsEnabled], a debugging flag to show render tree\n repaints in the observatory's timeline view.", "detail": "", "kind": 7, "label": "RepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RootRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The element at the root of the tree.\n\nOnly root elements may have their owner set explicitly. All other\nelements inherit their owner from their parent.", "detail": "", "kind": 7, "label": "RootRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportNotificationMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mixin for [Notification]s that track how many [RenderAbstractViewport] they\nhave bubbled through.\n\nThis is used by [ScrollNotification] and [OverscrollIndicatorNotification].", "detail": "", "kind": 7, "label": "ViewportNotificationMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single child slot. (This superclass only provides the storage\nfor that child, it doesn't actually provide the updating logic.)", "detail": "", "kind": 7, "label": "SingleChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/widgets.dart", "libraryId": 332, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VelocityTracker", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Computes a pointer's velocity based on data from [PointerMoveEvent]s.\n\nThe input data is provided by calling [addPosition]. Adding data is cheap.\n\nTo obtain a velocity, call [getVelocity] or [getVelocityEstimate]. This will\ncompute the velocity based on the data added so far. Only call these when\nyou need to use the velocity, as they are comparatively expensive.\n\nThe quality of the velocity estimation will be better if more data points\nhave been received.", "detail": "", "kind": 7, "label": "VelocityTracker" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HorizontalDragGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the horizontal direction.\n\nUsed for horizontal scrolling.\n\nSee also:\n\n * [VerticalDragGestureRecognizer], for a similar recognizer but for\n vertical movement.\n * [MultiDragGestureRecognizer], for a family of gesture recognizers that\n track each touch point independently.", "detail": "", "kind": 7, "label": "HorizontalDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetailsForPointerEventDispatcher", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [FlutterErrorDetails] with extra fields for the gesture\nlibrary's binding's pointer event dispatcher ([GestureBinding.dispatchEvent]).\n\nSee also [FlutterErrorDetailsForPointerRouter], which is also used by the\ngesture library.", "detail": "", "kind": 7, "label": "FlutterErrorDetailsForPointerEventDispatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiDragPointerState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Per-pointer state for a [MultiDragGestureRecognizer].\n\nA [MultiDragGestureRecognizer] tracks each pointer separately. The state for\neach pointer is a subclass of [MultiDragPointerState].", "detail": "", "kind": 7, "label": "MultiDragPointerState" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerRouter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A routing table for [PointerEvent] events.", "detail": "", "kind": 7, "label": "PointerRouter" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerHoverEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is not\nin contact with the device.\n\nSee also:\n\n * [PointerEnterEvent], which reports when the pointer has entered an\n object.\n * [PointerExitEvent], which reports when the pointer has left an object.\n * [PointerMoveEvent], which reports movement while the pointer is in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerHoverEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MouseTrackerAnnotation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The annotation object used to annotate layers that are interested in mouse\nmovements.\n\nThis is added to a layer and managed by the [Listener] widget.", "detail": "", "kind": 7, "label": "MouseTrackerAnnotation" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback that receives a [PointerEvent]", "detail": "(PointerEvent event) → void", "kind": 7, "label": "PointerRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A binding for the gesture subsystem.\n\n## Lifecycle of pointer events and the gesture arena\n\n### [PointerDownEvent]\n\nWhen a [PointerDownEvent] is received by the [GestureBinding] (from\n[Window.onPointerDataPacket], as interpreted by the\n[PointerEventConverter]), a [hitTest] is performed to determine which\n[HitTestTarget] nodes are affected. (Other bindings are expected to\nimplement [hitTest] to defer to [HitTestable] objects. For example, the\nrendering layer defers to the [RenderView] and the rest of the render object\nhierarchy.)\n\nThe affected nodes then are given the event to handle ([dispatchEvent] calls\n[HitTestTarget.handleEvent] for each affected node). If any have relevant\n[GestureRecognizer]s, they provide the event to them using\n[GestureRecognizer.addPointer]. This typically causes the recognizer to\nregister with the [PointerRouter] to receive notifications regarding the\npointer in question.\n\nOnce the hit test and dispatching logic is complete, the event is then\npassed to the aforementioned [PointerRouter], which passes it to any objects\nthat have registered interest in that event.\n\nFinally, the [gestureArena] is closed for the given pointer\n([GestureArenaManager.close]), which begins the process of selecting a\ngesture to win that pointer.\n\n### Other events\n\nA pointer that is [PointerEvent.down] may send further events, such as\n[PointerMoveEvent], [PointerUpEvent], or [PointerCancelEvent]. These are\nsent to the same [HitTestTarget] nodes as were found when the down event was\nreceived (even if they have since been disposed; it is the responsibility of\nthose objects to be aware of that possibility).\n\nThen, the events are routed to any still-registered entrants in the\n[PointerRouter]'s table for that pointer.\n\nWhen a [PointerUpEvent] is received, the [GestureArenaManager.sweep] method\nis invoked to force the gesture arena logic to terminate if necessary.", "detail": "", "kind": 7, "label": "GestureBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes a force press on devices that have force sensors.\n\nOnly the force from a single pointer is used to invoke events. A tap\nrecognizer will win against this recognizer on pointer up as long as the\npointer has not pressed with a force greater than\n[ForcePressGestureRecognizer.startPressure]. A long press recognizer will\nwin when the press down time exceeds the threshold time as long as the\npointer's pressure was never greater than\n[ForcePressGestureRecognizer.startPressure] in that duration.\n\nAs of November, 2018 iPhone devices of generation 6S and higher have\nforce touch functionality, with the exception of the iPhone XR. In addition,\na small handful of Android devices have this functionality as well.\n\nDevices with faux screen pressure sensors like the Pixel 2 and 3 will not\nsend any force press related callbacks.\n\nReported pressure will always be in the range 0.0 to 1.0, where 1.0 is\nmaximum pressure and 0.0 is minimum pressure. If using a custom\n[interpolation] callback, the pressure reported will correspond to that\ncustom curve.", "detail": "", "kind": 7, "label": "ForcePressGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeastSquaresSolver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Uses the least-squares algorithm to fit a polynomial to a set of data.", "detail": "", "kind": 7, "label": "LeastSquaresSolver" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PolynomialFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An nth degree polynomial fit to a dataset.", "detail": "", "kind": 7, "label": "PolynomialFit" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImmediateMultiDragGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement both horizontally and vertically on a per-pointer basis.\n\nIn contrast to [PanGestureRecognizer], [ImmediateMultiDragGestureRecognizer]\nwatches each pointer separately, which means multiple drags can be\nrecognized concurrently if multiple pointers are in contact with the screen.\n\nSee also:\n\n * [PanGestureRecognizer], which recognizes only one drag gesture at a time,\n regardless of how many fingers are involved.\n * [HorizontalMultiDragGestureRecognizer], which only recognizes drags that\n start horizontally.\n * [VerticalMultiDragGestureRecognizer], which only recognizes drags that\n start vertically.\n * [DelayedMultiDragGestureRecognizer], which only recognizes drags that\n start after a long-press gesture.", "detail": "", "kind": 7, "label": "ImmediateMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement.\n\nIn contrast to [MultiDragGestureRecognizer], [DragGestureRecognizer]\nrecognizes a single gesture sequence for all the pointers it watches, which\nmeans that the recognizer has at most one drag sequence active at any given\ntime regardless of how many pointers are in contact with the screen.\n\n[DragGestureRecognizer] is not intended to be used directly. Instead,\nconsider using one of its subclasses to recognize specific types for drag\ngestures.\n\nSee also:\n\n * [HorizontalDragGestureRecognizer], for left and right drags.\n * [VerticalDragGestureRecognizer], for up and down drags.\n * [PanGestureRecognizer], for drags that are not locked to a single axis.", "detail": "", "kind": 7, "label": "DragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerExitEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is not\nin contact with the device, and entered a target object.\n\nSee also:\n\n * [PointerHoverEvent], which reports when the pointer has moved while\n within an object.\n * [PointerEnterEvent], which reports when the pointer has entered an object.\n * [PointerMoveEvent], which reports movement while the pointer is in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerExitEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MouseTracker", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Keeps state about which objects are interested in tracking mouse positions\nand notifies them when a mouse pointer enters, moves, or leaves an annotated\nregion that they are interested in.\n\nOwned by the [RendererBinding] class.", "detail": "", "kind": 7, "label": "MouseTracker" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes when the user has pressed down at the same location for a long\nperiod of time.\n\nThe gesture must not deviate in position from its touch down point for 500ms\nuntil it's recognized. Once the gesture is accepted, the finger can be\nmoved, triggering [onLongPressMoveUpdate] callbacks, unless the\n[postAcceptSlopTolerance] constructor argument is specified.", "detail": "", "kind": 7, "label": "LongPressGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerRemovedEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The device is no longer tracking the pointer.\n\nFor example, the pointer might have drifted out of the device's hover\ndetection range or might have been disconnected from the system entirely.", "detail": "", "kind": 7, "label": "PointerRemovedEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HorizontalMultiDragGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the horizontal direction on a per-pointer basis.\n\nIn contrast to [HorizontalDragGestureRecognizer],\n[HorizontalMultiDragGestureRecognizer] watches each pointer separately,\nwhich means multiple drags can be recognized concurrently if multiple\npointers are in contact with the screen.\n\nSee also:\n\n * [HorizontalDragGestureRecognizer], a gesture recognizer that just\n looks at horizontal movement.\n * [ImmediateMultiDragGestureRecognizer], a similar recognizer, but without\n the limitation that the drag must start horizontally.\n * [VerticalMultiDragGestureRecognizer], which only recognizes drags that\n start vertically.", "detail": "", "kind": 7, "label": "HorizontalMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalResolver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An resolver for pointer signal events.\n\nObjects interested in a [PointerSignalEvent] should register a callback to\nbe called if they should handle the event. The resolver's purpose is to\nensure that the same pointer signal is not handled by multiple objects in\na hierarchy.\n\nPointer signals are immediate, so unlike a gesture arena it always resolves\nat the end of event dispatch. The first callback registered will be the one\nthat is called.", "detail": "", "kind": 7, "label": "PointerSignalResolver" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface to information to an arena.\n\nA given [GestureArenaMember] can have multiple entries in multiple arenas\nwith different pointer ids.", "detail": "", "kind": 7, "label": "GestureArenaEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapDownCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [MultiTapGestureRecognizer] for when a pointer that might\ncause a tap has contacted the screen at a particular location.", "detail": "(int pointer, TapDownDetails details) → void", "kind": 7, "label": "GestureMultiTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestResult", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The result of performing a hit test.", "detail": "", "kind": 7, "label": "HitTestResult" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDoubleTapCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callback when the user has tapped the screen at the same\nlocation twice in quick succession.", "detail": "() → void", "kind": 7, "label": "GestureDoubleTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Drag", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for objects that receive updates about drags.\n\nThis interface is used in various ways. For example,\n[MultiDragGestureRecognizer] uses it to update its clients when it\nrecognizes a gesture. Similarly, the scrolling infrastructure in the widgets\nlibrary uses it to notify the [DragScrollActivity] when the user drags the\nscrollable.", "detail": "", "kind": 7, "label": "Drag" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration of offset passed to [DragStartDetails].\n\nThe settings determines when a drag formally starts when the user\ninitiates a drag.\n\nSee also:\n\n * [DragGestureRecognizer.dragStartBehavior], which gives an example for the different behaviors.", "detail": "", "kind": 13, "label": "DragStartBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDeviceKind", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The kind of pointer device.", "detail": "", "kind": 13, "label": "PointerDeviceKind" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes taps.\n\nGesture recognizers take part in gesture arenas to enable potential gestures\nto be disambiguated from each other. This process is managed by a\n[GestureArenaManager] (q.v.).\n\n[TapGestureRecognizer] considers all the pointers involved in the pointer\nevent sequence as contributing to one gesture. For this reason, extra\npointer interactions during a tap sequence are not recognized as additional\ntaps. For example, down-1, down-2, up-1, up-2 produces only one tap on up-1.\n\nThe lifecycle of events for a tap gesture is as follows:\n\n* [onTapDown], which triggers after a short timeout ([deadline]) even if the\n gesture has not won its arena yet.\n* [onTapUp] and [onTap], which trigger when the pointer is released if the\n gesture wins the arena.\n* [onTapCancel], which triggers instead of [onTapUp] and [onTap] in the case\n of the gesture not winning the arena.\n\nSee also:\n\n * [GestureDetector.onTap], which uses this recognizer.\n * [MultiTapGestureRecognizer]", "detail": "", "kind": 7, "label": "TapGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestDispatcher", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can dispatch events.", "detail": "", "kind": 7, "label": "HitTestDispatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MouseDetectorAnnotationFinder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes a function that finds an annotation given an offset in logical\ncoordinates.\n\nIt is used by the [MouseTracker] to fetch annotations for the mouse\nposition.", "detail": "(Offset offset) → MouseTrackerAnnotation", "kind": 7, "label": "MouseDetectorAnnotationFinder" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEventConverter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Converts from engine pointer data to framework pointer events.\n\nThis takes [PointerDataPacket] objects, as received from the engine via\n[dart:ui.Window.onPointerDataPacket], and converts them to [PointerEvent]\nobjects.", "detail": "", "kind": 7, "label": "PointerEventConverter" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerHoverEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerHoverEvent] events.\n\nUsed by [MouseTrackerAnnotation], [Listener] and [RenderPointerListener].", "detail": "(PointerHoverEvent event) → void", "kind": 7, "label": "PointerHoverEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForceInterpolation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for interpolating the raw\ndevice pressure to a value in the range [0, 1] given the device's pressure\nmin and pressure max.", "detail": "(double pressureMin, double pressureMax, double pressure) → double", "kind": 7, "label": "GestureForceInterpolation" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [MultiTapGestureRecognizer] for when a tap has occurred.", "detail": "(int pointer) → void", "kind": 7, "label": "GestureMultiTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RecognizerCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Generic signature for callbacks passed to\n[GestureRecognizer.invokeCallback]. This allows the\n[GestureRecognizer.invokeCallback] mechanism to be generically used with\nanonymous functions that return objects of particular types.", "detail": "() → T", "kind": 7, "label": "RecognizerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleTapGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes when the user has tapped the screen at the same location twice in\nquick succession.", "detail": "", "kind": 7, "label": "DoubleTapGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapUpCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [MultiTapGestureRecognizer] for when a pointer that will\ntrigger a tap has stopped contacting the screen at a particular location.", "detail": "(int pointer, TapUpDetails details) → void", "kind": 7, "label": "GestureMultiTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDisposition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether the gesture was accepted or rejected.", "detail": "", "kind": 13, "label": "GestureDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryPointerGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for gesture recognizers that track a single primary pointer.\n\nGestures based on this class will stop tracking the gesture if the primary\npointer travels beyond [preAcceptSlopTolerance] or [postAcceptSlopTolerance]\npixels from the original contact point of the gesture.\n\nIf the [preAcceptSlopTolerance] was breached before the gesture was accepted\nin the gesture arena, the gesture will be rejected.", "detail": "", "kind": 7, "label": "PrimaryPointerGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerAddedEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The device has started tracking the pointer.\n\nFor example, the pointer might be hovering above the device, having not yet\nmade contact with the surface of the device.", "detail": "", "kind": 7, "label": "PointerAddedEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VelocityEstimate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A two dimensional velocity estimate.\n\nVelocityEstimates are computed by [VelocityTracker.getVelocityEstimate]. An\nestimate's [confidence] measures how well the velocity tracker's position\ndata fit a straight line, [duration] is the time that elapsed between the\nfirst and last position sample used to compute the velocity, and [offset]\nis similarly the difference between the first and last positions.\n\nSee also:\n\n * [VelocityTracker], which computes [VelocityEstimate]s.\n * [Velocity], which encapsulates (just) a velocity vector and provides some\n useful velocity operations.", "detail": "", "kind": 7, "label": "VelocityEstimate" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data collected during a hit test about a specific [HitTestTarget].\n\nSubclass this object to pass additional information from the hit test phase\nto the event propagation phase.", "detail": "", "kind": 7, "label": "HitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalResolvedCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The callback to register with a [PointerSignalResolver] to express\ninterest in a pointer signal event.", "detail": "(PointerSignalEvent event) → void", "kind": 7, "label": "PointerSignalResolvedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerScrollEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer issued a scroll event.\n\nScrolling the scroll wheel on a mouse is an example of an event that\nwould create a [PointerScrollEvent].", "detail": "", "kind": 7, "label": "PointerScrollEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaMember", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents an object participating in an arena.\n\nReceives callbacks from the GestureArena to notify the object when it wins\nor loses a gesture negotiation. Exactly one of [acceptGesture] or\n[rejectGesture] will be called for each arena this member was added to,\nregardless of what caused the arena to be resolved. For example, if a\nmember resolves the arena itself, that member still receives an\n[acceptGesture] callback.", "detail": "", "kind": 7, "label": "GestureArenaMember" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaTeam", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A group of [GestureArenaMember] objects that are competing as a unit in the\n[GestureArenaManager].\n\nNormally, a recognizer competes directly in the [GestureArenaManager] to\nrecognize a sequence of pointer events as a gesture. With a\n[GestureArenaTeam], recognizers can compete in the arena in a group with\nother recognizers. Arena teams may have a captain which wins the arena on\nbehalf of its team.\n\nWhen gesture recognizers are in a team together without a captain, then once\nthere are no other competing gestures in the arena, the first gesture to\nhave been added to the team automatically wins, instead of the gestures\ncontinuing to compete against each other.\n\nWhen gesture recognizers are in a team with a captain, then once one of the\nteam members claims victory or there are no other competing gestures in the\narena, the captain wins the arena, and all other team members lose.\n\nFor example, [Slider] uses a team without a captain to support both a\n[HorizontalDragGestureRecognizer] and a [TapGestureRecognizer], but without\nthe drag recognizer having to wait until the user has dragged outside the\nslop region of the tap gesture before triggering. Since they compete as a\nteam, as soon as any other recognizers are out of the arena, the drag\nrecognizer wins, even if the user has not actually dragged yet. On the other\nhand, if the tap can win outright, before the other recognizers are taken\nout of the arena (e.g. if the slider is in a vertical scrolling list and the\nuser places their finger on the touch surface then lifts it, so that neither\nthe horizontal nor vertical drag recognizers can claim victory) the tap\nrecognizer still actually wins, despite being in the team.\n\n[AndroidView] uses a team with a captain to decide which gestures are\nforwarded to the native view. For example if we want to forward taps and\nvertical scrolls to a native Android view, [TapGestureRecognizers] and\n[VerticalDragGestureRecognizer] are added to a team with a captain(the captain is set to be a\ngesture recognizer that never explicitly claims the gesture).\nThe captain allows [AndroidView] to know when any gestures in the team has been\nrecognized (or all other arena members are out), once the captain wins the\ngesture is forwarded to the Android view.\n\nTo assign a gesture recognizer to a team, set\n[OneSequenceGestureRecognizer.team] to an instance of [GestureArenaTeam].", "detail": "", "kind": 7, "label": "GestureArenaTeam" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiDragStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when [MultiDragGestureRecognizer] recognizes the start of a drag gesture.", "detail": "(Offset position) → Drag", "kind": 7, "label": "GestureMultiDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureArenaManager", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The first member to accept or the last member to not reject wins.\n\nSee <https://flutter.dev/gestures/#gesture-disambiguation> for more\ninformation about the role this class plays in the gesture system.\n\nTo debug problems with gestures, consider using\n[debugPrintGestureArenaDiagnostics].", "detail": "", "kind": 7, "label": "GestureArenaManager" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneSequenceGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for gesture recognizers that can only recognize one\ngesture at a time. For example, a single [TapGestureRecognizer]\ncan never recognize two taps happening simultaneously, even if\nmultiple pointers are placed on the same widget.\n\nThis is in contrast to, for instance, [MultiTapGestureRecognizer],\nwhich manages each pointer independently and can consider multiple\nsimultaneous touches to each result in a separate tap.", "detail": "", "kind": 7, "label": "OneSequenceGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiDragGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement on a per-pointer basis.\n\nIn contrast to [DragGestureRecognizer], [MultiDragGestureRecognizer] watches\neach pointer separately, which means multiple drags can be recognized\nconcurrently if multiple pointers are in contact with the screen.\n\n[MultiDragGestureRecognizer] is not intended to be used directly. Instead,\nconsider using one of its subclasses to recognize specific types for drag\ngestures.\n\nSee also:\n\n * [ImmediateMultiDragGestureRecognizer], the most straight-forward variant\n of multi-pointer drag gesture recognizer.\n * [HorizontalMultiDragGestureRecognizer], which only recognizes drags that\n start horizontally.\n * [VerticalMultiDragGestureRecognizer], which only recognizes drags that\n start vertically.\n * [DelayedMultiDragGestureRecognizer], which only recognizes drags that\n start after a long-press gesture.", "detail": "", "kind": 7, "label": "MultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerExitEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerExitEvent] events.\n\nUsed by [MouseTrackerAnnotation], [Listener] and [RenderPointerListener].", "detail": "(PointerExitEvent event) → void", "kind": 7, "label": "PointerExitEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes a scale gesture.\n\n[ScaleGestureRecognizer] tracks the pointers in contact with the screen and\ncalculates their focal point, indicated scale, and rotation. When a focal\npointer is established, the recognizer calls [onStart]. As the focal point,\nscale, rotation change, the recognizer calls [onUpdate]. When the pointers\nare no longer in contact with the screen, the recognizer calls [onEnd].", "detail": "", "kind": 7, "label": "ScaleGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetailsForPointerRouter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [FlutterErrorDetails] with extra fields for the gestures\nlibrary's pointer router ([PointerRouter]).\n\nSee also [FlutterErrorDetailsForPointerEventDispatcher], which is also used\nby the gestures library.", "detail": "", "kind": 7, "label": "FlutterErrorDetailsForPointerRouter" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The possible states of a [PrimaryPointerGestureRecognizer].\n\nThe recognizer advances from [ready] to [possible] when it starts tracking a\nprimary pointer. When the primary pointer is resolved in the gesture\narena (either accepted or rejected), the recognizers advances to [defunct].\nOnce the recognizer has stopped tracking any remaining pointers, the\nrecognizer returns to [ready].", "detail": "", "kind": 13, "label": "GestureRecognizerState" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DelayedMultiDragGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement both horizontally and vertically on a per-pointer basis\nafter a delay.\n\nIn contrast to [ImmediateMultiDragGestureRecognizer],\n[DelayedMultiDragGestureRecognizer] waits for a [delay] before recognizing\nthe drag. If the pointer moves more than [kTouchSlop] before the delay\nexpires, the gesture is not recognized.\n\nIn contrast to [PanGestureRecognizer], [DelayedMultiDragGestureRecognizer]\nwatches each pointer separately, which means multiple drags can be\nrecognized concurrently if multiple pointers are in contact with the screen.\n\nSee also:\n\n * [ImmediateMultiDragGestureRecognizer], a similar recognizer but without\n the delay.\n * [PanGestureRecognizer], which recognizes only one drag gesture at a time,\n regardless of how many fingers are involved.", "detail": "", "kind": 7, "label": "DelayedMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEnterEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is not\nin contact with the device, and it has entered a target object.\n\nSee also:\n\n * [PointerHoverEvent], which reports when the pointer has moved while\n within an object.\n * [PointerExitEvent], which reports when the pointer has left an object.\n * [PointerMoveEvent], which reports movement while the pointer is in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerEnterEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestTarget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can handle events.", "detail": "", "kind": 7, "label": "HitTestTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalMultiDragGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the vertical direction on a per-pointer basis.\n\nIn contrast to [VerticalDragGestureRecognizer],\n[VerticalMultiDragGestureRecognizer] watches each pointer separately,\nwhich means multiple drags can be recognized concurrently if multiple\npointers are in contact with the screen.\n\nSee also:\n\n * [VerticalDragGestureRecognizer], a gesture recognizer that just\n looks at vertical movement.\n * [ImmediateMultiDragGestureRecognizer], a similar recognizer, but without\n the limitation that the drag must start vertically.\n * [HorizontalMultiDragGestureRecognizer], which only recognizes drags that\n start horizontally.", "detail": "", "kind": 7, "label": "VerticalMultiDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event that corresponds to a discrete pointer signal.\n\nPointer signals are events that originate from the pointer but don't change\nthe state of the pointer itself, and are discrete rather than needing to be\ninterpreted in the context of a series of events.", "detail": "", "kind": 7, "label": "PointerSignalEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class that all gesture recognizers inherit from.\n\nProvides a basic API that can be used by classes that work with\ngesture recognizers but don't care about the specific details of\nthe gestures recognizers themselves.\n\nSee also:\n\n * [GestureDetector], the widget that is used to detect gestures.\n * [debugPrintRecognizerCallbacksTrace], a flag that can be set to help\n debug issues with gesture recognizers.", "detail": "", "kind": 7, "label": "GestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEnterEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerEnterEvent] events.\n\nUsed by [MouseTrackerAnnotation], [Listener] and [RenderPointerListener].", "detail": "(PointerEnterEvent event) → void", "kind": 7, "label": "PointerEnterEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDragGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement in the vertical direction.\n\nUsed for vertical scrolling.\n\nSee also:\n\n * [HorizontalDragGestureRecognizer], for a similar recognizer but for\n horizontal movement.\n * [MultiDragGestureRecognizer], for a family of gesture recognizers that\n track each touch point independently.", "detail": "", "kind": 7, "label": "VerticalDragGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureMultiTapCancelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureMultiTapDownCallback] will not end up causing a tap.", "detail": "(int pointer) → void", "kind": 7, "label": "GestureMultiTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PanGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes movement both horizontally and vertically.\n\nSee also:\n\n * [ImmediateMultiDragGestureRecognizer], for a similar recognizer that\n tracks each touch point independently.\n * [DelayedMultiDragGestureRecognizer], for a similar recognizer that\n tracks each touch point independently, but that doesn't start until\n some time has passed.", "detail": "", "kind": 7, "label": "PanGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EagerGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A gesture recognizer that eagerly claims victory in all gesture arenas.\n\nThis is typically passed in [AndroidView.gestureRecognizers] in order to immediately dispatch\nall touch events inside the view bounds to the embedded Android view.\nSee [AndroidView.gestureRecognizers] for more details.", "detail": "", "kind": 7, "label": "EagerGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiTapGestureRecognizer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Recognizes taps on a per-pointer basis.\n\n[MultiTapGestureRecognizer] considers each sequence of pointer events that\ncould constitute a tap independently of other pointers: For example, down-1,\ndown-2, up-1, up-2 produces two taps, on up-1 and up-2.\n\nSee also:\n\n * [TapGestureRecognizer]", "detail": "", "kind": 7, "label": "MultiTapGestureRecognizer" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/gestures.dart", "libraryId": 129, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can hit-test pointers.", "detail": "", "kind": 7, "label": "HitTestable" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/painting.dart", "libraryId": 164, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SpringDescription", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that describes a spring's constants.\n\nUsed to configure a [SpringSimulation].", "detail": "", "kind": 7, "label": "SpringDescription" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrictionSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simulation that applies a drag to slow a particle down.\n\nModels a particle affected by fluid drag, e.g. air resistance.\n\nThe simulation ends when the velocity of the particle drops to zero (within\nthe current velocity [tolerance]).", "detail": "", "kind": 7, "label": "FrictionSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampedSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simulation that applies limits to another simulation.\n\nThe limits are only applied to the other simulation's outputs. For example,\nif a maximum position was applied to a gravity simulation with the\nparticle's initial velocity being up, and the acceleration being down, and\nthe maximum position being between the initial position and the curve's\napogee, then the particle would return to its initial position in the same\namount of time as it would have if the maximum had not been applied; the\ndifference would just be that the position would be reported as pinned to\nthe maximum value for the times that it would otherwise have been reported\nas higher.", "detail": "", "kind": 7, "label": "ClampedSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GravitySimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simulation that applies a constant accelerating force.\n\nModels a particle that follows Newton's second law of motion. The simulation\nends when the position reaches a defined point.\n\n\nThis method triggers an [AnimationController] (a previously constructed\n`_controller` field) to simulate a fall of 300 pixels.\n\n```dart\nvoid _startFall() {\n _controller.animateWith(GravitySimulation(\n 10.0, // acceleration, pixels per second per second\n 0.0, // starting position, pixels\n 300.0, // ending position, pixels\n 0.0, // starting velocity, pixels per second\n ));\n}\n```\n\nThis [AnimationController] could be used with an [AnimatedBuilder] to\nanimate the position of a child as if it was falling.\n\nSee also:\n\n * [Curves.bounceOut], a [Curve] that has a similar aesthetics but includes\n a bouncing effect.", "detail": "", "kind": 7, "label": "GravitySimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SpringType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The kind of spring solution that the [SpringSimulation] is using to simulate the spring.\n\nSee [SpringSimulation.type].", "detail": "", "kind": 13, "label": "SpringType" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SpringSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A spring simulation.\n\nModels a particle attached to a spring that follows Hooke's law.", "detail": "", "kind": 7, "label": "SpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/physics.dart", "libraryId": 398, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoundedFrictionSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [FrictionSimulation] that clamps the modeled particle to a specific range\nof values.", "detail": "", "kind": 7, "label": "BoundedFrictionSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface that [Scrollable] widgets implement in order to use\n[ScrollPosition].\n\nSee also:\n\n * [ScrollableState], which is the most common implementation of this\n interface.\n * [ScrollPosition], which uses this interface to communicate with the\n scrollable widget.", "detail": "", "kind": 7, "label": "ScrollContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalTranslation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[FractionalTranslation], even if the contents are offset such that\nthey overflow.\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [new Transform.translate], which applies an absolute offset translation\n transformation instead of an offset scaled to the child.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbsorbPointer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this widget prevents its subtree from receiving\npointer events by terminating hit testing at itself. It still consumes space\nduring layout and paints its child as usual. It just prevents its children\nfrom being the target of located events, because it returns true from\n[RenderBox.hitTest].\n\n\nSee also:\n\n * [IgnorePointer], which also prevents its children from receiving pointer\n events but is itself invisible to hit testing.", "detail": "", "kind": 7, "label": "AbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State object for a [Scrollable] widget.\n\nTo manipulate a [Scrollable] widget's scroll position, use the object\nobtained from the [position] property.\n\nTo be informed of when a [Scrollable] widget is scrolling, use a\n[NotificationListener] to listen for [ScrollNotification] notifications.\n\nThis class is not intended to be subclassed. To specialize the behavior of a\n[Scrollable], provide it with a [ScrollPhysics].", "detail": "", "kind": 7, "label": "ScrollableState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativePositionedTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which transitions the child's position\nbased on the value of [rect] relative to a bounding box with the\nspecified [size].\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [RelativePositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "RelativePositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a [Widget] when given a concrete value of a [ValueListenable<T>].\n\nIf the `child` parameter provided to the [ValueListenableBuilder] is not\nnull, the same `child` widget is passed back to this [ValueWidgetBuilder]\nand should typically be incorporated in the returned widget tree.\n\nSee also:\n\n * [ValueListenableBuilder], a widget which invokes this builder each time\n a [ValueListenable] changes value.", "detail": "(BuildContext context, T value, Widget child) → Widget", "kind": 7, "label": "ValueWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Texture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture widget refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture widgets are repainted autonomously as dictated by the backend (e.g.\non arrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by its parent widget, and the\ntexture is automatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "Texture" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePredicate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [Navigator.popUntil] predicate argument.", "detail": "(Route<dynamic> route) → bool", "kind": 7, "label": "RoutePredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ChangeNotifier] that holds a single value.\n\nWhen [value] is replaced with something that is not equal to the old\nvalue as evaluated by the equality operator ==, this class notifies its\nlisteners.", "detail": "", "kind": 7, "label": "ValueNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PrimaryScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Associates a [ScrollController] with a subtree.\n\nWhen a [ScrollView] has [ScrollView.primary] set to true and is not given\nan explicit [ScrollController], the [ScrollView] uses [of] to find the\n[ScrollController] associated with its subtree.\n\nThis mechanism can be used to provide default behavior for scroll views in a\nsubtree. For example, the [Scaffold] uses this mechanism to implement the\nscroll-to-top gesture on iOS.", "detail": "", "kind": 7, "label": "PrimaryScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MetaData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "MetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Element", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An instantiation of a [Widget] at a particular location in the tree.\n\nWidgets describe how to configure a subtree but the same widget can be used\nto configure multiple subtrees simultaneously because widgets are immutable.\nAn [Element] represents the use of a widget to configure a specific location\nin the tree. Over time, the widget associated with a given element can\nchange, for example, if the parent widget rebuilds and creates a new widget\nfor this location.\n\nElements form a tree. Most elements have a unique child, but some widgets\n(e.g., subclasses of [RenderObjectElement]) can have multiple children.\n\nElements have the following lifecycle:\n\n * The framework creates an element by calling [Widget.createElement] on the\n widget that will be used as the element's initial configuration.\n * The framework calls [mount] to add the newly created element to the tree\n at a given slot in a given parent. The [mount] method is responsible for\n inflating any child widgets and calling [attachRenderObject] as\n necessary to attach any associated render objects to the render tree.\n * At this point, the element is considered \"active\" and might appear on\n screen.\n * At some point, the parent might decide to change the widget used to\n configure this element, for example because the parent rebuilt with new\n state. When this happens, the framework will call [update] with the new\n widget. The new widget will always have the same [runtimeType] and key as\n old widget. If the parent wishes to change the [runtimeType] or key of\n the widget at this location in the tree, can do so by unmounting this\n element and inflating the new widget at this location.\n * At some point, an ancestor might decide to remove this element (or an\n intermediate ancestor) from the tree, which the ancestor does by calling\n [deactivateChild] on itself. Deactivating the intermediate ancestor will\n remove that element's render object from the render tree and add this\n element to the [owner]'s list of inactive elements, causing the framework\n to call [deactivate] on this element.\n * At this point, the element is considered \"inactive\" and will not appear\n on screen. An element can remain in the inactive state only until\n the end of the current animation frame. At the end of the animation\n frame, any elements that are still inactive will be unmounted.\n * If the element gets reincorporated into the tree (e.g., because it or one\n of its ancestors has a global key that is reused), the framework will\n remove the element from the [owner]'s list of inactive elements, call\n [activate] on the element, and reattach the element's render object to\n the render tree. (At this point, the element is again considered \"active\"\n and might appear on screen.)\n * If the element does not get reincorporated into the tree by the end of\n the current animation frame, the framework will call [unmount] on the\n element.\n * At this point, the element is considered \"defunct\" and will not be\n incorporated into the tree in the future.", "detail": "", "kind": 7, "label": "Element" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mutable selection state of the inspector.", "detail": "", "kind": 7, "label": "InspectorSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State associated with a [Form] widget.\n\nA [FormState] object can be used to [save], [reset], and [validate] every\n[FormField] that is a descendant of the associated [Form].\n\nTypically obtained via [Form.of].", "detail": "", "kind": 7, "label": "FormState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoActionSheetAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A button typically used in a [CupertinoActionSheet].\n\nSee also:\n\n * [CupertinoActionSheet], an alert that presents the user with a set of two or\n more choices related to the current context.", "detail": "", "kind": 7, "label": "CupertinoActionSheetAction" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeaderDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Delegate for configuring a [SliverPersistentHeader].", "detail": "", "kind": 7, "label": "SliverPersistentHeaderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A leaf node in the focus tree that can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nTo request focus, find the [FocusScopeNode] for the current [BuildContext]\nand call the [FocusScopeNode.requestFocus] method:\n\n```dart\nFocusScope.of(context).requestFocus(focusNode);\n```\n\nIf your widget requests focus, be sure to call\n`FocusScope.of(context).reparentIfNeeded(focusNode);` in your `build`\nmethod to reparent your [FocusNode] if your widget moves from one\nlocation in the tree to another.\n\n## Lifetime\n\nFocus nodes are long-lived objects. For example, if a stateful widget has a\nfocusable child widget, it should create a [FocusNode] in the\n[State.initState] method, and [dispose] it in the [State.dispose] method,\nproviding the same [FocusNode] to the focusable child each time the\n[State.build] method is run. In particular, creating a [FocusNode] each time\n[State.build] is invoked will cause the focus to be lost each time the\nwidget is built.\n\nSee also:\n\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusNode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the scale of a transformed widget.\n\nHere's an illustration of the [ScaleTransition] widget, with it's [alignment]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "ScaleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegion", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Annotates a region of the layer tree with a value.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer pushed into the layer tree.", "detail": "", "kind": 7, "label": "AnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the physics of a [Scrollable] widget.\n\nFor example, determines how the [Scrollable] will behave when the user\nreaches the maximum scroll extent or when the user stops scrolling.\n\nWhen starting a physics [Simulation], the current scroll position and\nvelocity are used as the initial conditions for the particle in the\nsimulation. The movement of the particle in the simulation is then used to\ndetermine the scroll position for the widget.", "detail": "", "kind": 7, "label": "ScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the size of one of the descendants of the object receiving\nthis notification has changed, and that therefore any assumptions about that\nlayout are no longer valid.\n\nFor example, sent by the [SizeChangedLayoutNotifier] widget whenever that\nwidget changes size.\n\nThis notification can be used for triggering repaints, but if you use this\nnotification to trigger rebuilds or relayouts, you'll create a backwards\ndependency in the frame pipeline because [SizeChangedLayoutNotification]s\nare generated during layout, which is after the build phase and in the\nmiddle of the layout phase. This backwards dependency can lead to visual\ncorruption or lags.\n\nSee [LayoutChangedNotification] for additional discussion of layout\nnotifications such as this one.\n\nSee also:\n\n * [SizeChangedLayoutNotifier], which sends this notification.\n * [LayoutChangedNotification], of which this is a subclass.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "State", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The logic and internal state for a [StatefulWidget].\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\n[State] objects are created by the framework by calling the\n[StatefulWidget.createState] method when inflating a [StatefulWidget] to\ninsert it into the tree. Because a given [StatefulWidget] instance can be\ninflated multiple times (e.g., the widget is incorporated into the tree in\nmultiple places at once), there might be more than one [State] object\nassociated with a given [StatefulWidget] instance. Similarly, if a\n[StatefulWidget] is removed from the tree and later inserted in to the tree\nagain, the framework will call [StatefulWidget.createState] again to create\na fresh [State] object, simplifying the lifecycle of [State] objects.\n\n[State] objects have the following lifecycle:\n\n * The framework creates a [State] object by calling\n [StatefulWidget.createState].\n * The newly created [State] object is associated with a [BuildContext].\n This association is permanent: the [State] object will never change its\n [BuildContext]. However, the [BuildContext] itself can be moved around\n the tree along with its subtree. At this point, the [State] object is\n considered [mounted].\n * The framework calls [initState]. Subclasses of [State] should override\n [initState] to perform one-time initialization that depends on the\n [BuildContext] or the widget, which are available as the [context] and\n [widget] properties, respectively, when the [initState] method is\n called.\n * The framework calls [didChangeDependencies]. Subclasses of [State] should\n override [didChangeDependencies] to perform initialization involving\n [InheritedWidget]s. If [BuildContext.inheritFromWidgetOfExactType] is\n called, the [didChangeDependencies] method will be called again if the\n inherited widgets subsequently change or if the widget moves in the tree.\n * At this point, the [State] object is fully initialized and the framework\n might call its [build] method any number of times to obtain a\n description of the user interface for this subtree. [State] objects can\n spontaneously request to rebuild their subtree by callings their\n [setState] method, which indicates that some of their internal state\n has changed in a way that might impact the user interface in this\n subtree.\n * During this time, a parent widget might rebuild and request that this\n location in the tree update to display a new widget with the same\n [runtimeType] and [Widget.key]. When this happens, the framework will\n update the [widget] property to refer to the new widget and then call the\n [didUpdateWidget] method with the previous widget as an argument. [State]\n objects should override [didUpdateWidget] to respond to changes in their\n associated widget (e.g., to start implicit animations). The framework\n always calls [build] after calling [didUpdateWidget], which means any\n calls to [setState] in [didUpdateWidget] are redundant.\n * During development, if a hot reload occurs (whether initiated from the\n command line `flutter` tool by pressing `r`, or from an IDE), the\n [reassemble] method is called. This provides an opportunity to\n reinitialize any data that was prepared in the [initState] method.\n * If the subtree containing the [State] object is removed from the tree\n (e.g., because the parent built a widget with a different [runtimeType]\n or [Widget.key]), the framework calls the [deactivate] method. Subclasses\n should override this method to clean up any links between this object\n and other elements in the tree (e.g. if you have provided an ancestor\n with a pointer to a descendant's [RenderObject]).\n * At this point, the framework might reinsert this subtree into another\n part of the tree. If that happens, the framework will ensure that it\n calls [build] to give the [State] object a chance to adapt to its new\n location in the tree. If the framework does reinsert this subtree, it\n will do so before the end of the animation frame in which the subtree was\n removed from the tree. For this reason, [State] objects can defer\n releasing most resources until the framework calls their [dispose]\n method.\n * If the framework does not reinsert this subtree by the end of the current\n animation frame, the framework will call [dispose], which indicates that\n this [State] object will never build again. Subclasses should override\n this method to release any resources retained by this object (e.g.,\n stop any active animations).\n * After the framework calls [dispose], the [State] object is considered\n unmounted and the [mounted] property is false. It is an error to call\n [setState] at this point. This stage of the lifecycle is terminal: there\n is no way to remount a [State] object that has been disposed.\n\nSee also:\n\n * [StatefulWidget], where the current configuration of a [State] is hosted,\n and whose documentation has sample code for [State].\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "State" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls a scrollable widget.\n\nScroll controllers are typically stored as member variables in [State]\nobjects and are reused in each [State.build]. A single scroll controller can\nbe used to control multiple scrollable widgets, but some operations, such\nas reading the scroll [offset], require the controller to be used with a\nsingle scrollable widget.\n\nA scroll controller creates a [ScrollPosition] to manage the state specific\nto an individual [Scrollable] widget. To use a custom [ScrollPosition],\nsubclass [ScrollController] and override [createScrollPosition].\n\nA [ScrollController] is a [Listenable]. It notifies its listeners whenever\nany of the attached [ScrollPosition]s notify _their_ listeners (i.e.\nwhenever any of them scroll). It does not notify its listeners when the list\nof attached [ScrollPosition]s changes.\n\nTypically used with [ListView], [GridView], [CustomScrollView].\n\nSee also:\n\n * [ListView], [GridView], [CustomScrollView], which can be controlled by a\n [ScrollController].\n * [Scrollable], which is the lower-level widget that creates and associates\n [ScrollPosition] objects with [ScrollController] objects.\n * [PageController], which is an analogous object for controlling a\n [PageView].\n * [ScrollPosition], which manages the scroll offset for an individual\n scrolling widget.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSwitch", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style switch.\n\nUsed to toggle the on/off state of a single setting.\n\nThe switch itself does not maintain any state. Instead, when the state of\nthe switch changes, the widget calls the [onChanged] callback. Most widgets\nthat use a switch will listen for the [onChanged] callback and rebuild the\nswitch with a new [value] to update the visual appearance of the switch.\n\n\nThis sample shows how to use a [CupertinoSwitch] in a [ListTile]. The\n[MergeSemantics] is used to turn the entire [ListTile] into a single item\nfor accessibility tools.\n\n```dart\nMergeSemantics(\n child: ListTile(\n title: Text('Lights'),\n trailing: CupertinoSwitch(\n value: _lights,\n onChanged: (bool value) { setState(() { _lights = value; }); },\n ),\n onTap: () { setState(() { _lights = !_lights; }); },\n ),\n)\n```\n\nSee also:\n\n * [Switch], the material design equivalent.\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/switches/>", "detail": "", "kind": 7, "label": "CupertinoSwitch" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that uses a single child layout model.\n\nSee also:\n\n * [ListView], which is a [BoxScrollView] that uses a linear layout model.\n * [GridView], which is a [BoxScrollView] that uses a 2D layout model.\n * [CustomScrollView], which can combine multiple child layout models into a\n single scroll view.", "detail": "", "kind": 7, "label": "BoxScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The text style to apply to descendant [Text] widgets without explicit style.", "detail": "", "kind": 7, "label": "DefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints a [Banner].", "detail": "", "kind": 7, "label": "BannerPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget with a preferred size.\n\nThis widget does not impose any constraints on its child, and it doesn't\naffect the child's layout in any way. It just advertises a preferred size\nwhich can be used by the parent.\n\nSee also:\n\n * [AppBar.bottom] and [Scaffold.appBar], which require preferred size widgets.\n * [PreferredSizeWidget], the interface which this widget implements to expose\n its preferred size.\n * [AppBar] and [TabBar], which implement PreferredSizeWidget.", "detail": "", "kind": 7, "label": "PreferredSize" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [InheritedWidget] that's intended to be used as the base class for\nmodels whose dependents may only depend on one part or \"aspect\" of the\noverall model.\n\nAn inherited widget's dependents are unconditionally rebuilt when the\ninherited widget changes per [InheritedWidget.updateShouldNotify].\nThis widget is similar except that dependents aren't rebuilt\nunconditionally.\n\nWidgets that depend on an [InheritedModel] qualify their dependence\nwith a value that indicates what \"aspect\" of the model they depend\non. When the model is rebuilt, dependents will also be rebuilt, but\nonly if there was a change in the model that corresponds to the aspect\nthey provided.\n\nThe type parameter `T` is the type of the model aspect objects.\n\n\nWidgets create a dependency on an [InheritedModel] with a static method:\n[InheritedModel.inheritFrom]. This method's `context` parameter\ndefines the subtree that will be rebuilt when the model changes.\nTypically the `inheritFrom` method is called from a model-specific\nstatic `of` method. For example:\n\n```dart\nclass MyModel extends InheritedModel<String> {\n // ...\n static MyModel of(BuildContext context, String aspect) {\n return InheritedModel.inheritFrom<MyModel>(context, aspect: aspect);\n }\n}\n```\n\nCalling `MyModel.of(context, 'foo')` means that `context` should only\nbe rebuilt when the `foo` aspect of `MyModel` changes. If the aspect\nis null, then the model supports all aspects.\n\nWhen the inherited model is rebuilt the [updateShouldNotify] and\n[updateShouldNotifyDependent] methods are used to decide what\nshould be rebuilt. If [updateShouldNotify] returns true, then the\ninherited model's [updateShouldNotifyDependent] method is tested for\neach dependent and the set of aspect objects it depends on.\nThe [updateShouldNotifyDependent] method must compare the set of aspect\ndependencies with the changes in the model itself.\n\nFor example:\n\n```dart\nclass ABModel extends InheritedModel<String> {\n ABModel({ this.a, this.b, Widget child }) : super(child: child);\n\n final int a;\n final int b;\n\n @override\n bool updateShouldNotify(ABModel old) {\n return a != old.a || b != old.b;\n }\n\n @override\n bool updateShouldNotifyDependent(ABModel old, Set<String> aspects) {\n return (a != old.a && aspects.contains('a'))\n || (b != old.b && aspects.contains('b'))\n }\n\n // ...\n}\n```\n\nIn the previous example the dependencies checked by\n[updateShouldNotifyDependent] are just the aspect strings passed to\n`inheritFromWidgetOfExactType`. They're represented as a [Set] because\none Widget can depend on more than one aspect of the model.\nIf a widget depends on the model but doesn't specify an aspect,\nthen changes in the model will cause the widget to be rebuilt\nunconditionally.\n\nSee also:\n\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.", "detail": "", "kind": 7, "label": "InheritedModel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressEndCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressEnd], which uses [GestureLongPressEndCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTimerPicker", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A countdown timer picker in iOS style.\n\nThis picker shows a countdown duration with hour, minute and second spinners.\nThe duration is bound between 0 and 23 hours 59 minutes 59 seconds.\n\nThere are several modes of the timer picker listed in [CupertinoTimerPickerMode].\n\nSee also:\n\n * [CupertinoDatePicker], the class that implements different display modes\n of the iOS-style date picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 7, "label": "CupertinoTimerPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that displays widgets in the [Navigator]'s [Overlay].", "detail": "", "kind": 7, "label": "OverlayRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that establishes a page storage bucket for this widget subtree.", "detail": "", "kind": 7, "label": "PageStorage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPopupSurface", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Rounded rectangle surface that looks like an iOS popup surface, e.g., alert dialog\nand action sheet.\n\nA [CupertinoPopupSurface] can be configured to paint or not paint a white\ncolor on top of its blurred area. Typical usage should paint white on top\nof the blur. However, the white paint can be disabled for the purpose of\nrendering divider gaps for a more complicated layout, e.g., [CupertinoAlertDialog].\nAdditionally, the white paint can be disabled to render a blurred rounded\nrectangle without any color (similar to iOS's volume control popup).\n\nSee also:\n\n * [CupertinoAlertDialog], which is a dialog with a title, content, and\n actions.\n * <https://developer.apple.com/ios/human-interface-guidelines/views/alerts/>", "detail": "", "kind": 7, "label": "CupertinoPopupSurface" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPadding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Padding] which automatically transitions the\nindentation over a given duration whenever the given inset changes.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.", "detail": "", "kind": 7, "label": "AnimatedPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for localized resource values for the lowest levels of the Flutter\nframework.\n\nIn particular, this maps locales to a specific [Directionality] using the\n[textDirection] property.\n\nSee also:\n\n * [DefaultWidgetsLocalizations], which implements this interface and\n supports a variety of locales.", "detail": "", "kind": 7, "label": "WidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Orientation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether in portrait or landscape.", "detail": "", "kind": 13, "label": "Orientation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers.\n\n`T` is the type of gesture recognizer this class manages.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableRow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal group of cells in a [Table].\n\nEvery row in a table must have the same number of children.\n\nThe alignment of individual cells in a row can be controlled using a\n[TableCell].", "detail": "", "kind": 7, "label": "TableRow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollUpdateNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has changed its scroll position.\n\nSee also:\n\n * [OverscrollNotification], which indicates that a [Scrollable] widget\n has not changed its scroll position because the change would have caused\n its scroll position to go outside its scroll bounds.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollUpdateNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that renders an exception's message.\n\nThis widget is used when a build method fails, to help with determining\nwhere the problem lies. Exceptions are also logged to the console, which you\ncan read using `flutter logs`. The console will also include additional\ninformation such as the stack trace for the exception.", "detail": "", "kind": 7, "label": "ErrorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSegmentedControl", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style segmented control.\n\nDisplays the widgets provided in the [Map] of [children] in a\nhorizontal list. Used to select between a number of mutually exclusive\noptions. When one option in the segmented control is selected, the other\noptions in the segmented control cease to be selected.\n\nA segmented control can feature any [Widget] as one of the values in its\n[Map] of [children]. The type T is the type of the keys used\nto identify each widget and determine which widget is selected. As\nrequired by the [Map] class, keys must be of consistent types\nand must be comparable. The ordering of the keys will determine the order\nof the widgets in the segmented control.\n\nWhen the state of the segmented control changes, the widget calls the\n[onValueChanged] callback. The map key associated with the newly selected\nwidget is returned in the [onValueChanged] callback. Typically, widgets\nthat use a segmented control will listen for the [onValueChanged] callback\nand rebuild the segmented control with a new [groupValue] to update which\noption is currently selected.\n\nThe [children] will be displayed in the order of the keys in the [Map].\nThe height of the segmented control is determined by the height of the\ntallest widget provided as a value in the [Map] of [children].\nThe width of each child in the segmented control will be equal to the width\nof widest child, unless the combined width of the children is wider than\nthe available horizontal space. In this case, the available horizontal space\nis divided by the number of provided [children] to determine the width of\neach widget. The selection area for each of the widgets in the [Map] of\n[children] will then be expanded to fill the calculated space, so each\nwidget will appear to have the same dimensions.\n\nA segmented control may optionally be created with custom colors. The\n[unselectedColor], [selectedColor], [borderColor], and [pressedColor]\narguments can be used to override the segmented control's colors from\n[CupertinoTheme] defaults.\n\nSee also:\n\n * <https://developer.apple.com/design/human-interface-guidelines/ios/controls/segmented-controls/>", "detail": "", "kind": 7, "label": "CupertinoSegmentedControl" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flexible", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Row], [Column], or [Flex] flexes.\n\nUsing a [Flexible] widget gives a child of a [Row], [Column], or [Flex]\nthe flexibility to expand to fill the available space in the main axis\n(e.g., horizontally for a [Row] or vertically for a [Column]), but, unlike\n[Expanded], [Flexible] does not require the child to fill the available\nspace.\n\nA [Flexible] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Flexible] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\nSee also:\n\n * [Expanded], which forces the child to expand to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flexible" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPress].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time.", "detail": "() → void", "kind": 7, "label": "GestureLongPressCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a tap has occurred.\n\nSee also:\n\n * [GestureDetector.onTap], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapUpDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapUpCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapUp], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapUpDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [Viewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "NestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Row", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a horizontal array.\n\nTo cause a child to expand to fill the available horizontal space, wrap the\nchild in an [Expanded] widget.\n\nThe [Row] widget does not scroll (and in general it is considered an error\nto have more children in a [Row] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a vertical variant, see [Column].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example divides the available space into three (horizontally), and\nplaces text centered in the first two cells and the Flutter logo centered in\nthe third:\n\n```dart\nRow(\n children: <Widget>[\n Expanded(\n child: Text('Deliver features faster', textAlign: TextAlign.center),\n ),\n Expanded(\n child: Text('Craft beautiful UIs', textAlign: TextAlign.center),\n ),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\n## Troubleshooting\n\n### Why does my row have a yellow and black warning stripe?\n\nIf the non-flexible contents of the row (those that are not wrapped in\n[Expanded] or [Flexible] widgets) are together wider than the row itself,\nthen the row is said to have overflowed. When a row overflows, the row does\nnot have any remaining space to share between its [Expanded] and [Flexible]\nchildren. The row reports this by drawing a yellow and black striped\nwarning box on the edge that is overflowing. If there is room on the outside\nof the row, the amount of overflow is printed in red lettering.\n\n\n#### Story time\n\nSuppose, for instance, that you had this code:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nThe row first asks its first child, the [FlutterLogo], to lay out, at\nwhatever size the logo would like. The logo is friendly and happily decides\nto be 24 pixels to a side. This leaves lots of room for the next child. The\nrow then asks that next child, the text, to lay out, at whatever size it\nthinks is best.\n\nAt this point, the text, not knowing how wide is too wide, says \"Ok, I will\nbe thiiiiiiiiiiiiiiiiiiiis wide.\", and goes well beyond the space that the\nrow has available, not wrapping. The row responds, \"That's not fair, now I\nhave no more room available for my other children!\", and gets angry and\nsprouts a yellow and black strip.\n\nThe fix is to wrap the second child in an [Expanded] widget, which tells the\nrow that the child should be given the remaining room:\n\n```dart\nRow(\n children: <Widget>[\n const FlutterLogo(),\n const Expanded(\n child: Text('Flutter\\'s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.'),\n ),\n const Icon(Icons.sentiment_very_satisfied),\n ],\n)\n```\n\nNow, the row first asks the logo to lay out, and then asks the _icon_ to lay\nout. The [Icon], like the logo, is happy to take on a reasonable size (also\n24 pixels, not coincidentally, since both [FlutterLogo] and [Icon] honor the\nambient [IconTheme]). This leaves some room left over, and now the row tells\nthe text exactly how wide to be: the exact width of the remaining space. The\ntext, now happy to comply to a reasonable request, wraps the text within\nthat width, and you end up with a paragraph split over several lines.\n\n## Layout algorithm\n\n_This section describes how a [Row] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Row] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded horizontal constraints and the incoming\n vertical constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight vertical constraints that\n match the incoming max height.\n2. Divide the remaining horizontal space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of horizontal space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same vertical constraints\n as in step 1, but instead of using unbounded horizontal constraints, use\n horizontal constraints based on the amount of space allocated in step 2.\n Children with [Flexible.fit] properties that are [FlexFit.tight] are\n given tight constraints (i.e., forced to fill the allocated space), and\n children with [Flexible.fit] properties that are [FlexFit.loose] are\n given loose constraints (i.e., not forced to fill the allocated space).\n4. The height of the [Row] is the maximum height of the children (which will\n always satisfy the incoming vertical constraints).\n5. The width of the [Row] is determined by the [mainAxisSize] property. If\n the [mainAxisSize] property is [MainAxisSize.max], then the width of the\n [Row] is the max width of the incoming constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the width of the [Row] is the sum\n of widths of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any horizontal\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Column], for a vertical equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may by sized smaller (leaving some remaining room unused).\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Row" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A snapping physics that always lands directly on items instead of anywhere\nwithin the scroll extent.\n\nBehaves similarly to a slot machine wheel except the ballistics simulation\nnever overshoots and rolls back within a single item if it's to settle on\nthat item.\n\nMust be used with a scrollable that uses a [FixedExtentScrollController].\n\nDefers back to the parent beyond the scroll extents.", "detail": "", "kind": 7, "label": "FixedExtentScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedOpacity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Opacity] which automatically transitions the child's\nopacity over a given duration whenever the given opacity changes.\n\nAnimating an opacity is relatively expensive because it requires painting\nthe child into an intermediate buffer.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\n\n```dart\nclass LogoFade extends StatefulWidget {\n @override\n createState() => LogoFadeState();\n}\n\nclass LogoFadeState extends State<LogoFade> {\n double opacityLevel = 1.0;\n\n void _changeOpacity() {\n setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);\n }\n\n @override\n Widget build(BuildContext context) {\n return Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: [\n AnimatedOpacity(\n opacity: opacityLevel,\n duration: Duration(seconds: 3),\n child: FlutterLogo(),\n ),\n RaisedButton(\n child: Text('Fade Logo'),\n onPressed: _changeOpacity,\n ),\n ],\n );\n }\n}\n```\n\nSee also:\n\n * [FadeTransition], an explicitly animated version of this widget, where\n an [Animation] is provided by the caller instead of being built in.", "detail": "", "kind": 7, "label": "AnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboardListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls a callback whenever the user presses or releases a key\non a keyboard.\n\nA [RawKeyboardListener] is useful for listening to raw key events and\nhardware buttons that are represented as keys. Typically used by games and\nother apps that use keyboards for purposes other than text entry.\n\nFor text entry, consider using a [EditableText], which integrates with\non-screen keyboards and input method editors (IMEs).\n\nSee also:\n\n * [EditableText], which should be used instead of this widget for text\n entry.", "detail": "", "kind": 7, "label": "RawKeyboardListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place in an [Overlay] that can contain a widget.\n\nOverlay entries are inserted into an [Overlay] using the\n[OverlayState.insert] or [OverlayState.insertAll] functions. To find the\nclosest enclosing overlay for a given [BuildContext], use the [Overlay.of]\nfunction.\n\nAn overlay entry can be in at most one overlay at a time. To remove an entry\nfrom its overlay, call the [remove] function on the overlay entry.\n\nBecause an [Overlay] uses a [Stack] layout, overlay entries can use\n[Positioned] and [AnimatedPositioned] to position themselves within the\noverlay.\n\nFor example, [Draggable] uses an [OverlayEntry] to show the drag avatar that\nfollows the user's finger across the screen after the drag begins. Using the\noverlay to display the drag avatar lets the avatar float over the other\nwidgets in the app. As the user's finger moves, draggable calls\n[markNeedsBuild] on the overlay entry to cause it to rebuild. It its build,\nthe entry includes a [Positioned] with its top and left property set to\nposition the drag avatar near the user's finger. When the drag is over,\n[Draggable] removes the entry from the overlay to remove the drag avatar\nfrom view.\n\nBy default, if there is an entirely [opaque] entry over this one, then this\none will not be included in the widget tree (in particular, stateful widgets\nwithin the overlay entry will not be instantiated). To ensure that your\noverlay entry is still built even if it is not visible, set [maintainState]\nto true. This is more expensive, so should be done with care. In particular,\nif widgets in an overlay entry with [maintainState] set to true repeatedly\ncall [State.setState], the user's battery will be drained unnecessarily.\n\nSee also:\n\n * [Overlay]\n * [OverlayState]\n * [WidgetsApp]\n * [MaterialApp]", "detail": "", "kind": 7, "label": "OverlayEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HoldScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing but can be released to resume\nnormal idle behavior.\n\nThis is used while the user is touching the [Scrollable] but before the\ntouch has become a [Drag].\n\nFor the purposes of [ScrollNotification]s, this activity does not constitute\nscrolling, and does not prevent the user from interacting with the contents\nof the [Scrollable] (unlike when a drag has begun or there is a scroll\nanimation underway).", "detail": "", "kind": 7, "label": "HoldScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueListenableBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget whose content stays synced with a [ValueListenable].\n\nGiven a [ValueListenable<T>] and a [builder] which builds widgets from\nconcrete values of `T`, this class will automatically register itself as a\nlistener of the [ValueListenable] and call the [builder] with updated values\nwhen the value changes.\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nvalue of the [ValueListenable], it's more efficient to build that subtree\nonce instead of rebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\n[ValueListenableBuilder] will pass it back to your [builder] function so\nthat you can incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis sample shows how you could use a [ValueListenableBuilder] instead of\nsetting state on the whole [Scaffold] in the default `flutter create` app.\n\n```dart\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State<MyHomePage> {\n final ValueNotifier<int> _counter = ValueNotifier<int>(0);\n final Widget goodJob = const Text('Good job!');\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title)\n ),\n body: Center(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pushed the button this many times:'),\n ValueListenableBuilder(\n builder: (BuildContext context, int value, Widget child) {\n // This builder will only get called when the _counter\n // is updated.\n return Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: <Widget>[\n Text('$value'),\n child,\n ],\n );\n },\n valueListenable: _counter,\n // The child parameter is most helpful if the child is\n // expensive to build and does not depend on the value from\n // the notifier.\n child: goodJob,\n )\n ],\n ),\n ),\n floatingActionButton: FloatingActionButton(\n child: Icon(Icons.plus_one),\n onPressed: () => _counter.value += 1,\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedBuilder], which also triggers rebuilds from a [Listenable]\n without passing back a specific value from a [ValueListenable].\n * [NotificationListener], which lets you rebuild based on [Notification]\n coming from its descendant widgets rather than a [ValueListenable] that\n you have a direct reference to.\n * [StreamBuilder], where a builder can depend on a [Stream] rather than\n a [ValueListenable] for more advanced use cases.", "detail": "", "kind": 7, "label": "ValueListenableBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route with entrance and exit transitions.", "detail": "", "kind": 7, "label": "TransitionRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePageBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's primary contents.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildPage] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) → Widget", "kind": 7, "label": "RoutePageBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollableWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of a method that provides a [BuildContext] and\n[ScrollController] for building a widget that may overflow the draggable\n[Axis] of the containing [DraggableScrollSheet].\n\nUsers should apply the [scrollController] to a [ScrollView] subclass, such\nas a [SingleChildScrollView], [ListView] or [GridView], to have the whole\nsheet be draggable.", "detail": "(BuildContext context, ScrollController scrollController) → Widget", "kind": 7, "label": "ScrollableWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that builds a widget given an [Orientation].\n\nUsed by [OrientationBuilder.builder].", "detail": "(BuildContext context, Orientation orientation) → Widget", "kind": 7, "label": "OrientationWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[ForcePressGestureRecognizer.onStart] callback is no longer in contact\nwith the screen.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ErrorWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the constructor that is called when an error occurs while\nbuilding a widget.\n\nThe argument provides information regarding the cause of the error.\n\nSee also:\n\n * [ErrorWidget.builder], which can be set to override the default\n [ErrorWidget] builder.\n * [FlutterError.reportError], which is typically called with the same\n [FlutterErrorDetails] object immediately prior to [ErrorWidget.builder]\n being called.", "detail": "(FlutterErrorDetails details) → Widget", "kind": 7, "label": "ErrorWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the localized resource values used by the Cupertino widgets.\n\nSee also:\n\n * [DefaultCupertinoLocalizations], the default, English-only, implementation\n of this interface.", "detail": "", "kind": 7, "label": "CupertinoLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes how [Scrollable] widgets should behave.\n\nUsed by [ScrollConfiguration] to configure the [Scrollable] widgets in a\nsubtree.", "detail": "", "kind": 7, "label": "ScrollBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetAccept", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for causing a [DragTarget] to accept the given data.\n\nUsed by [DragTarget.onAccept].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has a child widget provided to it, instead of building a new\nwidget.\n\nUseful as a base class for other widgets, such as [InheritedWidget] and\n[ParentDataWidget].\n\nSee also:\n\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [ParentDataWidget], for widgets that populate the\n [RenderObject.parentData] slot of their child's [RenderObject] to\n configure the parent widget's layout.\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.", "detail": "", "kind": 7, "label": "ProxyWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleTickerProviderStateMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides a single [Ticker] that is configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create the [AnimationController] in a [State] that only uses a single\n[AnimationController], mix in this class, then pass `vsync: this`\nto the animation controller constructor.\n\nThis mixin only supports vending a single ticker. If you might have multiple\n[AnimationController] objects over the lifetime of the [State], use a full\n[TickerProviderStateMixin] instead.", "detail": "", "kind": 7, "label": "SingleTickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NeverScrollableScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that does not allow the user to scroll.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "NeverScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectionChangedCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the selection change callback used by\n[WidgetInspectorService.selectionChangedCallback].", "detail": "() → void", "kind": 7, "label": "InspectorSelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcher", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that by default does a [FadeTransition] between a new widget and\nthe widget previously set on the [AnimatedSwitcher] as a child.\n\nIf they are swapped fast enough (i.e. before [duration] elapses), more than\none previous child can exist and be transitioning out while the newest one\nis transitioning in.\n\nIf the \"new\" child is the same widget type and key as the \"old\" child, but\nwith different parameters, then [AnimatedSwitcher] will *not* do a\ntransition between them, since as far as the framework is concerned, they\nare the same widget and the existing widget can be updated with the new\nparameters. To force the transition to occur, set a [Key] on each child\nwidget that you wish to be considered unique (typically a [ValueKey] on the\nwidget data that distinguishes this child from the others).\n\nThe same key can be used for a new child as was used for an already-outgoing\nchild; the two will not be considered related. (For example, if a progress\nindicator with key A is first shown, then an image with key B, then another\nprogress indicator with key A again, all in rapid succession, then the old\nprogress indicator and the image will be fading out while a new progress\nindicator is fading in.)\n\n\n```dart\nclass ClickCounter extends StatefulWidget {\n const ClickCounter({Key key}) : super(key: key);\n\n @override\n _ClickCounterState createState() => _ClickCounterState();\n}\n\nclass _ClickCounterState extends State<ClickCounter> {\n int _count = 0;\n\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n home: Material(\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n AnimatedSwitcher(\n duration: const Duration(milliseconds: 500),\n transitionBuilder: (Widget child, Animation<double> animation) {\n return ScaleTransition(child: child, scale: animation);\n },\n child: Text(\n '$_count',\n // This key causes the AnimatedSwitcher to interpret this as a \"new\"\n // child each time the count changes, so that it will begin its animation\n // when the count changes.\n key: ValueKey<int>(_count),\n style: Theme.of(context).textTheme.display1,\n ),\n ),\n RaisedButton(\n child: const Text('Increment'),\n onPressed: () {\n setState(() {\n _count += 1;\n });\n },\n ),\n ],\n ),\n ),\n );\n }\n}\n```\n\nSee also:\n\n * [AnimatedCrossFade], which only fades between two children, but also\n interpolates their sizes, and is reversible.\n * [FadeTransition] which [AnimatedSwitcher] uses to perform the transition.", "detail": "", "kind": 7, "label": "AnimatedSwitcher" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPrototypeExtentList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places its box children in a linear array and constrains them\nto have the same extent as a prototype item along the main axis.\n\n[SliverPrototypeExtentList] arranges its children in a line along\nthe main axis starting at offset zero and without gaps. Each child is\nconstrained to the same extent as the [prototypeItem] along the main axis\nand the [SliverConstraints.crossAxisExtent] along the cross axis.\n\n[SliverPrototypeExtentList] is more efficient than [SliverList] because\n[SliverPrototypeExtentList] does not need to lay out its children to obtain\ntheir extent along the main axis. It's a little more flexible than\n[SliverFixedExtentList] because there's no need to determine the appropriate\nitem extent in pixels.\n\nSee also:\n\n * [SliverFixedExtentList], whose itemExtent is a pixel value.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverPrototypeExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivityDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A backend for a [ScrollActivity].\n\nUsed by subclasses of [ScrollActivity] to manipulate the scroll view that\nthey are acting upon.\n\nSee also:\n\n * [ScrollActivity], which uses this class as its delegate.\n * [ScrollPositionWithSingleContext], the main implementation of this interface.", "detail": "", "kind": 7, "label": "ScrollActivityDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rectangle.\n\nBy default, [ClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].\n\n[ClipRect] is commonly used with these widgets, which commonly paint outside\ntheir bounds:\n\n * [CustomPaint]\n * [CustomSingleChildLayout]\n * [CustomMultiChildLayout]\n * [Align] and [Center] (e.g., if [Align.widthFactor] or\n [Align.heightFactor] is less than 1.0).\n * [OverflowBox]\n * [SizedOverflowBox]\n\n\nFor example, by combining a [ClipRect] with an [Align], one can show just\nthe top half of an [Image]:\n\n```dart\nClipRect(\n child: Align(\n alignment: Alignment.topCenter,\n heightFactor: 0.5,\n child: Image.network(userAvatarUrl),\n ),\n)\n```\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutId", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metadata for identifying children in a [CustomMultiChildLayout].\n\nThe [MultiChildLayoutDelegate.hasChild],\n[MultiChildLayoutDelegate.layoutChild], and\n[MultiChildLayoutDelegate.positionChild] methods use these identifiers.", "detail": "", "kind": 7, "label": "LayoutId" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Placeholder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a box that represents where other widgets will one day\nbe added.\n\nThis widget is useful during development to indicate that the interface is\nnot yet complete.\n\nBy default, the placeholder is sized to fit its container. If the\nplaceholder is in an unbounded space, it will size itself according to the\ngiven [fallbackWidth] and [fallbackHeight].", "detail": "", "kind": 7, "label": "Placeholder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RebuildDirtyWidgetCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugOnRebuildDirtyWidget] implementations.", "detail": "(Element e, bool builtOnce) → void", "kind": 7, "label": "RebuildDirtyWidgetCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConfirmDismissCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to give the application an opportunity to\nconfirm or veto a dismiss gesture.\n\nUsed by [Dismissible.confirmDismiss].", "detail": "(DismissDirection direction) → Future<bool>", "kind": 7, "label": "ConfirmDismissCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a multiple box children that each fill the viewport.\n\n[SliverFillViewport] places its children in a linear array along the main\naxis. Each child is sized to fill the viewport, both in the main and cross\naxis.\n\nSee also:\n\n * [SliverFixedExtentList], which has a configurable\n [SliverFixedExtentList.itemExtent].\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay show two time series. The first shows how much time was required\non this thread to produce each frame. The second shows how much time was\nrequired on the GPU thread to produce each frame. Ideally, both these values\nwould be less than the total frame budget for the hardware on which the app\nis running. For example, if the hardware has a screen that updates at 60 Hz,\neach thread should ideally spend less than 16ms producing each frame. This\nideal condition is indicated by a green vertical line for each thread.\nOtherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "PerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildListDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using an explicit list.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[SliverChildBuilderDelegate] or by subclassing [SliverChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.\n\nThe widgets in the given [children] list are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\nSee [SliverChildBuilderDelegate] for sample code using\n`semanticIndexOffset` and `semanticIndexCallback`.\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.", "detail": "", "kind": 7, "label": "SliverChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling view inside of which can be nested other scrolling views, with\ntheir scroll positions being intrinsically linked.\n\nThe most common use case for this widget is a scrollable view with a\nflexible [SliverAppBar] containing a [TabBar] in the header (build by\n[headerSliverBuilder], and with a [TabBarView] in the [body], such that the\nscrollable view's contents vary based on which tab is visible.\n\n## Motivation\n\nIn a normal [ScrollView], there is one set of slivers (the components of the\nscrolling view). If one of those slivers hosted a [TabBarView] which scrolls\nin the opposite direction (e.g. allowing the user to swipe horizontally\nbetween the pages represented by the tabs, while the list scrolls\nvertically), then any list inside that [TabBarView] would not interact with\nthe outer [ScrollView]. For example, flinging the inner list to scroll to\nthe top would not cause a collapsed [SliverAppBar] in the outer [ScrollView]\nto expand.\n\n[NestedScrollView] solves this problem by providing custom\n[ScrollController]s for the outer [ScrollView] and the inner [ScrollView]s\n(those inside the [TabBarView], hooking them together so that they appear,\nto the user, as one coherent scroll view.\n\n\nThis example shows a [NestedScrollView] whose header is the combination of a\n[TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a\n[SliverOverlapAbsorber]/[SliverOverlapInjector] pair to make the inner lists\nalign correctly, and it uses [SafeArea] to avoid any horizontal disturbances\n(e.g. the \"notch\" on iOS when the phone is horizontal). In addition,\n[PageStorageKey]s are used to remember the scroll position of each tab's\nlist.\n\nIn the example below, `_tabs` is a list of strings, one for each tab, giving\nthe tab labels. In a real application, it would be replaced by the actual\ndata model being represented.\n\n```dart\nDefaultTabController(\n length: _tabs.length, // This is the number of tabs.\n child: NestedScrollView(\n headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {\n // These are the slivers that show up in the \"outer\" scroll view.\n return <Widget>[\n SliverOverlapAbsorber(\n // This widget takes the overlapping behavior of the SliverAppBar,\n // and redirects it to the SliverOverlapInjector below. If it is\n // missing, then it is possible for the nested \"inner\" scroll view\n // below to end up under the SliverAppBar even when the inner\n // scroll view thinks it has not been scrolled.\n // This is not necessary if the \"headerSliverBuilder\" only builds\n // widgets that do not overlap the next sliver.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n child: SliverAppBar(\n title: const Text('Books'), // This is the title in the app bar.\n pinned: true,\n expandedHeight: 150.0,\n // The \"forceElevated\" property causes the SliverAppBar to show\n // a shadow. The \"innerBoxIsScrolled\" parameter is true when the\n // inner scroll view is scrolled beyond its \"zero\" point, i.e.\n // when it appears to be scrolled below the SliverAppBar.\n // Without this, there are cases where the shadow would appear\n // or not appear inappropriately, because the SliverAppBar is\n // not actually aware of the precise position of the inner\n // scroll views.\n forceElevated: innerBoxIsScrolled,\n bottom: TabBar(\n // These are the widgets to put in each tab in the tab bar.\n tabs: _tabs.map((String name) => Tab(text: name)).toList(),\n ),\n ),\n ),\n ];\n },\n body: TabBarView(\n // These are the contents of the tab views, below the tabs.\n children: _tabs.map((String name) {\n return SafeArea(\n top: false,\n bottom: false,\n child: Builder(\n // This Builder is needed to provide a BuildContext that is \"inside\"\n // the NestedScrollView, so that sliverOverlapAbsorberHandleFor() can\n // find the NestedScrollView.\n builder: (BuildContext context) {\n return CustomScrollView(\n // The \"controller\" and \"primary\" members should be left\n // unset, so that the NestedScrollView can control this\n // inner scroll view.\n // If the \"controller\" property is set, then this scroll\n // view will not be associated with the NestedScrollView.\n // The PageStorageKey should be unique to this ScrollView;\n // it allows the list to remember its scroll position when\n // the tab view is not on the screen.\n key: PageStorageKey<String>(name),\n slivers: <Widget>[\n SliverOverlapInjector(\n // This is the flip side of the SliverOverlapAbsorber above.\n handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),\n ),\n SliverPadding(\n padding: const EdgeInsets.all(8.0),\n // In this example, the inner scroll view has\n // fixed-height list items, hence the use of\n // SliverFixedExtentList. However, one could use any\n // sliver widget here, e.g. SliverList or SliverGrid.\n sliver: SliverFixedExtentList(\n // The items in this example are fixed to 48 pixels\n // high. This matches the Material Design spec for\n // ListTile widgets.\n itemExtent: 48.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n // This builder is called for each child.\n // In this example, we just number each list item.\n return ListTile(\n title: Text('Item $index'),\n );\n },\n // The childCount of the SliverChildBuilderDelegate\n // specifies how many children this inner list\n // has. In this example, each tab has a list of\n // exactly 30 items, but this is arbitrary.\n childCount: 30,\n ),\n ),\n ),\n ],\n );\n },\n ),\n );\n }).toList(),\n ),\n ),\n)\n```", "detail": "", "kind": 7, "label": "NestedScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshControlIndicatorBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a builder that can create a different widget to show in the\nrefresh indicator space depending on the current state of the refresh\ncontrol and the space available.\n\nThe `refreshTriggerPullDistance` and `refreshIndicatorExtent` parameters are\nthe same values passed into the [CupertinoSliverRefreshControl].\n\nThe `pulledExtent` parameter is the currently available space either from\noverscrolling or as held by the sliver during refresh.", "detail": "(BuildContext context, RefreshIndicatorMode refreshState, double pulledExtent, double refreshTriggerPullDistance, double refreshIndicatorExtent) → Widget", "kind": 7, "label": "RefreshControlIndicatorBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressMoveUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressMoveUpdate].\n\nCalled when a pointer is moving after being held in contact at the same\nlocation for a long period of time. Reports the new position and its offset\nfrom the original down position.", "detail": "(LongPressMoveUpdateDetails details) → void", "kind": 7, "label": "GestureLongPressMoveUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list that works page by page.\n\nEach child of a page view is forced to be the same size as the viewport.\n\nYou can use a [PageController] to control which page is visible in the view.\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nThe [PageController] can also be used to control the\n[PageController.initialPage], which determines which page is shown when the\n[PageView] is first constructed, and the [PageController.viewportFraction],\nwhich determines the size of the pages as a fraction of the viewport size.\n\n\nSee also:\n\n * [PageController], which controls which page is visible in the view.\n * [SingleChildScrollView], when you need to make a single child scrollable.\n * [ListView], for a scrollable list of boxes.\n * [GridView], for a scrollable grid of boxes.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "PageView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBoxTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DecoratedBox] that animates the different properties\nof its [Decoration].\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [DecoratedBox], which also draws a [Decoration] but is not animated.\n * [AnimatedContainer], a more full-featured container that also animates on\n decoration using an internal animation.", "detail": "", "kind": 7, "label": "DecoratedBoxTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Decoration]s.\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[Decoration.lerp].\n\nFor [ShapeDecoration]s which know how to [ShapeDecoration.lerpTo] or\n[ShapeDecoration.lerpFrom] each other, this will produce a smooth\ninterpolation between decorations.\n\nSee also:\n\n * [Tween] for a discussion on how to use interpolation objects.\n * [ShapeDecoration], [RoundedRectangleBorder], [CircleBorder], and\n [StadiumBorder] for examples of shape borders that can be smoothly\n interpolated.\n * [BoxBorder] for a border that can only be smoothly interpolated between other\n [BoxBorder]s.", "detail": "", "kind": 7, "label": "DecorationTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [RenderObjectWidget] as its configuration.\n\n[RenderObjectElement] objects have an associated [RenderObject] widget in\nthe render tree, which handles concrete operations like laying out,\npainting, and hit testing.\n\nContrast with [ComponentElement].\n\nFor details on the lifecycle of an element, see the discussion at [Element].\n\n## Writing a RenderObjectElement subclass\n\nThere are three common child models used by most [RenderObject]s:\n\n* Leaf render objects, with no children: The [LeafRenderObjectElement] class\n handles this case.\n\n* A single child: The [SingleChildRenderObjectElement] class handles this\n case.\n\n* A linked list of children: The [MultiChildRenderObjectElement] class\n handles this case.\n\nSometimes, however, a render object's child model is more complicated. Maybe\nit has a two-dimensional array of children. Maybe it constructs children on\ndemand. Maybe it features multiple lists. In such situations, the\ncorresponding [Element] for the [Widget] that configures that [RenderObject]\nwill be a new subclass of [RenderObjectElement].\n\nSuch a subclass is responsible for managing children, specifically the\n[Element] children of this object, and the [RenderObject] children of its\ncorresponding [RenderObject].\n\n### Specializing the getters\n\n[RenderObjectElement] objects spend much of their time acting as\nintermediaries between their [widget] and their [renderObject]. To make this\nmore tractable, most [RenderObjectElement] subclasses override these getters\nso that they return the specific type that the element expects, e.g.:\n\n```dart\nclass FooElement extends RenderObjectElement {\n\n @override\n Foo get widget => super.widget;\n\n @override\n RenderFoo get renderObject => super.renderObject;\n\n // ...\n}\n```\n\n### Slots\n\nEach child [Element] corresponds to a [RenderObject] which should be\nattached to this element's render object as a child.\n\nHowever, the immediate children of the element may not be the ones that\neventually produce the actual [RenderObject] that they correspond to. For\nexample a [StatelessElement] (the element of a [StatelessWidget]) simply\ncorresponds to whatever [RenderObject] its child (the element returned by\nits [StatelessWidget.build] method) corresponds to.\n\nEach child is therefore assigned a _slot_ token. This is an identifier whose\nmeaning is private to this [RenderObjectElement] node. When the descendant\nthat finally produces the [RenderObject] is ready to attach it to this\nnode's render object, it passes that slot token back to this node, and that\nallows this node to cheaply identify where to put the child render object\nrelative to the others in the parent render object.\n\n### Updating children\n\nEarly in the lifecycle of an element, the framework calls the [mount]\nmethod. This method should call [updateChild] for each child, passing in\nthe widget for that child, and the slot for that child, thus obtaining a\nlist of child [Element]s.\n\nSubsequently, the framework will call the [update] method. In this method,\nthe [RenderObjectElement] should call [updateChild] for each child, passing\nin the [Element] that was obtained during [mount] or the last time [update]\nwas run (whichever happened most recently), the new [Widget], and the slot.\nThis provides the object with a new list of [Element] objects.\n\nWhere possible, the [update] method should attempt to map the elements from\nthe last pass to the widgets in the new pass. For example, if one of the\nelements from the last pass was configured with a particular [Key], and one\nof the widgets in this new pass has that same key, they should be paired up,\nand the old element should be updated with the widget (and the slot\ncorresponding to the new widget's new position, also). The [updateChildren]\nmethod may be useful in this regard.\n\n[updateChild] should be called for children in their logical order. The\norder can matter; for example, if two of the children use [PageStorage]'s\n`writeState` feature in their build method (and neither has a [Widget.key]),\nthen the state written by the first will be overwritten by the second.\n\n#### Dynamically determining the children during the build phase\n\nThe child widgets need not necessarily come from this element's widget\nverbatim. They could be generated dynamically from a callback, or generated\nin other more creative ways.\n\n#### Dynamically determining the children during layout\n\nIf the widgets are to be generated at layout time, then generating them when\nthe [update] method won't work: layout of this element's render object\nhasn't started yet at that point. Instead, the [update] method can mark the\nrender object as needing layout (see [RenderObject.markNeedsLayout]), and\nthen the render object's [RenderObject.performLayout] method can call back\nto the element to have it generate the widgets and call [updateChild]\naccordingly.\n\nFor a render object to call an element during layout, it must use\n[RenderObject.invokeLayoutCallback]. For an element to call [updateChild]\noutside of its [update] method, it must use [BuildOwner.buildScope].\n\nThe framework provides many more checks in normal operation than it does\nwhen doing a build during layout. For this reason, creating widgets with\nlayout-time build semantics should be done with great care.\n\n#### Handling errors when building\n\nIf an element calls a builder function to obtain widgets for its children,\nit may find that the build throws an exception. Such exceptions should be\ncaught and reported using [FlutterError.reportError]. If a child is needed\nbut a builder has failed in this way, an instance of [ErrorWidget] can be\nused instead.\n\n### Detaching children\n\nIt is possible, when using [GlobalKey]s, for a child to be proactively\nremoved by another element before this element has been updated.\n(Specifically, this happens when the subtree rooted at a widget with a\nparticular [GlobalKey] is being moved from this element to an element\nprocessed earlier in the build phase.) When this happens, this element's\n[forgetChild] method will be called with a reference to the affected child\nelement.\n\nThe [forgetChild] method of a [RenderObjectElement] subclass must remove the\nchild element from its child list, so that when it next [update]s its\nchildren, the removed child is not considered.\n\nFor performance reasons, if there are many elements, it may be quicker to\ntrack which elements were forgotten by storing them in a [Set], rather than\nproactively mutating the local record of the child list and the identities\nof all the slots. For example, see the implementation of\n[MultiChildRenderObjectElement].\n\n### Maintaining the render object tree\n\nOnce a descendant produces a render object, it will call\n[insertChildRenderObject]. If the descendant's slot changes identity, it\nwill call [moveChildRenderObject]. If a descendant goes away, it will call\n[removeChildRenderObject].\n\nThese three methods should update the render tree accordingly, attaching,\nmoving, and detaching the given child render object from this element's own\nrender object respectively.\n\n### Walking the children\n\nIf a [RenderObjectElement] object has any children [Element]s, it must\nexpose them in its implementation of the [visitChildren] method. This method\nis used by many of the framework's internal mechanisms, and so should be\nfast. It is also used by the test framework and [debugDumpApp].", "detail": "", "kind": 7, "label": "RenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which takes a specific\n[Animation<RelativeRect>] to transition the child's position from a start\nposition to an end position over the lifetime of the animation.\n\nOnly works if it's the child of a [Stack].\n\nHere's an illustration of the [PositionedTransition] widget, with it's [rect]\nanimated by a [CurvedAnimation] set to [Curves.elasticInOut]:\n\nSee also:\n\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "PositionedTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlockSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops the semantics of all widget that were painted before it\nin the same semantic container.\n\nThis is useful to hide widgets from accessibility tools that are painted\nbehind a certain widget, e.g. an alert should usually disallow interaction\nwith any widget located \"behind\" the alert (even when they are still\npartially visible). Similarly, an open [Drawer] blocks interactions with\nany widget outside the drawer.\n\nSee also:\n\n * [ExcludeSemantics] which drops all semantics of its descendants.", "detail": "", "kind": 7, "label": "BlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDetector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures.\n\nAttempts to recognize gestures that correspond to its non-null callbacks.\n\nIf this widget has a child, it defers to that child for its sizing behavior.\nIf it does not have a child, it grows to fit the parent instead.\n\nBy default a GestureDetector with an invisible child ignores touches;\nthis behavior can be controlled with [behavior].\n\nGestureDetector also listens for accessibility events and maps\nthem to the callbacks. To ignore accessibility events, set\n[excludeFromSemantics] to true.\n\nSee <http://flutter.dev/gestures/> for additional information.\n\nMaterial design applications typically react to touches with ink splash\neffects. The [InkWell] class implements this effect and can be used in place\nof a [GestureDetector] for handling taps.\n\n\nThis example makes a rectangle react to being tapped by setting the\n`_lights` field:\n\n```dart\nGestureDetector(\n onTap: () {\n setState(() { _lights = true; });\n },\n child: Container(\n color: Colors.yellow,\n child: Text('TURN LIGHTS ON'),\n ),\n)\n```\n\n## Debugging\n\nTo see how large the hit test box of a [GestureDetector] is for debugging\npurposes, set [debugPaintPointersEnabled] to true.", "detail": "", "kind": 7, "label": "GestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[SliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [SliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children.\n\n\nIf the children have a fixed extent in the main axis, consider using\n[SliverFixedExtentList] rather than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis and is therefore more efficient.\n\n\nSee also:\n\n * [SliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalizationsDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A factory for a set of localized resources of type `T`, to be loaded by a\n[Localizations] widget.\n\nTypical applications have one [Localizations] widget which is created by the\n[WidgetsApp] and configured with the app's `localizationsDelegates`\nparameter (a list of delegates). The delegate's [type] is used to identify\nthe object created by an individual delegate's [load] method.", "detail": "", "kind": 7, "label": "LocalizationsDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback function that's invoked when the [CupertinoSliverRefreshControl] is\npulled a `refreshTriggerPullDistance`. Must return a [Future]. Upon\ncompletion of the [Future], the [CupertinoSliverRefreshControl] enters the\n[RefreshIndicatorMode.done] state and will start to go away.", "detail": "() → Future<void>", "kind": 7, "label": "RefreshCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that hook [ParentData] information to children of\n[RenderObjectWidget]s.\n\nThis can be used to provide per-child configuration for\n[RenderObjectWidget]s with more than one child. For example, [Stack] uses\nthe [Positioned] parent data widget to position each child.\n\nA [ParentDataWidget] is specific to a particular kind of [RenderObject], and\nthus also to a particular [RenderObjectWidget] class. That class is `T`, the\n[ParentDataWidget] type argument.\n\n\nThis example shows how you would build a [ParentDataWidget] to configure a\n`FrogJar` widget's children by specifying a [Size] for each one.\n\n```dart\nclass FrogSize extends ParentDataWidget<FrogJar> {\n FrogSize({\n Key key,\n @required this.size,\n @required Widget child,\n }) : assert(child != null),\n assert(size != null),\n super(key: key, child: child);\n\n final Size size;\n\n @override\n void applyParentData(RenderObject renderObject) {\n final FrogJarParentData parentData = renderObject.parentData;\n if (parentData.size != size) {\n parentData.size = size;\n final RenderFrogJar targetParent = renderObject.parent;\n targetParent.markNeedsLayout();\n }\n }\n}\n```\n\nSee also:\n\n * [RenderObject], the superclass for layout algorithms.\n * [RenderObject.parentData], the slot that this class configures.\n * [ParentData], the superclass of the data that will be placed in\n [RenderObject.parentData] slots.\n * [RenderObjectWidget], the class for widgets that wrap [RenderObject]s.\n The `T` type parameter for [ParentDataWidget] is a [RenderObjectWidget].\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.", "detail": "", "kind": 7, "label": "ParentDataWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProviderStateMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides [Ticker] objects that are configured to only tick while the current\ntree is enabled, as defined by [TickerMode].\n\nTo create an [AnimationController] in a class that uses this mixin, pass\n`vsync: this` to the animation controller constructor whenever you\ncreate a new animation controller.\n\nIf you only have a single [Ticker] (for example only a single\n[AnimationController]) for the lifetime of your [State], then using a\n[SingleTickerProviderStateMixin] is more efficient. This is the common case.", "detail": "", "kind": 7, "label": "TickerProviderStateMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetToRenderBoxAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An adapter for placing a specific [RenderBox] in the widget tree.\n\nA given render object can be placed at most once in the widget tree. This\nwidget enforces that restriction by keying itself using a [GlobalObjectKey]\nfor the given render object.", "detail": "", "kind": 7, "label": "WidgetToRenderBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ValueKey] that defines where [PageStorage] values will be saved.\n\n[Scrollable]s ([ScrollPosition]s really) use [PageStorage] to save their\nscroll offset. Each time a scroll completes, the scrollable's page\nstorage is updated.\n\n[PageStorage] is used to save and restore values that can outlive the widget.\nThe values are stored in a per-route [Map] whose keys are defined by the\n[PageStorageKey]s for the widget and its ancestors. To make it possible\nfor a saved value to be found when a widget is recreated, the key's values\nmust not be objects whose identity will change each time the widget is created.\n\nFor example, to ensure that the scroll offsets for the scrollable within\neach `MyScrollableTabView` below are restored when the [TabBarView]\nis recreated, we've specified [PageStorageKey]s whose values are the\ntabs' string labels.\n\n```dart\nTabBarView(\n children: myTabs.map((Tab tab) {\n MyScrollableTabView(\n key: PageStorageKey<String>(tab.text), // like 'Tab 1'\n tab: tab,\n ),\n }),\n)\n```", "detail": "", "kind": 7, "label": "PageStorageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatelessWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatelessElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenConstructor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a [Tween] factory.\n\nThis is the type of one of the arguments of [TweenVisitor], the signature\nused by [AnimatedWidgetBaseState.forEachTween].", "detail": "(T targetValue) → Tween<T>", "kind": 7, "label": "TweenConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigationToolbar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[NavigationToolbar] is a layout helper to position 3 widgets or groups of\nwidgets along a horizontal axis that's sensible for an application's\nnavigation bar such as in Material Design and in iOS.\n\nThe [leading] and [trailing] widgets occupy the edges of the widget with\nreasonable size constraints while the [middle] widget occupies the remaining\nspace in either a center aligned or start aligned fashion.\n\nEither directly use the themed app bars such as the Material [AppBar] or\nthe iOS [CupertinoNavigationBar] or wrap this widget with more theming\nspecifications for your own custom app bar.", "detail": "", "kind": 7, "label": "NavigationToolbar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines which portion of the content is visible in a scroll view.\n\nThe [pixels] value determines the scroll offset that the scroll view uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThe [ScrollPosition] applies [physics] to scrolling, and stores the\n[minScrollExtent] and [maxScrollExtent].\n\nScrolling is controlled by the current [activity], which is set by\n[beginActivity]. [ScrollPosition] itself does not start any activities.\nInstead, concrete subclasses, such as [ScrollPositionWithSingleContext],\ntypically start activities in response to user input or instructions from a\n[ScrollController].\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\n## Subclassing ScrollPosition\n\nOver time, a [Scrollable] might have many different [ScrollPosition]\nobjects. For example, if [Scrollable.physics] changes type, [Scrollable]\ncreates a new [ScrollPosition] with the new physics. To transfer state from\nthe old instance to the new instance, subclasses implement [absorb]. See\n[absorb] for more details.\n\nSubclasses also need to call [didUpdateScrollDirection] whenever\n[userScrollDirection] changes values.\n\nSee also:\n\n * [Scrollable], which uses a [ScrollPosition] to determine which portion of\n its content to display.\n * [ScrollController], which can be used with [ListView], [GridView] and\n other scrollable widgets to control a [ScrollPosition].\n * [ScrollPositionWithSingleContext], which is the most commonly used\n concrete subclass of [ScrollPosition].\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeMatcher", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This class is a work-around for the \"is\" operator not accepting a variable value as its right operand", "detail": "", "kind": 7, "label": "TypeMatcher" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given [Listenable] changes value.\n\n[AnimatedWidget] is most commonly used with [Animation] objects, which are\n[Listenable], but it can be used with any [Listenable], including\n[ChangeNotifier] and [ValueNotifier].\n\n[AnimatedWidget] is most useful for widgets that are otherwise stateless. To\nuse [AnimatedWidget], simply subclass it and implement the build function.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedWidget].\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with TickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return SpinningContainer(controller: _controller);\n }\n}\n\nclass SpinningContainer extends AnimatedWidget {\n const SpinningContainer({Key key, AnimationController controller})\n : super(key: key, listenable: controller);\n\n Animation<double> get _progress => listenable;\n\n @override\n Widget build(BuildContext context) {\n return Transform.rotate(\n angle: _progress.value * 2.0 * math.pi,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n );\n }\n}\n```\n\nFor more complex case involving additional state, consider using\n[AnimatedBuilder].\n\nSee also:\n\n * [AnimatedBuilder], which is useful for more complex use cases.\n * [Animation], which is a [Listenable] object that can be used for\n [listenable].\n * [ChangeNotifier], which is another [Listenable] object that can be used\n for [listenable].", "detail": "", "kind": 7, "label": "AnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformTarget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be targeted by a [CompositedTransformFollower].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\nupdates the [link] object so that any [CompositedTransformFollower] widgets\nthat are subsequently composited in the same frame and were given the same\n[LayerLink] can position themselves at the same screen location.\n\nA single [CompositedTransformTarget] can be followed by multiple\n[CompositedTransformFollower] widgets.\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nany linked [CompositedTransformFollower]s.\n\nSee also:\n\n * [CompositedTransformFollower], the widget that can target this one.\n * [LeaderLayer], the layer that implements this widget's logic.", "detail": "", "kind": 7, "label": "CompositedTransformTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for being notified when a form field changes value.\n\nUsed by [FormField.onSaved].", "detail": "(T newValue) → void", "kind": 7, "label": "FormFieldSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoNavigationBarBackButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A nav bar back button typically used in [CupertinoNavigationBar].\n\nThis is automatically inserted into [CupertinoNavigationBar] and\n[CupertinoSliverNavigationBar]'s `leading` slot when\n`automaticallyImplyLeading` is true.\n\nShows a back chevron and the previous route's title when available from\nthe previous [CupertinoPageRoute.title]. If [previousPageTitle] is specified,\nit will be shown instead.", "detail": "", "kind": 7, "label": "CupertinoNavigationBarBackButton" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.pageRouteBuilder].\n\nCreates a [PageRoute] using the given [RouteSettings] and [WidgetBuilder].", "detail": "(RouteSettings settings, WidgetBuilder builder) → PageRoute<T>", "kind": 7, "label": "PageRouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverToBoxAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box widget.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverToBoxAdapter]\nis a basic sliver that creates a bridge back to one of the usual box-based\nwidgets.\n\nRather than using multiple [SliverToBoxAdapter] widgets to display multiple\nbox widgets in a [CustomScrollView], consider using [SliverList],\n[SliverFixedExtentList], [SliverPrototypeExtentList], or [SliverGrid],\nwhich are more efficient because they instantiate only those children that\nare actually visible through the scroll view's viewport.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.\n * [SliverList], which displays multiple box widgets in a linear array.\n * [SliverFixedExtentList], which displays multiple box widgets with the\n same main-axis extent in a linear array.\n * [SliverPrototypeExtentList], which displays multiple box widgets with the\n same main-axis extent as a prototype item, in a linear array.\n * [SliverGrid], which displays multiple box widgets in arbitrary positions.", "detail": "", "kind": 7, "label": "SliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GenerateAppTitle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.onGenerateTitle].\n\nUsed to generate a value for the app's [Title.title], which the device uses\nto identify the app for the user. The `context` includes the [WidgetsApp]'s\n[Localizations] widget so that this method can be used to produce a\nlocalized title.\n\nThis function must not return null.", "detail": "(BuildContext context) → String", "kind": 7, "label": "GenerateAppTitle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapDownDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureTapDownCallback], such as position.\n\nSee also:\n\n * [GestureDetector.onTapDown], which receives this information.\n * [TapGestureRecognizer], which passes this information to one of its callbacks.", "detail": "", "kind": 7, "label": "TapDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextCapitalization", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how the platform keyboard will select an uppercase or\nlowercase keyboard.\n\nOnly supports text keyboards, other keyboard types will ignore this\nconfiguration. Capitalization is locale-aware.", "detail": "", "kind": 13, "label": "TextCapitalization" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlayChanged", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting changes to the selection component of a\n[TextEditingValue] for the purposes of a [TextSelectionOverlay]. The\n[caretRect] argument gives the location of the caret in the coordinate space\nof the [RenderBox] given by the [TextSelectionOverlay.renderObject].\n\nUsed by [TextSelectionOverlay.onSelectionOverlayChanged].", "detail": "(TextEditingValue value, Rect caretRect) → void", "kind": 7, "label": "TextSelectionOverlayChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of the [LayoutBuilder] builder function.", "detail": "(BuildContext context, BoxConstraints constraints) → Widget", "kind": 7, "label": "LayoutWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImagePhase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The phases a [FadeInImage] goes through.", "detail": "", "kind": 13, "label": "FadeInImagePhase" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SlideTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the position of a widget relative to its normal position.\n\nThe translation is expressed as a [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nBy default, the offsets are applied in the coordinate system of the canvas\n(so positive x offsets move the child towards the right). If a\n[textDirection] is provided, then the offsets are applied in the reading\ndirection, so in right-to-left text, positive x offsets move towards the\nleft, and in left-to-right text, positive x offsets move towards the right.\n\nHere's an illustration of the [SlideTransition] widget, with it's [position]\nanimated by a [CurvedAnimation] set to [Curves.elasticIn]:\n\nSee also:\n\n * [AlignTransition], an animated version of an [Align] that animates its\n [Align.alignment] property.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SlideTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyleTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [TextStyle]s.\n\nThis class specializes the interpolation of [Tween<TextStyle>] to use\n[TextStyle.lerp].\n\nThis will not work well if the styles don't set the same fields.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "TextStyleTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildLoopingListDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies infinite children for [ListWheelScrollView] by\nlooping an explicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildLoopingListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates its own size and clips and aligns its child.\n\n[SizeTransition] acts as a [ClipRect] that animates either its width or its\nheight, depending upon the value of [axis]. The alignment of the child along\nthe [axis] is specified by the [axisAlignment].\n\nLike most widgets, [SizeTransition] will conform to the constraints it is\ngiven, so be sure to put it in a context where it can change size. For\ninstance, if you place it into a [Container] with a fixed size, then the\n[SizeTransition] will not be able to change size, and will appear to do\nnothing.\n\nHere's an illustration of the [SizeTransition] widget, with it's [sizeFactor]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:\n\nSee also:\n\n * [AnimatedCrossFade], for a widget that automatically animates between\n the sizes of two children, fading between them.\n * [ScaleTransition], a widget that scales the size of the child instead of\n clipping it.\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.", "detail": "", "kind": 7, "label": "SizeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IdleScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll activity that does nothing.\n\nWhen a scroll view is not scrolling, it is performing the idle activity.\n\nIf the [Scrollable] changes dimensions, this activity triggers a ballistic\nactivity to restore the view.", "detail": "", "kind": 7, "label": "IdleScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Velocity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A velocity in two dimensions.", "detail": "", "kind": 7, "label": "Velocity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building children of a [DragTarget].\n\nThe `candidateData` argument contains the list of drag data that is hovering\nover this [DragTarget] and that has passed [DragTarget.onWillAccept]. The\n`rejectedData` argument contains the list of drag data that is hovering over\nthis [DragTarget] and that will not be accepted by the [DragTarget].\n\nUsed by [DragTarget.builder].", "detail": "(BuildContext context, List<T> candidateData, List<dynamic> rejectedData) → Widget", "kind": 7, "label": "DragTargetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticIndexCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A callback which produces a semantic index given a widget and the local index.\n\nReturn a null value to prevent a widget from receiving an index.\n\nA semantic index is used to tag child semantic nodes for accessibility\nannouncements in scroll view.\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.\n * [SliverChildBuilderDelegate], for an explanation of how this is used to\n generate indexes.", "detail": "(Widget widget, int localIndex) → int", "kind": 7, "label": "SemanticIndexCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotificationPredicate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A predicate for [ScrollNotification], used to customize widgets that\nlisten to notifications from their children.", "detail": "(ScrollNotification notification) → bool", "kind": 7, "label": "ScrollNotificationPredicate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated widget that automatically transitions its size over a given\nduration whenever the given child's size changes.", "detail": "", "kind": 7, "label": "AnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IgnorePointer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is invisible during hit testing.\n\nWhen [ignoring] is true, this widget (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because it returns\nfalse from [RenderBox.hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [AbsorbPointer], which also prevents its children from receiving pointer\n events but is itself visible to hit testing.", "detail": "", "kind": 7, "label": "IgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteObserver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that notifies [RouteAware]s of changes to the\nstate of their [Route].\n\n[RouteObserver] informs subscribers whenever a route of type `R` is pushed\non top of their own route of type `R` or popped from it. This is for example\nuseful to keep track of page transitions, e.g. a `RouteObserver<PageRoute>`\nwill inform subscribed [RouteAware]s whenever the user navigates away from\nthe current page route to another page route.\n\nTo be informed about route changes of any type, consider instantiating a\n`RouteObserver<Route>`.\n\n## Type arguments\n\nWhen using more aggressive\n[lints](http://dart-lang.github.io/linter/lints/), in particular lints such\nas `always_specify_types`, the Dart analyzer will require that certain types\nbe given with their type arguments. Since the [Route] class and its\nsubclasses have a type argument, this includes the arguments passed to this\nclass. Consider using `dynamic` to specify the entire class of routes rather\nthan only specific subtypes. For example, to watch for all [PageRoute]\nvariants, the `RouteObserver<PageRoute<dynamic>>` type may be used.\n\n\nTo make a [StatefulWidget] aware of its current [Route] state, implement\n[RouteAware] in its [State] and subscribe it to a [RouteObserver]:\n\n```dart\n// Register the RouteObserver as a navigation observer.\nfinal RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();\nvoid main() {\n runApp(MaterialApp(\n home: Container(),\n navigatorObservers: [routeObserver],\n ));\n}\n\nclass RouteAwareWidget extends StatefulWidget {\n State<RouteAwareWidget> createState() => RouteAwareWidgetState();\n}\n\n// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.\nclass RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n routeObserver.subscribe(this, ModalRoute.of(context));\n }\n\n @override\n void dispose() {\n routeObserver.unsubscribe(this);\n super.dispose();\n }\n\n @override\n void didPush() {\n // Route was pushed onto navigator and is now topmost route.\n }\n\n @override\n void didPopNext() {\n // Covering route was popped off the navigator.\n }\n\n @override\n Widget build(BuildContext context) => Container();\n\n}\n```", "detail": "", "kind": 7, "label": "RouteObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Future].\n\nThe [future] must have been obtained earlier, e.g. during [State.initState],\n[State.didUpdateConfig], or [State.didChangeDependencies]. It must not be\ncreated during the [State.build] or [StatelessWidget.build] method call when\nconstructing the [FutureBuilder]. If the [future] is created at the same\ntime as the [FutureBuilder], then every time the [FutureBuilder]'s parent is\nrebuilt, the asynchronous task will be restarted.\n\nA general guideline is to assume that every `build` method could get called\nevery frame, and to treat omitted calls as an optimization.\n\n\n## Timing\n\nWidget rebuilding is scheduled by the completion of the future, using\n[State.setState], but is otherwise decoupled from the timing of the future.\nThe [builder] callback is called at the discretion of the Flutter pipeline, and\nwill thus receive a timing-dependent sub-sequence of the snapshots that\nrepresent the interaction with the future.\n\nA side-effect of this is that providing a new but already-completed future\nto a [FutureBuilder] will result in a single frame in the\n[ConnectionState.waiting] state. This is because there is no way to\nsynchronously determine that a [Future] has already completed.\n\n## Builder contract\n\nFor a future that completes successfully with data, assuming [initialData]\nis null, the [builder] will be called with either both or only the latter of\nthe following snapshots:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withData(ConnectionState.done, 'some data')`\n\nIf that same future instead completed with an error, the [builder] would be\ncalled with either both or only the latter of:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<String>.withError(ConnectionState.done, 'some error')`\n\nThe initial snapshot data can be controlled by specifying [initialData]. You\nwould use this facility to ensure that if the [builder] is invoked before\nthe future completes, the snapshot carries data of your choice rather than\nthe default null value.\n\nThe data and error fields of the snapshot change only as the connection\nstate field transitions from `waiting` to `done`, and they will be retained\nwhen changing the [FutureBuilder] configuration to another future. If the\nold future has already completed successfully with data as above, changing\nconfiguration to a new future results in snapshot pairs of the form:\n\n* `new AsyncSnapshot<String>.withData(ConnectionState.none, 'data of first future')`\n* `new AsyncSnapshot<String>.withData(ConnectionState.waiting, 'data of second future')`\n\nIn general, the latter will be produced only when the new future is\nnon-null, and the former only when the old future is non-null.\n\nA [FutureBuilder] behaves identically to a [StreamBuilder] configured with\n`future?.asStream()`, except that snapshots with `ConnectionState.active`\nmay appear for the latter, depending on how the stream is implemented.\n\n\nThis sample shows a [FutureBuilder] configuring a text label to show the\nstate of an asynchronous calculation returning a string. Assume the\n`_calculation` field is set by pressing a button elsewhere in the UI.\n\n```dart\nFutureBuilder<String>(\n future: _calculation, // a previously-obtained Future<String> or null\n builder: (BuildContext context, AsyncSnapshot<String> snapshot) {\n switch (snapshot.connectionState) {\n case ConnectionState.none:\n return Text('Press button to start.');\n case ConnectionState.active:\n case ConnectionState.waiting:\n return Text('Awaiting result...');\n case ConnectionState.done:\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n return Text('Result: ${snapshot.data}');\n }\n return null; // unreachable\n },\n)\n```", "detail": "", "kind": 7, "label": "FutureBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of an [Align] that animates its [Align.alignment] property.\n\nHere's an illustration of the [DecoratedBoxTransition] widget, with it's\n[decoration] animated by a [CurvedAnimation] set to [Curves.decelerate]:\n\nSee also:\n\n * [PositionedTransition], a widget that animates its child from a start\n position to an end position over the lifetime of the animation.\n * [RelativePositionedTransition], a widget that transitions its child's\n position based on the value of a rectangle relative to a bounding box.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.\n * [SlideTransition], a widget that animates the position of a widget\n relative to its normal position.", "detail": "", "kind": 7, "label": "AlignTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherLayoutBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom layouts for\n[AnimatedSwitcher].\n\nThe builder should return a widget which contains the given children, laid\nout as desired. It must not return null. The builder should be able to\nhandle an empty list of `previousChildren`, or a null `currentChild`.\n\nThe `previousChildren` list is an unmodifiable list, sorted with the oldest\nat the beginning and the newest at the end. It does not include the\n`currentChild`.", "detail": "(Widget currentChild, List<Widget> previousChildren) → Widget", "kind": 7, "label": "AnimatedSwitcherLayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositionedDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PositionedDirectional] which automatically transitions\nthe child's position over a given duration whenever the given position\nchanges.\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositionedDirectional] will trigger\na relayout as well. ([SlideTransition] is also text-direction-aware.)\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositioned], which specifies the widget's position visually (the\n same as this widget, but for animating [Positioned]).", "detail": "", "kind": 7, "label": "AnimatedPositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCell", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls how a child of a [Table] is aligned.\n\nA [TableCell] widget must be a descendant of a [Table], and the path from\nthe [TableCell] widget to its enclosing [Table] must contain only\n[TableRow]s, [StatelessWidget]s, or [StatefulWidget]s (not\nother kinds of widgets, like [RenderObjectWidget]s).", "detail": "", "kind": 7, "label": "TableCell" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteAware", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for objects that are aware of their current [Route].\n\nThis is used with [RouteObserver] to make a widget aware of changes to the\n[Navigator]'s session history.", "detail": "", "kind": 7, "label": "RouteAware" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [LeafRenderObjectWidget] as its configuration.", "detail": "", "kind": 7, "label": "LeafRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorObserver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for observing the behavior of a [Navigator].", "detail": "", "kind": 7, "label": "NavigatorObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPicker", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled picker.\n\nDisplays its children widgets on a wheel for selection and\ncalls back when the currently selected item changes.\n\nCan be used with [showCupertinoModalPopup] to display the picker modally at the\nbottom of the screen.\n\nSee also:\n\n * [ListWheelScrollView], the generic widget backing this picker without\n the iOS design specific chrome.\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/pickers/>", "detail": "", "kind": 7, "label": "CupertinoPicker" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [State.setState] functions.", "detail": "(VoidCallback fn) → void", "kind": 7, "label": "StateSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MergeSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that merges the semantics of its descendants.\n\nCauses all the semantics of the subtree rooted at this node to be\nmerged into one node in the semantics tree. For example, if you\nhave a widget with a Text node next to a checkbox widget, this\ncould be used to merge the label from the Text node with the\n\"checked\" semantic state of the checkbox into a single node that\nhad both the label and the checked state. Otherwise, the label\nwould be presented as a separate feature than the checkbox, and\nthe user would not be able to be sure that they were related.\n\nBe aware that if two nodes in the subtree have conflicting\nsemantics, the result may be nonsensical. For example, a subtree\nwith a checked checkbox and an unchecked checkbox will be\npresented as checked. All the labels will be merged into a single\nstring (with newlines separating each label from the other). If\nmultiple nodes in the merged subtree can handle semantic gestures,\nthe first one in tree order will be the one to receive the\ncallbacks.", "detail": "", "kind": 7, "label": "MergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeChangedLayoutNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that automatically dispatches a [SizeChangedLayoutNotification]\nwhen the layout dimensions of its child change.\n\nThe notification is not sent for the initial layout (since the size doesn't\nchange in that case, it's just established).\n\nTo listen for the notification dispatched by this widget, use a\n[NotificationListener<SizeChangedLayoutNotification>].\n\nThe [Material] class listens for [LayoutChangedNotification]s, including\n[SizeChangedLayoutNotification]s, to repaint [InkResponse] and [InkWell] ink\neffects. When a widget is likely to change size, wrapping it in a\n[SizeChangedLayoutNotifier] will cause the ink effects to correctly repaint\nwhen the child changes size.\n\nSee also:\n\n * [Notification], the base class for notifications that bubble through the\n widget tree.", "detail": "", "kind": 7, "label": "SizeChangedLayoutNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Notification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that can bubble up the widget tree.\n\nYou can determine the type of a notification using the `is` operator to\ncheck the [runtimeType] of the notification.\n\nTo listen for notifications in a subtree, use a [NotificationListener].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].", "detail": "", "kind": 7, "label": "Notification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBindingObserver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for classes that register with the Widgets layer binding.\n\nWhen used as a mixin, provides no-op method implementations.\n\nSee [WidgetsBinding.addObserver] and [WidgetsBinding.removeObserver].\n\nThis class can be extended directly, to get default behaviors for all of the\nhandlers, or can used with the `implements` keyword, in which case all the\nhandlers must be implemented (and the analyzer will list those that have\nbeen omitted).\n\n\nThis [StatefulWidget] implements the parts of the [State] and\n[WidgetsBindingObserver] protocols necessary to react to application\nlifecycle messages. See [didChangeAppLifecycleState].\n\n```dart\nclass AppLifecycleReactor extends StatefulWidget {\n const AppLifecycleReactor({ Key key }) : super(key: key);\n\n @override\n _AppLifecycleReactorState createState() => _AppLifecycleReactorState();\n}\n\nclass _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {\n @override\n void initState() {\n super.initState();\n WidgetsBinding.instance.addObserver(this);\n }\n\n @override\n void dispose() {\n WidgetsBinding.instance.removeObserver(this);\n super.dispose();\n }\n\n AppLifecycleState _notification;\n\n @override\n void didChangeAppLifecycleState(AppLifecycleState state) {\n setState(() { _notification = state; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Text('Last notification: $_notification');\n }\n}\n```\n\nTo respond to other notifications, replace the [didChangeAppLifecycleState]\nmethod above with other methods from this class.", "detail": "", "kind": 7, "label": "WidgetsBindingObserver" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragUpdateCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onUpdate], which uses [GestureDragUpdateCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls how [Scrollable] widgets behave in a subtree.\n\nThe scroll configuration determines the [ScrollPhysics] and viewport\ndecorations used by descendants of [child].", "detail": "", "kind": 7, "label": "ScrollConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BottomNavigationBarItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interactive button within either material's [BottomNavigationBar]\nor the iOS themed [CupertinoTabBar] with an icon and title.\n\nThis class is rarely used in isolation. It is typically embedded in one of\nthe bottom navigation widgets above.\n\nSee also:\n\n * [BottomNavigationBar]\n * <https://material.io/design/components/bottom-navigation.html>\n * [CupertinoTabBar]\n * <https://developer.apple.com/ios/human-interface-guidelines/bars/tab-bars>", "detail": "", "kind": 7, "label": "BottomNavigationBarItem" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that enables inspecting the child widget's structure.\n\nSelect a location on your device or emulator and view what widgets and\nrender object that best matches the location. An outline of the selected\nwidget and terse summary information is shown on device with detailed\ninformation is shown in the observatory or in IntelliJ when using the\nFlutter Plugin.\n\nThe inspector has a select mode and a view mode.\n\nIn the select mode, tapping the device selects the widget that best matches\nthe location of the touch and switches to view mode. Dragging a finger on\nthe device selects the widget under the drag location but does not switch\nmodes. Touching the very edge of the bounding box of a widget triggers\nselecting the widget even if another widget that also overlaps that\nlocation would otherwise have priority.\n\nIn the view mode, the previously selected widget is outlined, however,\ntouching the device has the same effect it would have if the inspector\nwasn't present. This allows interacting with the application and viewing how\nthe selected widget changes position. Clicking on the select icon in the\nbottom left corner of the application switches back to select mode.", "detail": "", "kind": 7, "label": "WidgetInspector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RefreshIndicatorMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of the refresh control.\n\nPassed into the [RefreshControlIndicatorBuilder] builder function so\nusers can show different UI in different modes.", "detail": "", "kind": 13, "label": "RefreshIndicatorMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a rounded rectangle.\n\nBy default, [ClipRRect] uses its own bounds as the base rectangle for the\nclip, but the size and location of the clip can be customized using a custom\n[clipper].\n\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipOval], for an elliptical clip.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Hero", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that marks its child as being a candidate for\n[hero animations](https://flutter.dev/docs/development/ui/animations/hero-animations).\n\nWhen a [PageRoute] is pushed or popped with the [Navigator], the entire\nscreen's content is replaced. An old route disappears and a new route\nappears. If there's a common visual feature on both routes then it can\nbe helpful for orienting the user for the feature to physically move from\none page to the other during the routes' transition. Such an animation\nis called a *hero animation*. The hero widgets \"fly\" in the Navigator's\noverlay during the transition and while they're in-flight they're, by\ndefault, not shown in their original locations in the old and new routes.\n\nTo label a widget as such a feature, wrap it in a [Hero] widget. When\nnavigation happens, the [Hero] widgets on each route are identified\nby the [HeroController]. For each pair of [Hero] widgets that have the\nsame tag, a hero animation is triggered.\n\nIf a [Hero] is already in flight when navigation occurs, its\nflight animation will be redirected to its new destination. The\nwidget shown in-flight during the transition is, by default, the\ndestination route's [Hero]'s child.\n\nFor a Hero animation to trigger, the Hero has to exist on the very first\nframe of the new page's animation.\n\nRoutes must not contain more than one [Hero] for each [tag].\n\n\n## Discussion\n\nHeroes and the [Navigator]'s [Overlay] [Stack] must be axis-aligned for\nall this to work. The top left and bottom right coordinates of each animated\nHero will be converted to global coordinates and then from there converted\nto that [Stack]'s coordinate space, and the entire Hero subtree will, for\nthe duration of the animation, be lifted out of its original place, and\npositioned on that stack. If the [Hero] isn't axis aligned, this is going to\nfail in a rather ugly fashion. Don't rotate your heroes!\n\nTo make the animations look good, it's critical that the widget tree for the\nhero in both locations be essentially identical. The widget of the *target*\nis, by default, used to do the transition: when going from route A to route\nB, route B's hero's widget is placed over route A's hero's widget. If a\n[flightShuttleBuilder] is supplied, its output widget is shown during the\nflight transition instead.\n\nBy default, both route A and route B's heroes are hidden while the\ntransitioning widget is animating in-flight above the 2 routes.\n[placeholderBuilder] can be used to show a custom widget in their place\ninstead once the transition has taken flight.\n\nDuring the transition, the transition widget is animated to route B's hero's\nposition, and then the widget is inserted into route B. When going back from\nB to A, route A's hero's widget is, by default, placed over where route B's\nhero's widget was, and then the animation goes the other way.\n\n### Nested Navigators\n\nIf either or both routes contain nested [Navigator]s, only [Hero]s\ncontained in the top-most routes (as defined by [Route.isCurrent]) *of those\nnested [Navigator]s* are considered for animation. Just like in the\nnon-nested case the top-most routes containing these [Hero]s in the nested\n[Navigator]s have to be [PageRoute]s.\n\n## Parts of a Hero Transition\n\n![Diagrams with parts of the Hero transition.](https://flutter.github.io/assets-for-api-docs/assets/interaction/heroes.png)", "detail": "", "kind": 7, "label": "Hero" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoIcons", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifiers for the supported Cupertino icons.\n\nUse with the [Icon] class to show specific icons.\n\nIcons are identified by their name as listed below.\n\nTo use this class, make sure you add a dependency on `cupertino_icons` in your\nproject's `pubspec.yaml` file. This ensures that the CupertinoIcons font is\nincluded in your application. This font is used to display the icons. For example:\n\n```yaml\nname: my_awesome_application\n\ndependencies:\n cupertino_icons: ^0.1.0\n```\n\nSee also:\n\n * [Icon], used to show these icons.\n * <https://github.com/flutter/cupertino_icons/blob/master/map.png>, a map of the icons in this icons font.", "detail": "", "kind": 7, "label": "CupertinoIcons" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultCupertinoLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "US English strings for the cupertino widgets.", "detail": "", "kind": 7, "label": "DefaultCupertinoLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Scrollable] to build the viewport through which the\nscrollable content is displayed.", "detail": "(BuildContext context, ViewportOffset position) → Widget", "kind": 7, "label": "ViewportBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses an [InheritedWidget] as its configuration.", "detail": "", "kind": 7, "label": "InheritedElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styling specifications for a [CupertinoTheme].\n\nAll constructor parameters can be null, in which case a\n[CupertinoColors.activeBlue] based default iOS theme styling is used.\n\nParameters can also be partially specified, in which case some parameters\nwill cascade down to other dependent parameters to create a cohesive\nvisual effect. For instance, if a [primaryColor] is specified, it would\ncascade down to affect some fonts in [textTheme] if [textTheme] is not\nspecified.\n\nSee also:\n\n * [CupertinoTheme], in which this [CupertinoThemeData] is inserted.\n * [ThemeData], a Material equivalent that also configures Cupertino\n styling via a [CupertinoThemeData] subclass [MaterialBasedCupertinoThemeData].", "detail": "", "kind": 7, "label": "CupertinoThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompositedTransformFollower", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that follows a [CompositedTransformTarget].\n\nWhen this widget is composited during the compositing phase (which comes\nafter the paint phase, as described in [WidgetsBinding.drawFrame]), it\napplies a transformation that causes it to provide its child with a\ncoordinate space that matches that of the linked [CompositedTransformTarget]\nwidget, offset by [offset].\n\nThe [LayerLink] object used as the [link] must be the same object as that\nprovided to the matching [CompositedTransformTarget].\n\nThe [CompositedTransformTarget] must come earlier in the paint order than\nthis [CompositedTransformFollower].\n\nHit testing on descendants of this widget will only work if the target\nposition is within the box that this widget's parent considers to be\nhittable. If the parent covers the screen, this is trivially achievable, so\nthis widget is usually used as the root of an [OverlayEntry] in an app-wide\n[Overlay] (e.g. as created by the [MaterialApp] widget's [Navigator]).\n\nSee also:\n\n * [CompositedTransformTarget], the widget that this widget can target.\n * [FollowerLayer], the layer that implements this widget's logic.\n * [Transform], which applies an arbitrary transform to a child.", "detail": "", "kind": 7, "label": "CompositedTransformFollower" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableText", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A basic text input field.\n\nThis widget interacts with the [TextInput] service to let the user edit the\ntext it contains. It also provides scrolling, selection, and cursor\nmovement. This widget does not provide any focus management (e.g.,\ntap-to-focus).\n\n## Input Actions\n\nA [TextInputAction] can be provided to customize the appearance of the\naction button on the soft keyboard for Android and iOS. The default action\nis [TextInputAction.done].\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\nEditableText receives focus. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\n## Lifecycle\n\nUpon completion of editing, like pressing the \"done\" button on the keyboard,\ntwo actions take place:\n\n 1st: Editing is finalized. The default behavior of this step includes\n an invocation of [onChanged]. That default behavior can be overridden.\n See [onEditingComplete] for details.\n\n 2nd: [onSubmitted] is invoked with the user's input value.\n\n[onSubmitted] can be used to manually move focus to another input widget\nwhen a user finishes with the currently focused input widget.\n\nRather than using this widget directly, consider using [TextField], which\nis a full-featured, material-design text input field with placeholder text,\nlabels, and [Form] integration.\n\n## Gesture Events Handling\n\nThis widget provides rudimentary, platform-agnostic gesture handling for\nuser actions such as tapping, long-pressing and scrolling when\n[rendererIgnoresPointer] is false (false by default). To tightly conform\nto the platform behavior with respect to input gestures in text fields, use\n[TextField] or [CupertinoTextField]. For custom selection behavior, call\nmethods such as [RenderEditable.selectPosition],\n[RenderEditable.selectWord], etc. programmatically.\n\nSee also:\n\n * [TextField], which is a full-featured, material-design text input field\n with placeholder text, labels, and [Form] integration.", "detail": "", "kind": 7, "label": "EditableText" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an editable text field.\n\nWhenever the user modifies a text field with an associated\n[TextEditingController], the text field updates [value] and the controller\nnotifies its listeners. Listeners can then read the [text] and [selection]\nproperties to learn what the user has typed or how the selection has been\nupdated.\n\nSimilarly, if you modify the [text] or [selection] properties, the text\nfield will be notified and will update itself appropriately.\n\nA [TextEditingController] can also be used to provide an initial value for a\ntext field. If you build a text field with a controller that already has\n[text], the text field will use that text as its initial value.\n\nThe [text] or [selection] properties can be set from within a listener\nadded to this controller. If both properties need to be changed then the\ncontroller's [value] should be set instead.\n\nThis example creates a [TextField] with a [TextEditingController] whose\nchange listener forces the entered text to be lower case and keeps the\ncursor at the end of the input.\n\n```dart\nfinal _controller = TextEditingController();\n\nvoid initState() {\n _controller.addListener(() {\n final text = _controller.text.toLowerCase();\n _controller.value = _controller.value.copyWith(\n text: text,\n selection: TextSelection(baseOffset: text.length, extentOffset: text.length),\n composing: TextRange.empty,\n );\n });\n super.initState();\n}\n\nvoid dispose() {\n _controller.dispose();\n super.dispose();\n}\n\nWidget build(BuildContext context) {\n return Scaffold(\n body: Container(\n alignment: Alignment.center,\n padding: const EdgeInsets.all(6),\n child: TextFormField(\n controller: _controller,\n decoration: InputDecoration(border: OutlineInputBorder()),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [TextField], which is a Material Design text field that can be controlled\n with a [TextEditingController].\n * [EditableText], which is a raw region of editable text that can be\n controlled with a [TextEditingController].", "detail": "", "kind": 7, "label": "TextEditingController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapCancelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureTapDownCallback] will not end up causing a tap.\n\nSee also:\n\n * [GestureDetector.onTapCancel], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "() → void", "kind": 7, "label": "GestureTapCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetInspectorService", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Service used by GUI tools to interact with the [WidgetInspector].\n\nCalls to this object are typically made from GUI tools such as the [Flutter\nIntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nusing the [Dart VM Service protocol](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md).\nThis class uses its own object id and manages object lifecycles itself\ninstead of depending on the [object ids](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#getobject)\nspecified by the VM Service Protocol because the VM Service Protocol ids\nexpire unpredictably. Object references are tracked in groups so that tools\nthat clients can use dereference all objects in a group with a single\noperation making it easier to avoid memory leaks.\n\nAll methods in this class are appropriate to invoke from debugging tools\nusing the Observatory service protocol to evaluate Dart expressions of the\nform `WidgetInspectorService.instance.methodName(arg1, arg2, ...)`. If you\nmake changes to any instance method of this class you need to verify that\nthe [Flutter IntelliJ Plugin](https://github.com/flutter/flutter-intellij/blob/master/README.md)\nwidget inspector support still works with the changes.\n\nAll methods returning String values return JSON.", "detail": "", "kind": 7, "label": "WidgetInspectorService" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PositionedDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned without\ncommitting to a specific [TextDirection].\n\nThe ambient [Directionality] is used to determine whether [start] is to the\nleft or to the right.\n\nA [PositionedDirectional] widget must be a descendant of a [Stack], and the\npath from the [PositionedDirectional] widget to its enclosing [Stack] must\ncontain only [StatelessWidget]s or [StatefulWidget]s (not other kinds of\nwidgets, like [RenderObjectWidget]s).\n\nIf a widget is wrapped in a [PositionedDirectional], then it is a\n_positioned_ widget in its [Stack]. If the [top] property is non-null, the\ntop edge of this child/ will be positioned [top] layout units from the top\nof the stack widget. The [start], [bottom], and [end] properties work\nanalogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [start] and [end] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nSee also:\n\n * [Positioned], which specifies the widget's position visually.\n * [Positioned.directional], which also specifies the widget's horizontal\n position using [start] and [end] but has an explicit [TextDirection].", "detail": "", "kind": 7, "label": "PositionedDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsDebugger", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that visualizes the semantics for the child.\n\nThis widget is useful for understand how an app presents itself to\naccessibility technology.", "detail": "", "kind": 7, "label": "SemanticsDebugger" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [SingleChildRenderObjectWidget] as its configuration.\n\nThe child is optional.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [RenderObjectWithChildMixin] mixin. Such widgets are\nexpected to inherit from [SingleChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "SingleChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQueryData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Information about a piece of media (e.g., a window).\n\nFor example, the [MediaQueryData.size] property contains the width and\nheight of the current window.\n\nTo obtain the current [MediaQueryData] for a given [BuildContext], use the\n[MediaQuery.of] function. For example, to obtain the size of the current\nwindow, use `MediaQuery.of(context).size`.\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nMediaQueryData includes two [EdgeInsets] values:\n[padding] and [viewInsets]. These\nvalues reflect the configuration of the device and are used by\nmany top level widgets, like [SafeArea] and the Cupertino and\nMaterial scaffold widgets. The padding value defines areas that\nmight not be completely visible, like the display \"notch\" on the\niPhone X. The viewInsets value defines areas that aren't visible at\nall, typically because they're obscured by the device's keyboard.\n\nThe viewInsets and padding values are independent, they're both\nmeasured from the edges of the MediaQuery widget's bounds. The\nbounds of the top level MediaQuery created by [WidgetsApp] are the\nsame as the window that contains the app.\n\nWidgets whose layouts consume space defined by [viewInsets] or\n[padding] should enclose their children in secondary MediaQuery\nwidgets that reduce those properties by the same amount.\nThe [removePadding] and [removeInsets] methods are useful for this.", "detail": "", "kind": 7, "label": "MediaQueryData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalBarrier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nSee also:\n\n * [ModalRoute], which indirectly uses this widget.\n * [AnimatedModalBarrier], which is similar but takes an animated [color]\n instead of a single color value.", "detail": "", "kind": 7, "label": "ModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultTextStyleTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of a [DefaultTextStyle] that animates the different properties\nof its [TextStyle].\n\nSee also:\n\n * [DefaultTextStyle], which also defines a [TextStyle] for its descendants\n but is not animated.", "detail": "", "kind": 7, "label": "DefaultTextStyleTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderNestedScrollViewViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The [RenderViewport] variant used by [NestedScrollView].\n\nThis viewport takes a [SliverOverlapAbsorberHandle] and notifies it any time\nthe viewport needs to recompute its layout (e.g. when it is scrolled).", "detail": "", "kind": 7, "label": "RenderNestedScrollViewViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeafRenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have no children.", "detail": "", "kind": 7, "label": "LeafRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MediaQuery", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a subtree in which media queries resolve to the given data.\n\nFor example, to learn the size of the current media (e.g., the window\ncontaining your app), you can read the [MediaQueryData.size] property from\nthe [MediaQueryData] returned by [MediaQuery.of]:\n`MediaQuery.of(context).size`.\n\nQuerying the current media using [MediaQuery.of] will cause your widget to\nrebuild automatically whenever the [MediaQueryData] changes (e.g., if the\nuser rotates their device).\n\nIf no [MediaQuery] is in scope then the [MediaQuery.of] method will throw an\nexception, unless the `nullOk` argument is set to true, in which case it\nreturns null.\n\nSee also:\n\n * [WidgetsApp] and [MaterialApp], which introduce a [MediaQuery] and keep\n it up to date with the current screen metrics as they change.\n * [MediaQueryData], the data structure that represents the metrics.", "detail": "", "kind": 7, "label": "MediaQuery" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionGestureDetector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A gesture detector to respond to non-exclusive event chains for a text field.\n\nAn ordinary [GestureDetector] configured to handle events like tap and\ndouble tap will only recognize one or the other. This widget detects both:\nfirst the tap and then, if another tap down occurs within a time limit, the\ndouble tap.\n\nSee also:\n\n * [TextField], a Material text field which uses this gesture detector.\n * [CupertinoTextField], a Cupertino text field which uses this gesture\n detector.", "detail": "", "kind": 7, "label": "TextSelectionGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LabeledGlobalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key with a debugging label.\n\nThe debug label is useful for documentation and for debugging. The label\ndoes not affect the key's identity.", "detail": "", "kind": 7, "label": "LabeledGlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollPositionWithSingleContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scroll position that manages scroll activities for a single\n[ScrollContext].\n\nThis class is a concrete subclass of [ScrollPosition] logic that handles a\nsingle [ScrollContext], such as a [Scrollable]. An instance of this class\nmanages [ScrollActivity] instances, which change what content is visible in\nthe [Scrollable]'s [Viewport].\n\nSee also:\n\n * [ScrollPosition], which defines the underlying model for a position\n within a [Scrollable] but is agnostic as to how that position is\n changed.\n * [ScrollView] and its subclasses such as [ListView], which use\n [ScrollPositionWithSingleContext] to manage their scroll position.\n * [ScrollController], which can manipulate one or more [ScrollPosition]s,\n and which uses [ScrollPositionWithSingleContext] as its default class for\n scroll positions.", "detail": "", "kind": 7, "label": "ScrollPositionWithSingleContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlowingOverscrollIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A visual indication that a scroll view has overscrolled.\n\nA [GlowingOverscrollIndicator] listens for [ScrollNotification]s in order\nto control the overscroll indication. These notifications are typically\ngenerated by a [ScrollView], such as a [ListView] or a [GridView].\n\n[GlowingOverscrollIndicator] generates [OverscrollIndicatorNotification]\nbefore showing an overscroll indication. To prevent the indicator from\nshowing the indication, call [OverscrollIndicatorNotification.disallowGlow]\non the notification.\n\nCreated automatically by [ScrollBehavior.buildViewportChrome] on platforms\n(e.g., Android) that commonly use this type of overscroll indication.\n\nIn a [MaterialApp], the edge glow color is the [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "GlowingOverscrollIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverflowBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nSee also:\n\n * [RenderConstrainedOverflowBox] for details about how [OverflowBox] is\n rendered.\n * [SizedOverflowBox], a widget that is a specific size but passes its\n original constraints through to its child, which may then overflow.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], a box with a specified size.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "OverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragSelectionUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that's dragging to select text has moved again.\n\nThe first argument [startDetails] contains the details of the event that\ninitiated the dragging.\n\nThe second argument [updateDetails] contains the details of the current\npointer movement. It's the same as the one passed to [DragGestureRecognizer.onUpdate].\n\nThis signature is different from [GestureDragUpdateCallback] to make it\neasier for various text fields to use [TextSelectionGestureDetector] without\nhaving to store the start position.", "detail": "(DragStartDetails startDetails, DragUpdateDetails updateDetails) → void", "kind": 7, "label": "DragSelectionUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listenable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that maintains a list of listeners.\n\nThe listeners are typically used to notify clients that the object has been\nupdated.\n\nThere are two variants of this interface:\n\n * [ValueListenable], an interface that augments the [Listenable] interface\n with the concept of a _current value_.\n\n * [Animation], an interface that augments the [ValueListenable] interface\n to add the concept of direction (forward or reverse).\n\nMany classes in the Flutter API use or implement these interfaces. The\nfollowing subclasses are especially relevant:\n\n * [ChangeNotifier], which can be subclassed or mixed in to create objects\n that implement the [Listenable] interface.\n\n * [ValueNotifier], which implements the [ValueListenable] interface with\n a mutable value that triggers the notifications when modified.\n\nThe terms \"notify clients\", \"send notifications\", \"trigger notifications\",\nand \"fire notifications\" are used interchangeably.\n\nSee also:\n\n * [AnimatedBuilder], a widget that uses a builder callback to rebuild\n whenever a given [Listenable] triggers its notifications. This widget is\n commonly used with [Animation] subclasses, wherein its name. It is a\n subclass of [AnimatedWidget], which can be used to create widgets that\n are driven from a [Listenable].\n * [ValueListenableBuilder], a widget that uses a builder callback to\n rebuild whenever a [ValueListenable] object triggers its notifications,\n providing the builder with the value of the object.\n * [InheritedNotifier], an abstract superclass for widgets that use a\n [Listenable]'s notifications to trigger rebuilds in descendant widgets\n that declare a dependency on them, using the [InheritedWidget] mechanism.\n * [new Listenable.merge], which creates a [Listenable] that triggers\n notifications whenever any of a list of other [Listenable]s trigger their\n notifications.", "detail": "", "kind": 7, "label": "Listenable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverWithKeepAliveWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have [KeepAlive] children.", "detail": "", "kind": 7, "label": "SliverWithKeepAliveWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatusTransitionWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rebuilds when the given animation changes status.", "detail": "", "kind": 7, "label": "StatusTransitionWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutChangedNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the layout of one of the descendants of the object receiving\nthis notification has changed in some way, and that therefore any\nassumptions about that layout are no longer valid.\n\nUseful if, for instance, you're trying to align multiple descendants.\n\nTo listen for notifications in a subtree, use a\n[NotificationListener<LayoutChangedNotification>].\n\nTo send a notification, call [dispatch] on the notification you wish to\nsend. The notification will be delivered to any [NotificationListener]\nwidgets with the appropriate type parameters that are ancestors of the given\n[BuildContext].\n\nIn the widgets library, only the [SizeChangedLayoutNotifier] class and\n[Scrollable] classes dispatch this notification (specifically, they dispatch\n[SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).\nTransitions, in particular, do not. Changing one's layout in one's build\nfunction does not cause this notification to be dispatched automatically. If\nan ancestor expects to be notified for any layout change, make sure you\neither only use widgets that never change layout, or that notify their\nancestors when appropriate, or alternatively, dispatch the notifications\nyourself when appropriate.\n\nAlso, since this notification is sent when the layout is changed, it is only\nuseful for paint effects that depend on the layout. If you were to use this\nnotification to change the build, for instance, you would always be one\nframe behind, which would look really ugly and laggy.", "detail": "", "kind": 7, "label": "LayoutChangedNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollView] that creates custom scroll effects using slivers.\n\nA [CustomScrollView] lets you supply [slivers] directly to create various\nscrolling effects, such as lists, grids, and expanding headers. For example,\nto create a scroll view that contains an expanding app bar followed by a\nlist and a grid, use a list of three slivers: [SliverAppBar], [SliverList],\nand [SliverGrid].\n\n[Widget]s in these [slivers] must produce [RenderSliver] objects.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n\nThis sample code shows a scroll view that contains a flexible pinned app\nbar, a grid, and an infinite list.\n\n```dart\nCustomScrollView(\n slivers: <Widget>[\n const SliverAppBar(\n pinned: true,\n expandedHeight: 250.0,\n flexibleSpace: FlexibleSpaceBar(\n title: Text('Demo'),\n ),\n ),\n SliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n ),\n SliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n ),\n ],\n)\n```\n\n## Accessibility\n\nA [CustomScrollView] can allow Talkback/VoiceOver to make announcements\nto the user when the scroll state changes. For example, on Android an\nannouncement might be read as \"showing items 1 to 10 of 23\". To produce\nthis announcement, the scroll view needs three pieces of information:\n\n * The first visible child index.\n * The total number of children.\n * The total number of visible children.\n\nThe last value can be computed exactly by the framework, however the first\ntwo must be provided. Most of the higher-level scrollable widgets provide\nthis information automatically. For example, [ListView] provides each child\nwidget with a semantic index automatically and sets the semantic child\ncount to the length of the list.\n\nTo determine visible indexes, the scroll view needs a way to associate the\ngenerated semantics of each scrollable item with a semantic index. This can\nbe done by wrapping the child widgets in an [IndexedSemantics].\n\nThis semantic index is not necessarily the same as the index of the widget in\nthe scrollable, because some widgets may not contribute semantic\ninformation. Consider a [new ListView.separated()]: every other widget is a\ndivider with no semantic information. In this case, only odd numbered\nwidgets have a semantic index (equal to the index ~/ 2). Furthermore, the\ntotal number of children in this example would be half the number of\nwidgets. (The [new ListView.separated()] constructor handles this\nautomatically; this is only used here as an example.)\n\nThe total number of visible children can be provided by the constructor\nparameter `semanticChildCount`. This should always be the same as the\nnumber of widgets wrapped in [IndexedSemantics].\n\nSee also:\n\n * [SliverList], which is a sliver that displays linear list of children.\n * [SliverFixedExtentList], which is a more efficient sliver that displays\n linear list of children that have the same extent along the scroll axis.\n * [SliverGrid], which is a sliver that displays a 2D array of children.\n * [SliverPadding], which is a sliver that adds blank space around another\n sliver.\n * [SliverAppBar], which is a sliver that displays a header that can expand\n and float as the scroll view scrolls.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].\n * [IndexedSemantics], which allows annotating child lists with an index\n for scroll announcements.", "detail": "", "kind": 7, "label": "CustomScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's size.\n\nSimilar to the [Builder] widget except that the framework calls the [builder]\nfunction at layout time and provides the parent widget's constraints. This\nis useful when the parent constrains the child's size and doesn't depend on\nthe child's intrinsic size. The [LayoutBuilder]'s final size will match its\nchild's size.\n\n\nIf the child should be smaller than the parent, consider wrapping the child\nin an [Align] widget. If the child might want to be bigger, consider\nwrapping it in a [SingleChildScrollView].\n\nSee also:\n\n * [Builder], which calls a `builder` function at build time.\n * [StatefulBuilder], which passes its `builder` function a `setState` callback.\n * [CustomSingleChildLayout], which positions its child during layout.", "detail": "", "kind": 7, "label": "LayoutBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays a [dart:ui.Image] directly.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nThis widget is rarely used directly. Instead, consider using [Image].", "detail": "", "kind": 7, "label": "RawImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by a [ForcePressGestureRecognizer] for when a pointer has\npressed with at least [ForcePressGestureRecognizer.startPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSingleChildLayout", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.\n\nSee also:\n\n * [SingleChildLayoutDelegate], which controls the layout of the child.\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [FractionallySizedBox], which sizes its child based on a fraction of its own\n size and positions the child according to an [Alignment] value.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.", "detail": "", "kind": 7, "label": "CustomSingleChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates that the subtree through which this notification bubbles must be\nkept alive even if it would normally be discarded as an optimization.\n\nFor example, a focused text field might fire this notification to indicate\nthat it should not be disposed even if the user scrolls the field off\nscreen.\n\nEach [KeepAliveNotification] is configured with a [handle] that consists of\na [Listenable] that is triggered when the subtree no longer needs to be kept\nalive.\n\nThe [handle] should be triggered any time the sending widget is removed from\nthe tree (in [State.deactivate]). If the widget is then rebuilt and still\nneeds to be kept alive, it should immediately send a new notification\n(possible with the very same [Listenable]) during build.\n\nThis notification is listened to by the [AutomaticKeepAlive] widget, which\nis added to the tree automatically by [SliverList] (and [ListView]) and\n[SliverGrid] (and [GridView]) widgets.\n\nFailure to trigger the [handle] in the manner described above will likely\ncause the [AutomaticKeepAlive] to lose track of whether the widget should be\nkept alive or not, leading to memory leaks or lost data. For example, if the\nwidget that requested keep-alive is removed from the subtree but doesn't\ntrigger its [Listenable] on the way out, then the subtree will continue to\nbe kept alive until the list itself is disposed. Similarly, if the\n[Listenable] is triggered while the widget needs to be kept alive, but a new\n[KeepAliveNotification] is not immediately sent, then the widget risks being\ngarbage collected while it wants to be kept alive.\n\nIt is an error to use the same [handle] in two [KeepAliveNotification]s\nwithin the same [AutomaticKeepAlive] without triggering that [handle] before\nthe second notification is sent.\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses\n[KeepAliveNotification] internally.", "detail": "", "kind": 7, "label": "KeepAliveNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElementVisitor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback to [BuildContext.visitChildElements].\n\nThe argument is the child being visited.\n\nIt is safe to call `element.visitChildElements` reentrantly within\nthis callback.", "detail": "(Element element) → void", "kind": 7, "label": "ElementVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListenerCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [Notification] listeners.\n\nReturn true to cancel the notification bubbling. Return false to allow the\nnotification to continue to be dispatched to further ancestors.\n\nUsed by [NotificationListener.onNotification].", "detail": "(T notification) → bool", "kind": 7, "label": "NotificationListenerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserScrollNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that the user has changed the direction in which they are\nscrolling.\n\nSee also:\n\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "UserScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Align", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that aligns its child within itself and optionally sizes itself\nbased on the child's size.\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\n## How it works\n\nThe [alignment] property describes a point in the `child`'s coordinate system\nand a different point in the coordinate system of this widget. The [Align]\nwidget positions the `child` such that both points are lined up on top of\neach other.\n\nThe [Align] widget in this example uses one of the defined constants from\n[Alignment], [topRight]. This places the [FlutterLogo] in the top right corner\nof the parent blue [Container].\n\n![A blue square container with the Flutter logo in the top right corner.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_constant.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment.topRight,\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [Alignment] used in the following example defines a single point:\n\n * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height\n of [FlutterLogo]/2 + height of [FlutterLogo]/2) = (36.0, 48.0).\n\nThe [Alignment] class uses a coordinate system with an origin in the center\nof the [Container], as shown with the [Icon] above. [Align] will place the\n[FlutterLogo] at (36.0, 48.0) according to this coordinate system.\n\n![A blue square container with the Flutter logo positioned according to the\nAlignment specified above. A point is marked at the center of the container\nfor the origin of the Alignment coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_alignment.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: Alignment(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nThe [FractionalOffset] used in the following example defines two points:\n\n * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0)\n in the coordinate system of the blue container.\n * (0.2 * width of [Align], 0.6 * height of [Align]) = (24.0, 72.0) in the\n coordinate system of the [Align] widget.\n\nThe [Align] widget positions the [FlutterLogo] such that the two points are on\ntop of each other. In this example, the top left of the [FlutterLogo] will\nbe placed at (24.0, 72.0) - (12.0, 36.0) = (12.0, 36.0) from the top left of\nthe [Align] widget.\n\nThe [FractionalOffset] class uses a coordinate system with an origin in the top-left\ncorner of the [Container] in difference to the center-oriented system used in\nthe example above with [Alignment].\n\n![A blue square container with the Flutter logo positioned according to the\nFractionalOffset specified above. A point is marked at the top left corner\nof the container for the origin of the FractionalOffset coordinate system.](https://flutter.github.io/assets-for-api-docs/assets/widgets/align_fractional_offset.png)\n\n```dart\nCenter(\n child: Container(\n height: 120.0,\n width: 120.0,\n color: Colors.blue[50],\n child: Align(\n alignment: FractionalOffset(0.2, 0.6),\n child: FlutterLogo(\n size: 60,\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Center], which is the same as [Align] but with the [alignment] always\n set to [Alignment.center].\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Align" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget for a given index, e.g., in a\nlist.\n\nUsed by [ListView.builder] and other APIs that use lazily-generated widgets.\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [TransitionBuilder], which is similar but also takes a child.", "detail": "(BuildContext context, int index) → Widget", "kind": 7, "label": "IndexedWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotationTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the rotation of a widget.\n\nHere's an illustration of the [RotationTransition] widget, with it's [turns]\nanimated by a [CurvedAnimation] set to [Curves.elasticOut]:\nSee also:\n\n * [ScaleTransition], a widget that animates the scale of a transformed\n widget.\n * [SizeTransition], a widget that animates its own size and clips and\n aligns its child.", "detail": "", "kind": 7, "label": "RotationTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldValidator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for validating a form field.\n\nReturns an error string to display if the input is invalid, or null\notherwise.\n\nUsed by [FormField.validator].", "detail": "(T value) → String", "kind": 7, "label": "FormFieldValidator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that builds itself based on the latest snapshot of interaction with\na [Stream].\n\n\nWidget rebuilding is scheduled by each interaction, using [State.setState],\nbut is otherwise decoupled from the timing of the stream. The [builder]\nis called at the discretion of the Flutter pipeline, and will thus receive a\ntiming-dependent sub-sequence of the snapshots that represent the\ninteraction with the stream.\n\nAs an example, when interacting with a stream producing the integers\n0 through 9, the [builder] may be called with any ordered sub-sequence\nof the following snapshots that includes the last one (the one with\nConnectionState.done):\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, null)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 0)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 1)`\n* ...\n* `new AsyncSnapshot<int>.withData(ConnectionState.active, 9)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.done, 9)`\n\nThe actual sequence of invocations of the [builder] depends on the relative\ntiming of events produced by the stream and the build rate of the Flutter\npipeline.\n\nChanging the [StreamBuilder] configuration to another stream during event\ngeneration introduces snapshot pairs of the form:\n\n* `new AsyncSnapshot<int>.withData(ConnectionState.none, 5)`\n* `new AsyncSnapshot<int>.withData(ConnectionState.waiting, 5)`\n\nThe latter will be produced only when the new stream is non-null, and the\nformer only when the old stream is non-null.\n\nThe stream may produce errors, resulting in snapshots of the form:\n\n* `new AsyncSnapshot<int>.withError(ConnectionState.active, 'some error')`\n\nThe data and error fields of snapshots produced are only changed when the\nstate is `ConnectionState.active`.\n\nThe initial snapshot data can be controlled by specifying [initialData].\nThis should be used to ensure that the first frame has the expected value,\nas the builder will always be called before the stream listener has a chance\nto be processed.\n\n\nThis sample shows a [StreamBuilder] configuring a text label to show the\nlatest bid received for a lot in an auction. Assume the `_lot` field is\nset by a selector elsewhere in the UI.\n\n```dart\nStreamBuilder<int>(\n stream: _lot?.bids, // a Stream<int> or null\n builder: (BuildContext context, AsyncSnapshot<int> snapshot) {\n if (snapshot.hasError)\n return Text('Error: ${snapshot.error}');\n switch (snapshot.connectionState) {\n case ConnectionState.none: return Text('Select lot');\n case ConnectionState.waiting: return Text('Awaiting bids...');\n case ConnectionState.active: return Text('\\$${snapshot.data}');\n case ConnectionState.done: return Text('\\$${snapshot.data} (closed)');\n }\n return null; // unreachable\n },\n)\n```\n\nSee also:\n\n * [ValueListenableBuilder], which wraps a [ValueListenable] instead of a\n [Stream].\n * [StreamBuilderBase], which supports widget building based on a computation\n that spans all interactions made with the stream.", "detail": "", "kind": 7, "label": "StreamBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ForcePressDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureForcePressStartCallback],\n[GestureForcePressPeakCallback], [GestureForcePressEndCallback] or\n[GestureForcePressUpdateCallback].\n\nSee also:\n\n * [ForcePressGestureRecognizer.onStart], [ForcePressGestureRecognizer.onPeak],\n [ForcePressGestureRecognizer.onEnd], and [ForcePressGestureRecognizer.onUpdate]\n which use [ForcePressDetails].\n * [ForcePressUpdateDetails], the details for [ForcePressUpdateCallback].", "detail": "", "kind": 7, "label": "ForcePressDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that uses a value of a particular type to identify itself.\n\nA [ValueKey<T>] is equal to another [ValueKey<T>] if, and only if, their\nvalues are [operator==].\n\nThis class can be subclassed to create value keys that will not be equal to\nother value keys that happen to use the same value. If the subclass is\nprivate, this results in a value key type that cannot collide with keys from\nother sources, which could be useful, for example, if the keys are being\nused as fallbacks in the same scope as keys supplied from another widget.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "ValueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMask", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a mask generated by a [Shader] to its child.\n\nFor example, [ShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.\n\n\nThis example makes the text look like it is on fire:\n\n```dart\nShaderMask(\n shaderCallback: (Rect bounds) {\n return RadialGradient(\n center: Alignment.topLeft,\n radius: 1.0,\n colors: <Color>[Colors.yellow, Colors.deepOrange.shade900],\n tileMode: TileMode.mirror,\n ).createShader(bounds);\n },\n child: const Text('I’m burning the memories'),\n)\n```\n\nSee also:\n\n * [Opacity], which can apply a uniform alpha effect to its child.\n * [CustomPaint], which lets you draw directly on the canvas.\n * [DecoratedBox], for another approach at decorating child widgets.\n * [BackdropFilter], which applies an image filter to the background.", "detail": "", "kind": 7, "label": "ShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).", "detail": "(TextSelection selection, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageScaffold", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements a single iOS application page's layout.\n\nThe scaffold lays out the navigation bar on top and the content between or\nbehind the navigation bar.\n\nSee also:\n\n * [CupertinoTabScaffold], a similar widget for tabbed applications.\n * [CupertinoPageRoute], a modal page route that typically hosts a\n [CupertinoPageScaffold] with support for iOS-style page transitions.", "detail": "", "kind": 7, "label": "CupertinoPageScaffold" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DatePickerDateOrder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the order of the columns inside [CupertinoDatePicker] in date mode.", "detail": "", "kind": 13, "label": "DatePickerDateOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSlider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style slider.\n\nUsed to select from a range of values.\n\nA slider can be used to select from either a continuous or a discrete set of\nvalues. The default is use a continuous range of values from [min] to [max].\nTo use discrete values, use a non-null value for [divisions], which\nindicates the number of discrete intervals. For example, if [min] is 0.0 and\n[max] is 50.0 and [divisions] is 5, then the slider can take on the values\ndiscrete values 0.0, 10.0, 20.0, 30.0, 40.0, and 50.0.\n\nThe slider itself does not maintain any state. Instead, when the state of\nthe slider changes, the widget calls the [onChanged] callback. Most widgets\nthat use a slider will listen for the [onChanged] callback and rebuild the\nslider with a new [value] to update the visual appearance of the slider.\n\nSee also:\n\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/sliders/>", "detail": "", "kind": 7, "label": "CupertinoSlider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for information provided to [FlutterExceptionHandler] callbacks.\n\nSee [FlutterError.onError].", "detail": "", "kind": 7, "label": "FlutterErrorDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which a single widget can be scrolled.\n\nThis widget is useful when you have a single box that will normally be\nentirely visible, for example a clock face in a time picker, but you need to\nmake sure it can be scrolled if the container gets too small in one axis\n(the scroll direction).\n\nIt is also useful if you need to shrink-wrap in both axes (the main\nscrolling direction as well as the cross axis), as one might see in a dialog\nor pop-up menu. In that case, you might pair the [SingleChildScrollView]\nwith a [ListBody] child.\n\nWhen you have a list of children and do not require cross-axis\nshrink-wrapping behavior, for example a scrolling list that is always the\nwidth of the screen, consider [ListView], which is vastly more efficient\nthat a [SingleChildScrollView] containing a [ListBody] or [Column] with\nmany children.\n\n## Sample code: Using [SingleChildScrollView] with a [Column]\n\nSometimes a layout is designed around the flexible properties of a\n[Column], but there is the concern that in some cases, there might not\nbe enough room to see the entire contents. This could be because some\ndevices have unusually small screens, or because the application can\nbe used in landscape mode where the aspect ratio isn't what was\noriginally envisioned, or because the application is being shown in a\nsmall window in split-screen mode. In any case, as a result, it might\nmake sense to wrap the layout in a [SingleChildScrollView].\n\nSimply doing so, however, usually results in a conflict between the [Column],\nwhich typically tries to grow as big as it can, and the [SingleChildScrollView],\nwhich provides its children with an infinite amount of space.\n\nTo resolve this apparent conflict, there are a couple of techniques, as\ndiscussed below. These techniques should only be used when the content is\nnormally expected to fit on the screen, so that the lazy instantiation of\na sliver-based [ListView] or [CustomScrollView] is not expected to provide\nany performance benefit. If the viewport is expected to usually contain\ncontent beyond the dimensions of the screen, then [SingleChildScrollView]\nwould be very expensive.\n\n### Centering, spacing, or aligning fixed-height content\n\nIf the content has fixed (or intrinsic) dimensions but needs to be spaced out,\ncentered, or otherwise positioned using the [Flex] layout model of a [Column],\nthe following technique can be used to provide the [Column] with a minimum\ndimension while allowing it to shrink-wrap the contents when there isn't enough\nroom to apply these spacing or alignment needs.\n\nA [LayoutBuilder] is used to obtain the size of the viewport (implicitly via\nthe constraints that the [SingleChildScrollView] sees, since viewports\ntypically grow to fit their maximum height constraint). Then, inside the\nscroll view, a [ConstrainedBox] is used to set the minimum height of the\n[Column].\n\nThe [Column] has no [Expanded] children, so rather than take on the infinite\nheight from its [BoxConstraints.maxHeight], (the viewport provides no maximum height\nconstraint), it automatically tries to shrink to fit its children. It cannot\nbe smaller than its [BoxConstraints.minHeight], though, and It therefore\nbecomes the bigger of the minimum height provided by the\n[ConstrainedBox] and the sum of the heights of the children.\n\nIf the children aren't enough to fit that minimum size, the [Column] ends up\nwith some remaining space to allocate as specified by its\n[Column.mainAxisAlignment] argument.\n\nIn this example, the children are spaced out equally, unless there's no more\nroom, in which case they stack vertically and scroll.\n\nWhen using this technique, [Expanded] and [Flexible] are not useful, because\nin both cases the \"available space\" is infinite (since this is in a viewport).\nThe next section describes a technique for providing a maximum height constraint.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: Column(\n mainAxisSize: MainAxisSize.min,\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Container(\n // Another fixed-height child.\n color: const Color(0xff008000), // Green\n height: 120.0,\n ),\n ],\n ),\n ),\n );\n },\n );\n}\n```\n\n### Expanding content to fit the viewport\n\nThe following example builds on the previous one. In addition to providing a\nminimum dimension for the child [Column], an [IntrinsicHeight] widget is used\nto force the column to be exactly as big as its contents. This constraint\ncombines with the [ConstrainedBox] constraints discussed previously to ensure\nthat the column becomes either as big as viewport, or as big as the contents,\nwhichever is biggest.\n\nBoth constraints must be used to get the desired effect. If only the\n[IntrinsicHeight] was specified, then the column would not grow to fit the\nentire viewport when its children were smaller than the whole screen. If only\nthe size of the viewport was used, then the [Column] would overflow if the\nchildren were bigger than the viewport.\n\nThe widget that is to grow to fit the remaining space so provided is wrapped\nin an [Expanded] widget.\n\nThis technique is quite expensive, as it more or less requires that the contents\nof the viewport be laid out twice (once to find their intrinsic dimensions, and\nonce to actually lay them out). The number of widgets within the column should\ntherefore be kept small. Alternatively, subsets of the children that have known\ndimensions can be wrapped in a [SizedBox] that has tight vertical constraints,\nso that the intrinsic sizing algorithm can short-circuit the computation when it\nreaches those parts of the subtree.\n\nIn this example, the column becomes either as big as viewport, or as big as\nthe contents, whichever is biggest.\n\n```dart\nWidget build(BuildContext context) {\n return LayoutBuilder(\n builder: (BuildContext context, BoxConstraints viewportConstraints) {\n return SingleChildScrollView(\n child: ConstrainedBox(\n constraints: BoxConstraints(\n minHeight: viewportConstraints.maxHeight,\n ),\n child: IntrinsicHeight(\n child: Column(\n children: <Widget>[\n Container(\n // A fixed-height child.\n color: const Color(0xff808000), // Yellow\n height: 120.0,\n ),\n Expanded(\n // A flexible child that will grow to fit the viewport but\n // still be at least as big as necessary to fit its contents.\n child: Container(\n color: const Color(0xff800000), // Red\n height: 120.0,\n ),\n ),\n ],\n ),\n ),\n ),\n );\n },\n );\n}\n```\n\nSee also:\n\n * [ListView], which handles multiple children in a scrolling list.\n * [GridView], which handles multiple children in a scrolling grid.\n * [PageView], for a scrollable that works page by page.\n * [Scrollable], which handles arbitrary scrolling effects.", "detail": "", "kind": 7, "label": "SingleChildScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryConstructor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.constructor].", "detail": "() → T", "kind": 7, "label": "GestureRecognizerFactoryConstructor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamBuilderBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that build themselves based on interaction with\na specified [Stream].\n\nA [StreamBuilderBase] is stateful and maintains a summary of the interaction\nso far. The type of the summary and how it is updated with each interaction\nis defined by sub-classes.\n\nExamples of summaries include:\n\n* the running average of a stream of integers;\n* the current direction and speed based on a stream of geolocation data;\n* a graph displaying data points from a stream.\n\nIn general, the summary is the result of a fold computation over the data\nitems and errors received from the stream along with pseudo-events\nrepresenting termination or change of stream. The initial summary is\nspecified by sub-classes by overriding [initial]. The summary updates on\nreceipt of stream data and errors are specified by overriding [afterData] and\n[afterError], respectively. If needed, the summary may be updated on stream\ntermination by overriding [afterDone]. Finally, the summary may be updated\non change of stream by overriding [afterDisconnected] and [afterConnected].\n\n`T` is the type of stream events.\n\n`S` is the type of interaction summary.\n\nSee also:\n\n * [StreamBuilder], which is specialized for the case where only the most\n recent interaction is needed for widget building.", "detail": "", "kind": 7, "label": "StreamBuilderBase" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NavigatorState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a [Navigator] widget.", "detail": "", "kind": 7, "label": "NavigatorState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Visibility", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to show or hide a child.\n\nBy default, the [visible] property controls whether the [child] is included\nin the subtree or not; when it is not [visible], the [replacement] child\n(typically a zero-sized box) is included instead.\n\nA variety of flags can be used to tweak exactly how the child is hidden.\n(Changing the flags dynamically is discouraged, as it can cause the [child]\nsubtree to be rebuilt, with any state in the subtree being discarded.\nTypically, only the [visible] flag is changed dynamically.)\n\nThese widgets provide some of the facets of this one:\n\n * [Opacity], which can stop its child from being painted.\n * [Offstage], which can stop its child from being laid out or painted.\n * [TickerMode], which can stop its child from being animated.\n * [ExcludeSemantics], which can hide the child from accessibility tools.\n * [IgnorePointer], which can disable touch interactions with the child.\n\nUsing this widget is not necessary to hide children. The simplest way to\nhide a child is just to not include it, or, if a child _must_ be given (e.g.\nbecause the parent is a [StatelessWidget]) then to use [SizedBox.shrink]\ninstead of the child that would otherwise be included.\n\nSee also:\n\n * [AnimatedSwitcher], which can fade from one child to the next as the\n subtree changes.\n * [AnimatedCrossFade], which can fade between two specific children.", "detail": "", "kind": 7, "label": "Visibility" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a path.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\n[PhysicalModel] does the same but only supports shapes that can be expressed\nas rectangles with rounded corners.\n\nSee also:\n\n * [ShapeBorderClipper], which converts a [ShapeBorder] to a [CustomerClipper], as\n needed by this widget.", "detail": "", "kind": 7, "label": "PhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildOwner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manager class for the widgets framework.\n\nThis class tracks which widgets need rebuilding, and handles other tasks\nthat apply to widget trees as a whole, such as managing the inactive element\nlist for the tree and triggering the \"reassemble\" command when necessary\nduring hot reload when debugging.\n\nThe main build owner is typically owned by the [WidgetsBinding], and is\ndriven from the operating system along with the rest of the\nbuild/layout/paint pipeline.\n\nAdditional build owners can be built to manage off-screen widget trees.\n\nTo assign a build owner to a tree, use the\n[RootRenderObjectElement.assignOwner] method on the root element of the\nwidget tree.", "detail": "", "kind": 7, "label": "BuildOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] of entries that can be managed independently.\n\nOverlays let independent child widgets \"float\" visual elements on top of\nother widgets by inserting them into the overlay's [Stack]. The overlay lets\neach of these widgets manage their participation in the overlay using\n[OverlayEntry] objects.\n\nAlthough you can create an [Overlay] directly, it's most common to use the\noverlay created by the [Navigator] in a [WidgetsApp] or a [MaterialApp]. The\nnavigator uses its overlay to manage the visual appearance of its routes.\n\nSee also:\n\n * [OverlayEntry].\n * [OverlayState].\n * [WidgetsApp].\n * [MaterialApp].", "detail": "", "kind": 7, "label": "Overlay" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for sliver that have multiple box children.\n\nHelps subclasses build their children lazily using a [SliverChildDelegate].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the color, opacity, and size of icons.\n\nUsed by [IconTheme] to control the color, opacity, and size of icons in a\nwidget subtree.\n\nTo obtain the current icon theme, use [IconTheme.of]. To convert an icon\ntheme to a version with all the fields filled in, use [new\nIconThemeData.fallback].", "detail": "", "kind": 7, "label": "IconThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedAlign", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Align] which automatically transitions the child's\nposition over a given duration whenever the given [alignment] changes.\n\nHere's an illustration of what this can look like, using a [curve] of\n[Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedContainer], which can transition more values at once.\n * [AnimatedPadding], which can animate the padding instead of the\n alignment.\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.", "detail": "", "kind": 7, "label": "AnimatedAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and has begun to move.\n\nThe `details` object provides the position of the touch when it first\ntouched the surface.\n\nSee [DragGestureRecognizer.onStart].", "detail": "(DragStartDetails details) → void", "kind": 7, "label": "GestureDragStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragAnchor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where the [Draggable] should be anchored during a drag.", "detail": "", "kind": 13, "label": "DragAnchor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A general-purpose widget for building animations.\n\nAnimatedBuilder is useful for more complex widgets that wish to include\nan animation as part of a larger build function. To use AnimatedBuilder,\nsimply construct the widget and pass it a builder function.\n\nFor simple cases without additional state, consider using\n[AnimatedWidget].\n\n\n## Performance optimizations\n\nIf your [builder] function contains a subtree that does not depend on the\nanimation, it's more efficient to build that subtree once instead of\nrebuilding it on every animation tick.\n\nIf you pass the pre-built subtree as the [child] parameter, the\nAnimatedBuilder will pass it back to your builder function so that you\ncan incorporate it into your build.\n\nUsing this pre-built child is entirely optional, but can improve\nperformance significantly in some cases and is therefore a good practice.\n\n\nThis code defines a widget called `Spinner` that spins a green square\ncontinually. It is built with an [AnimatedBuilder] and makes use of the\n[child] feature to avoid having to rebuild the [Container] each time.\n\n```dart\nclass Spinner extends StatefulWidget {\n @override\n _SpinnerState createState() => _SpinnerState();\n}\n\nclass _SpinnerState extends State<Spinner> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n duration: const Duration(seconds: 10),\n vsync: this,\n )..repeat();\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return AnimatedBuilder(\n animation: _controller,\n child: Container(width: 200.0, height: 200.0, color: Colors.green),\n builder: (BuildContext context, Widget child) {\n return Transform.rotate(\n angle: _controller.value * 2.0 * math.pi,\n child: child,\n );\n },\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "AnimatedBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnconstrainedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes no constraints on its child, allowing it to render\nat its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This container will then attempt\nto adopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the container, a warning will be\nprinted on the console, and black and yellow striped areas will appear where\nthe overflow occurs.\n\nSee also:\n\n * [ConstrainedBox], for a box which imposes constraints on its child.\n * [Align], which loosens the constraints given to the child rather than\n removing them entirely.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow\n the parent.", "detail": "", "kind": 7, "label": "UnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single list of children. (This superclass only provides the\nstorage for that child list, it doesn't actually provide the updating\nlogic.)", "detail": "", "kind": 7, "label": "MultiChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a callback that verifies that it's OK to call [Navigator.pop].\n\nUsed by [Form.onWillPop], [ModalRoute.addScopedWillPopCallback],\n[ModalRoute.removeScopedWillPopCallback], and [WillPopScope].", "detail": "() → Future<bool>", "kind": 7, "label": "WillPopCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedOverflowBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is a specific size but passes its original constraints\nthrough to its child, which may then overflow.\n\nSee also:\n\n * [OverflowBox], A widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoColors", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A palette of [Color] constants that describe colors commonly used when\nmatching the iOS platform aesthetics.", "detail": "", "kind": 7, "label": "CupertinoColors" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of a [FormField]. Passed to the [FormFieldBuilder] method\nfor use in constructing the form field's widget.", "detail": "", "kind": 7, "label": "FormFieldState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a filter to the existing painted content and then\npaints [child].\n\nThe filter will be applied to all the area within its parent or ancestor\nwidget's clip. If there's no clip, the filter will be applied to the full\nscreen.\n\n\nIf the [BackdropFilter] needs to be applied to an area that exactly matches\nits child, wraps the [BackdropFilter] with a clip widget that clips exactly\nto that child.\n\n```dart\nStack(\n fit: StackFit.expand,\n children: <Widget>[\n Text('0' * 10000),\n Center(\n child: ClipRect( // <-- clips to the 200x200 [Container] below\n child: BackdropFilter(\n filter: ui.ImageFilter.blur(\n sigmaX: 5.0,\n sigmaY: 5.0,\n ),\n child: Container(\n alignment: Alignment.center,\n width: 200.0,\n height: 200.0,\n child: Text('Hello World'),\n ),\n ),\n ),\n ),\n ],\n)\n```\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.\n\nSee also:\n\n * [DecoratedBox], which draws a background under (or over) a widget.\n * [Opacity], which changes the opacity of the widget itself.", "detail": "", "kind": 7, "label": "BackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Notification] related to scrolling.\n\n[Scrollable] widgets notify their ancestors about scrolling-related changes.\nThe notifications have the following lifecycle:\n\n * A [ScrollStartNotification], which indicates that the widget has started\n scrolling.\n * Zero or more [ScrollUpdateNotification]s, which indicate that the widget\n has changed its scroll position, mixed with zero or more\n [OverscrollNotification]s, which indicate that the widget has not changed\n its scroll position because the change would have caused its scroll\n position to go outside its scroll bounds.\n * Interspersed with the [ScrollUpdateNotification]s and\n [OverscrollNotification]s are zero or more [UserScrollNotification]s,\n which indicate that the user has changed the direction in which they are\n scrolling.\n * A [ScrollEndNotification], which indicates that the widget has stopped\n scrolling.\n * A [UserScrollNotification], with a [UserScrollNotification.direction] of\n [ScrollDirection.idle].\n\nNotifications bubble up through the tree, which means a given\n[NotificationListener] will receive notifications for all descendant\n[Scrollable] widgets. To focus on notifications from the nearest\n[Scrollable] descendant, check that the [depth] property of the notification\nis zero.\n\nWhen a scroll notification is received by a [NotificationListener], the\nlistener will have already completed build and layout, and it is therefore\ntoo late for that widget to call [State.setState]. Any attempt to adjust the\nbuild or layout based on a scroll notification would result in a layout that\nlagged one frame behind, which is a poor user experience. Scroll\nnotifications are therefore primarily useful for paint effects (since paint\nhappens after layout). The [GlowingOverscrollIndicator] and [Scrollbar]\nwidgets are examples of paint effects that use scroll notifications.\n\nTo drive layout based on the scroll position, consider listening to the\n[ScrollPosition] directly (or indirectly via a [ScrollController]).", "detail": "", "kind": 7, "label": "ScrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an Android view in the Widget hierarchy.\n\nRequires Android API level 20 or greater.\n\nEmbedding Android views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\nThe embedded Android view is painted just like any other Flutter widget and transformations\napply to it as well.\n\nThe widget fills all available space, the parent of this object must provide bounded layout\nconstraints.\n\nThe widget participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified in the `gestureRecognizers` constructor parameter. If\nthe set of gesture recognizers is empty, a gesture will be dispatched to the platform\nview iff it was not claimed by any other gesture recognizer.\n\nThe Android view object is created using a [PlatformViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewFactory.html).\nPlugins can register platform view factories with [PlatformViewRegistry#registerViewFactory](/javadoc/io/flutter/plugin/platform/PlatformViewRegistry.html#registerViewFactory-java.lang.String-io.flutter.plugin.platform.PlatformViewFactory-).\n\nRegistration is typically done in the plugin's registerWith method, e.g:\n\n```java\n public static void registerWith(Registrar registrar) {\n registrar.platformViewRegistry().registerViewFactory(\"webview\", WebViewFactory(registrar.messenger()));\n }\n```\n\nThe platform view's lifetime is the same as the lifetime of the [State] object for this widget.\nWhen the [State] is disposed the platform view (and auxiliary resources) are lazily\nreleased (some resources are immediately released and some by platform garbage collector).\nA stateful widget's state is disposed when the widget is removed from the tree or when it is\nmoved within the tree. If the stateful widget has a key and it's only moved relative to its siblings,\nor it has a [GlobalKey] and it's moved within the tree, it will not be disposed.", "detail": "", "kind": 7, "label": "AndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGrid", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[SliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nThe main axis direction of a grid is the direction in which it scrolls; the\ncross axis direction is the orthogonal direction.\n\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows twenty boxes in a pretty teal grid:\n\n```dart\nSliverGrid(\n gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(\n maxCrossAxisExtent: 200.0,\n mainAxisSpacing: 10.0,\n crossAxisSpacing: 10.0,\n childAspectRatio: 4.0,\n ),\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.teal[100 * (index % 9)],\n child: Text('grid item $index'),\n );\n },\n childCount: 20,\n ),\n)\n```\n\n\nSee also:\n\n * [SliverList], which places its children in a linear array.\n * [SliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.", "detail": "", "kind": 7, "label": "SliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeInImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image that shows a [placeholder] image while the target [image] is\nloading, then fades in the new image when it loads.\n\nUse this class to display long-loading images, such as [new NetworkImage],\nso that the image appears on screen with a graceful animation rather than\nabruptly pops onto the screen.\n\n\nIf the [image] emits an [ImageInfo] synchronously, such as when the image\nhas been loaded and cached, the [image] is displayed immediately and the\n[placeholder] is never displayed.\n\n[fadeOutDuration] and [fadeOutCurve] control the fade-out animation of the\nplaceholder.\n\n[fadeInDuration] and [fadeInCurve] control the fade-in animation of the\ntarget [image].\n\nPrefer a [placeholder] that's already cached so that it is displayed in one\nframe. This prevents it from popping onto the screen.\n\nWhen [image] changes it is resolved to a new [ImageStream]. If the new\n[ImageStream.key] is different this widget subscribes to the new stream and\nreplaces the displayed image with images emitted by the new stream.\n\nWhen [placeholder] changes and the [image] has not yet emitted an\n[ImageInfo], then [placeholder] is resolved to a new [ImageStream]. If the\nnew [ImageStream.key] is different this widget subscribes to the new stream\nand replaces the displayed image to images emitted by the new stream.\n\nWhen either [placeholder] or [image] changes, this widget continues showing\nthe previously loaded image (if any) until the new image provider provides a\ndifferent image. This is known as \"gapless playback\" (see also\n[Image.gaplessPlayback]).\n\n\n```dart\nFadeInImage(\n // here `bytes` is a Uint8List containing the bytes for the in-memory image\n placeholder: MemoryImage(bytes),\n image: NetworkImage('https://backend.example.com/image.png'),\n)\n```", "detail": "", "kind": 7, "label": "FadeInImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Navigator] observer that manages [Hero] transitions.\n\nAn instance of [HeroController] should be used in [Navigator.observers].\nThis is done automatically by [MaterialApp].", "detail": "", "kind": 7, "label": "HeroController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [PageView].\n\nThe metrics are available on [ScrollNotification]s generated from\n[PageView]s.", "detail": "", "kind": 7, "label": "PageMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedModelElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [InheritedModel] as its configuration.", "detail": "", "kind": 7, "label": "InheritedModelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PreferredSizeWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for widgets that can return the size this widget would prefer\nif it were otherwise unconstrained.\n\nThere are a few cases, notably [AppBar] and [TabBar], where it would be\nundesirable for the widget to constrain its own size but where the widget\nneeds to expose a preferred or \"default\" size. For example a primary\n[Scaffold] sets its app bar height to the app bar's preferred height\nplus the height of the system status bar.\n\nUse [PreferredSize] to give a preferred size to an arbitrary widget.", "detail": "", "kind": 7, "label": "PreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFixedExtentList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[SliverFixedExtentList] places its children in a linear array along the main\naxis starting at offset zero and without gaps. Each child is forced to have\nthe [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[SliverFixedExtentList] is more efficient than [SliverList] because\n[SliverFixedExtentList] does not need to perform layout on its children to\nobtain their extent in the main axis.\n\n\nThis example, which would be inserted into a [CustomScrollView.slivers]\nlist, shows an infinite number of items in varying shades of blue:\n\n```dart\nSliverFixedExtentList(\n itemExtent: 50.0,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Container(\n alignment: Alignment.center,\n color: Colors.lightBlue[100 * (index % 9)],\n child: Text('list item $index'),\n );\n },\n ),\n)\n```\n\n\nSee also:\n\n * [SliverPrototypeExtentList], which is similar to [SliverFixedExtentList]\n except that it uses a prototype list item instead of a pixel value to define\n the main axis extent of each item.\n * [SliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [SliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "SliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Direction of the hero's flight based on the navigation operation.", "detail": "", "kind": 13, "label": "HeroFlightDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BuildContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showSnackBar]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself had been used, no [Scaffold] would have\nbeen found, and the [Scaffold.of] function would have returned null.\n\n```dart\n @override\n Widget build(BuildContext context) {\n // here, Scaffold.of(context) returns null\n return Scaffold(\n appBar: AppBar(title: Text('Demo')),\n body: Builder(\n builder: (BuildContext context) {\n return FlatButton(\n child: Text('BUTTON'),\n onPressed: () {\n // here, Scaffold.of(context) returns the locally created Scaffold\n Scaffold.of(context).showSnackBar(SnackBar(\n content: Text('Hello.')\n ));\n }\n );\n }\n )\n );\n }\n```\n\nThe [BuildContext] for a particular widget can change location over time as\nthe widget is moved around the tree. Because of this, values returned from\nthe methods on this class should not be cached beyond the execution of a\nsingle synchronous function.\n\n[BuildContext] objects are actually [Element] objects. The [BuildContext]\ninterface is used to discourage direct manipulation of [Element] objects.", "detail": "", "kind": 7, "label": "BuildContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have indicated a\nnew focal point and/or scale.", "detail": "(ScaleUpdateDetails details) → void", "kind": 7, "label": "GestureScaleUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTarget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that receives data when a [Draggable] widget is dropped.\n\nWhen a draggable is dragged on top of a drag target, the drag target is\nasked whether it will accept the data the draggable is carrying. If the user\ndoes drop the draggable on top of the drag target (and the drag target has\nindicated that it will accept the draggable's data), then the drag target is\nasked to accept the draggable's data.\n\nSee also:\n\n * [Draggable]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "DragTarget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Widget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the configuration for an [Element].\n\nWidgets are the central class hierarchy in the Flutter framework. A widget\nis an immutable description of part of a user interface. Widgets can be\ninflated into elements, which manage the underlying render tree.\n\nWidgets themselves have no mutable state (all their fields must be final).\nIf you wish to associate mutable state with a widget, consider using a\n[StatefulWidget], which creates a [State] object (via\n[StatefulWidget.createState]) whenever it is inflated into an element and\nincorporated into the tree.\n\nA given widget can be included in the tree zero or more times. In particular\na given widget can be placed in the tree multiple times. Each time a widget\nis placed in the tree, it is inflated into an [Element], which means a\nwidget that is incorporated into the tree multiple times will be inflated\nmultiple times.\n\nThe [key] property controls how one widget replaces another widget in the\ntree. If the [runtimeType] and [key] properties of the two widgets are\n[operator==], respectively, then the new widget replaces the old widget by\nupdating the underlying element (i.e., by calling [Element.update] with the\nnew widget). Otherwise, the old element is removed from the tree, the new\nwidget is inflated into an element, and the new element is inserted into the\ntree.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.", "detail": "", "kind": 7, "label": "Widget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BannerLocation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to show a [Banner].\n\nThe start and end locations are relative to the ambient [Directionality]\n(which can be overridden by [Banner.layoutDirection]).", "detail": "", "kind": 13, "label": "BannerLocation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPhysicalModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [PhysicalModel].\n\nThe [borderRadius] and [elevation] are animated.\n\nThe [color] is animated if the [animateColor] property is set; otherwise,\nthe color changes immediately at the start of the animation for the other\ntwo properties. This allows the color to be animated independently (e.g.\nbecause it is being driven by an [AnimatedTheme]).\n\nThe [shape] is not animated.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].", "detail": "", "kind": 7, "label": "AnimatedPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoScrollbar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS style scrollbar.\n\nA scrollbar indicates which portion of a [Scrollable] widget is actually\nvisible.\n\nTo add a scrollbar to a [ScrollView], simply wrap the scroll view widget in\na [CupertinoScrollbar] widget.\n\nSee also:\n\n * [ListView], which display a linear, scrollable list of children.\n * [GridView], which display a 2 dimensional, scrollable array of children.\n * [Scrollbar], a Material Design scrollbar that dynamically adapts to the\n platform showing either an Android style or iOS style scrollbar.", "detail": "", "kind": 7, "label": "CupertinoScrollbar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapInjector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [SliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [Viewport], so that it will always be laid out before the\n[SliverOverlapInjector] during a particular frame.\n\nSee also:\n\n * [NestedScrollView], which uses a [SliverOverlapAbsorber] to align its\n children, and which shows sample usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeroFlightShuttleBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A function that lets [Hero]s self supply a [Widget] that is shown during the\nhero's flight from one route to another instead of default (which is to\nshow the destination route's instance of the Hero).", "detail": "(BuildContext flightContext, Animation<double> animation, HeroFlightDirection flightDirection, BuildContext fromHeroContext, BuildContext toHeroContext) → Widget", "kind": 7, "label": "HeroFlightShuttleBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionOverlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that manages a pair of text selection handles.\n\nThe selection handles are displayed in the [Overlay] that most closely\nencloses the given [BuildContext].", "detail": "", "kind": 7, "label": "TextSelectionOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoNavigationBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled navigation bar.\n\nThe navigation bar is a toolbar that minimally consists of a widget, normally\na page title, in the [middle] of the toolbar.\n\nIt also supports a [leading] and [trailing] widget before and after the\n[middle] widget while keeping the [middle] widget centered.\n\nThe [leading] widget will automatically be a back chevron icon button (or a\nclose button in case of a fullscreen dialog) to pop the current route if none\nis provided and [automaticallyImplyLeading] is true (true by default).\n\nThe [middle] widget will automatically be a title text from the current\n[CupertinoPageRoute] if none is provided and [automaticallyImplyMiddle] is\ntrue (true by default).\n\nIt should be placed at top of the screen and automatically accounts for\nthe OS's status bar.\n\nIf the given [backgroundColor]'s opacity is not 1.0 (which is the case by\ndefault), it will produce a blurring effect to the content behind it.\n\nWhen [transitionBetweenRoutes] is true, this navigation bar will transition\non top of the routes instead of inside them if the route being transitioned\nto also has a [CupertinoNavigationBar] or a [CupertinoSliverNavigationBar]\nwith [transitionBetweenRoutes] set to true. If [transitionBetweenRoutes] is\ntrue, none of the [Widget] parameters can contain a key in its subtree since\nthat widget will exist in multiple places in the tree simultaneously.\n\nBy default, only one [CupertinoNavigationBar] or [CupertinoSliverNavigationBar]\nshould be present in each [PageRoute] to support the default transitions.\nUse [transitionBetweenRoutes] or [heroTag] to customize the transition\nbehavior for multiple navigation bars per route.\n\nSee also:\n\n * [CupertinoPageScaffold], a page layout helper typically hosting the\n [CupertinoNavigationBar].\n * [CupertinoSliverNavigationBar] for a navigation bar to be placed in a\n scrolling list and that supports iOS-11-style large titles.", "detail": "", "kind": 7, "label": "CupertinoNavigationBar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Navigator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that manages a set of child widgets with a stack discipline.\n\nMany apps have a navigator near the top of their widget hierarchy in order\nto display their logical history using an [Overlay] with the most recently\nvisited pages visually on top of the older pages. Using this pattern lets\nthe navigator visually transition from one page to another by moving the widgets\naround in the overlay. Similarly, the navigator can be used to show a dialog\nby positioning the dialog widget above the current page.\n\n## Using the Navigator\n\nMobile apps typically reveal their contents via full-screen elements\ncalled \"screens\" or \"pages\". In Flutter these elements are called\nroutes and they're managed by a [Navigator] widget. The navigator\nmanages a stack of [Route] objects and provides methods for managing\nthe stack, like [Navigator.push] and [Navigator.pop].\n\n### Displaying a full-screen route\n\nAlthough you can create a navigator directly, it's most common to use\nthe navigator created by a [WidgetsApp] or a [MaterialApp] widget. You\ncan refer to that navigator with [Navigator.of].\n\nA [MaterialApp] is the simplest way to set things up. The [MaterialApp]'s\nhome becomes the route at the bottom of the [Navigator]'s stack. It is what\nyou see when the app is launched.\n\n```dart\nvoid main() {\n runApp(MaterialApp(home: MyAppHome()));\n}\n```\n\nTo push a new route on the stack you can create an instance of\n[MaterialPageRoute] with a builder function that creates whatever you\nwant to appear on the screen. For example:\n\n```dart\nNavigator.push(context, MaterialPageRoute<void>(\n builder: (BuildContext context) {\n return Scaffold(\n appBar: AppBar(title: Text('My Page')),\n body: Center(\n child: FlatButton(\n child: Text('POP'),\n onPressed: () {\n Navigator.pop(context);\n },\n ),\n ),\n );\n },\n));\n```\n\nThe route defines its widget with a builder function instead of a\nchild widget because it will be built and rebuilt in different\ncontexts depending on when it's pushed and popped.\n\nAs you can see, the new route can be popped, revealing the app's home\npage, with the Navigator's pop method:\n\n```dart\nNavigator.pop(context);\n```\n\nIt usually isn't necessary to provide a widget that pops the Navigator\nin a route with a [Scaffold] because the Scaffold automatically adds a\n'back' button to its AppBar. Pressing the back button causes\n[Navigator.pop] to be called. On Android, pressing the system back\nbutton does the same thing.\n\n### Using named navigator routes\n\nMobile apps often manage a large number of routes and it's often\neasiest to refer to them by name. Route names, by convention,\nuse a path-like structure (for example, '/a/b/c').\nThe app's home page route is named '/' by default.\n\nThe [MaterialApp] can be created\nwith a [Map<String, WidgetBuilder>] which maps from a route's name to\na builder function that will create it. The [MaterialApp] uses this\nmap to create a value for its navigator's [onGenerateRoute] callback.\n\n```dart\nvoid main() {\n runApp(MaterialApp(\n home: MyAppHome(), // becomes the route named '/'\n routes: <String, WidgetBuilder> {\n '/a': (BuildContext context) => MyPage(title: 'page A'),\n '/b': (BuildContext context) => MyPage(title: 'page B'),\n '/c': (BuildContext context) => MyPage(title: 'page C'),\n },\n ));\n}\n```\n\nTo show a route by name:\n\n```dart\nNavigator.pushNamed(context, '/b');\n```\n\n### Routes can return a value\n\nWhen a route is pushed to ask the user for a value, the value can be\nreturned via the [pop] method's result parameter.\n\nMethods that push a route return a [Future]. The Future resolves when the\nroute is popped and the [Future]'s value is the [pop] method's `result`\nparameter.\n\nFor example if we wanted to ask the user to press 'OK' to confirm an\noperation we could `await` the result of [Navigator.push]:\n\n```dart\nbool value = await Navigator.push(context, MaterialPageRoute<bool>(\n builder: (BuildContext context) {\n return Center(\n child: GestureDetector(\n child: Text('OK'),\n onTap: () { Navigator.pop(context, true); }\n ),\n );\n }\n));\n```\n\nIf the user presses 'OK' then value will be true. If the user backs\nout of the route, for example by pressing the Scaffold's back button,\nthe value will be null.\n\nWhen a route is used to return a value, the route's type parameter must\nmatch the type of [pop]'s result. That's why we've used\n`MaterialPageRoute<bool>` instead of `MaterialPageRoute<void>` or just\n`MaterialPageRoute`. (If you prefer to not specify the types, though, that's\nfine too.)\n\n### Popup routes\n\nRoutes don't have to obscure the entire screen. [PopupRoute]s cover the\nscreen with a [ModalRoute.barrierColor] that can be only partially opaque to\nallow the current screen to show through. Popup routes are \"modal\" because\nthey block input to the widgets below.\n\nThere are functions which create and show popup routes. For\nexample: [showDialog], [showMenu], and [showModalBottomSheet]. These\nfunctions return their pushed route's Future as described above.\nCallers can await the returned value to take an action when the\nroute is popped, or to discover the route's value.\n\nThere are also widgets which create popup routes, like [PopupMenuButton] and\n[DropdownButton]. These widgets create internal subclasses of PopupRoute\nand use the Navigator's push and pop methods to show and dismiss them.\n\n### Custom routes\n\nYou can create your own subclass of one of the widget library route classes\nlike [PopupRoute], [ModalRoute], or [PageRoute], to control the animated\ntransition employed to show the route, the color and behavior of the route's\nmodal barrier, and other aspects of the route.\n\nThe [PageRouteBuilder] class makes it possible to define a custom route\nin terms of callbacks. Here's an example that rotates and fades its child\nwhen the route appears or disappears. This route does not obscure the entire\nscreen because it specifies `opaque: false`, just as a popup route does.\n\n```dart\nNavigator.push(context, PageRouteBuilder(\n opaque: false,\n pageBuilder: (BuildContext context, _, __) {\n return Center(child: Text('My PageRoute'));\n },\n transitionsBuilder: (___, Animation<double> animation, ____, Widget child) {\n return FadeTransition(\n opacity: animation,\n child: RotationTransition(\n turns: Tween<double>(begin: 0.5, end: 1.0).animate(animation),\n child: child,\n ),\n );\n }\n));\n```\n\nThe page route is built in two parts, the \"page\" and the\n\"transitions\". The page becomes a descendant of the child passed to\nthe `transitionsBuilder` function. Typically the page is only built once,\nbecause it doesn't depend on its animation parameters (elided with `_`\nand `__` in this example). The transition is built on every frame\nfor its duration.\n\n### Nesting Navigators\n\nAn app can use more than one Navigator. Nesting one Navigator below\nanother Navigator can be used to create an \"inner journey\" such as tabbed\nnavigation, user registration, store checkout, or other independent journeys\nthat represent a subsection of your overall application.\n\n#### Real World Example\n\nIt is standard practice for iOS apps to use tabbed navigation where each\ntab maintains its own navigation history. Therefore, each tab has its own\n[Navigator], creating a kind of \"parallel navigation.\"\n\nIn addition to the parallel navigation of the tabs, it is still possible to\nlaunch full-screen pages that completely cover the tabs. For example: an\non-boarding flow, or an alert dialog. Therefore, there must exist a \"root\"\n[Navigator] that sits above the tab navigation. As a result, each of the\ntab's [Navigator]s are actually nested [Navigator]s sitting below a single\nroot [Navigator].\n\nThe nested [Navigator]s for tabbed navigation sit in [WidgetApp] and\n[CupertinoTabView], so you don't need to worry about nested [Navigator]s\nin this situation, but it's a real world example where nested [Navigator]s\nare used.\n\nThe following example demonstrates how a nested [Navigator] can be used to\npresent a standalone user registration journey.\n\nEven though this example uses two [Navigator]s to demonstrate nested\n[Navigator]s, a similar result is possible using only a single [Navigator].\n\nRun this example with `flutter run --route=/signup` to start it with\nthe signup flow instead of on the home page.\n\n```dart\nimport 'package:flutter/material.dart';\n```\n\n```dart\nvoid main() => runApp(new MyApp());\n```\n\n```dart\nclass MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Code Sample for Navigator',\n // MaterialApp contains our top-level Navigator\n initialRoute: '/',\n routes: {\n '/': (BuildContext context) => HomePage(),\n '/signup': (BuildContext context) => SignUpPage(),\n },\n );\n }\n}\n\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: Text('Home Page'),\n ),\n );\n }\n}\n\nclass CollectPersonalInfoPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: GestureDetector(\n onTap: () {\n // This moves from the personal info page to the credentials page,\n // replacing this page with that one.\n Navigator.of(context)\n .pushReplacementNamed('signup/choose_credentials');\n },\n child: Container(\n color: Colors.lightBlue,\n alignment: Alignment.center,\n child: Text('Collect Personal Info Page'),\n ),\n ),\n );\n }\n}\n\nclass ChooseCredentialsPage extends StatelessWidget {\n const ChooseCredentialsPage({\n this.onSignupComplete,\n });\n\n final VoidCallback onSignupComplete;\n\n @override\n Widget build(BuildContext context) {\n return GestureDetector(\n onTap: onSignupComplete,\n child: DefaultTextStyle(\n style: Theme.of(context).textTheme.display1,\n child: Container(\n color: Colors.pinkAccent,\n alignment: Alignment.center,\n child: Text('Choose Credentials Page'),\n ),\n ),\n );\n }\n}\n\nclass SignUpPage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n // SignUpPage builds its own Navigator which ends up being a nested\n // Navigator in our app.\n return Navigator(\n initialRoute: 'signup/personal_info',\n onGenerateRoute: (RouteSettings settings) {\n WidgetBuilder builder;\n switch (settings.name) {\n case 'signup/personal_info':\n // Assume CollectPersonalInfoPage collects personal info and then\n // navigates to 'signup/choose_credentials'.\n builder = (BuildContext _) => CollectPersonalInfoPage();\n break;\n case 'signup/choose_credentials':\n // Assume ChooseCredentialsPage collects new credentials and then\n // invokes 'onSignupComplete()'.\n builder = (BuildContext _) => ChooseCredentialsPage(\n onSignupComplete: () {\n // Referencing Navigator.of(context) from here refers to the\n // top level Navigator because SignUpPage is above the\n // nested Navigator that it created. Therefore, this pop()\n // will pop the entire \"sign up\" journey and return to the\n // \"/\" route, AKA HomePage.\n Navigator.of(context).pop();\n },\n );\n break;\n default:\n throw Exception('Invalid route: ${settings.name}');\n }\n return MaterialPageRoute(builder: builder, settings: settings);\n },\n );\n }\n}\n```\n\n[Navigator.of] operates on the nearest ancestor [Navigator] from the given\n[BuildContext]. Be sure to provide a [BuildContext] below the intended\n[Navigator], especially in large [build] methods where nested [Navigator]s\nare created. The [Builder] widget can be used to access a [BuildContext] at\na desired location in the widget subtree.", "detail": "", "kind": 7, "label": "Navigator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverSafeArea", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that insets another sliver by sufficient padding to avoid\nintrusions by the operating system.\n\nFor example, this will indent the sliver by enough to avoid the status bar\nat the top of the screen.\n\nIt will also indent the sliver by the amount necessary to avoid The Notch\non the iPhone X, or other similar creative physical features of the\ndisplay.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\nSee also:\n\n * [SafeArea], for insetting widgets to avoid operating system intrusions.\n * [SliverPadding], for insetting slivers in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SliverSafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoFullscreenDialogTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style transition used for summoning fullscreen dialogs.\n\nFor example, used when creating a new calendar event by bringing in the next\nscreen from the bottom.", "detail": "", "kind": 7, "label": "CupertinoFullscreenDialogTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTextField", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style text field.\n\nA text field lets the user enter text, either with a hardware keyboard or with\nan onscreen keyboard.\n\nThis widget corresponds to both a `UITextField` and an editable `UITextView`\non iOS.\n\nThe text field calls the [onChanged] callback whenever the user changes the\ntext in the field. If the user indicates that they are done typing in the\nfield (e.g., by pressing a button on the soft keyboard), the text field\ncalls the [onSubmitted] callback.\n\nTo control the text that is displayed in the text field, use the\n[controller]. For example, to set the initial value of the text field, use\na [controller] that already contains some text such as:\n\n\n```dart\nclass MyPrefilledText extends StatefulWidget {\n @override\n _MyPrefilledTextState createState() => _MyPrefilledTextState();\n}\n\nclass _MyPrefilledTextState extends State<MyPrefilledText> {\n TextEditingController _textController;\n\n @override\n void initState() {\n super.initState();\n _textController = TextEditingController(text: 'initial text');\n }\n\n @override\n Widget build(BuildContext context) {\n return CupertinoTextField(controller: _textController);\n }\n}\n```\n\nThe [controller] can also control the selection and composing region (and to\nobserve changes to the text, selection, and composing region).\n\nThe text field has an overridable [decoration] that, by default, draws a\nrounded rectangle border around the text field. If you set the [decoration]\nproperty to null, the decoration will be removed entirely.\n\nSee also:\n\n * <https://developer.apple.com/documentation/uikit/uitextfield>\n * [TextField], an alternative text field widget that follows the Material\n Design UI conventions.\n * [EditableText], which is the raw text editing control at the heart of a\n [TextField].", "detail": "", "kind": 7, "label": "CupertinoTextField" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "RenderObjectWidgets provide the configuration for [RenderObjectElement]s,\nwhich wrap [RenderObject]s, which provide the actual rendering of the\napplication.", "detail": "", "kind": 7, "label": "RenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollSpringSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A SpringSimulation where the value of [x] is guaranteed to have exactly the\nend value when the simulation isDone().", "detail": "", "kind": 7, "label": "ScrollSpringSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that detects gestures described by the given gesture\nfactories.\n\nFor common gestures, use a [GestureRecognizer].\n[RawGestureDetector] is useful primarily when developing your\nown gesture recognizers.\n\nConfiguring the gesture recognizers requires a carefully constructed map, as\ndescribed in [gestures] and as shown in the example below.\n\n\nThis example shows how to hook up a [TapGestureRecognizer]. It assumes that\nthe code is being used inside a [State] object with a `_last` field that is\nthen displayed as the child of the gesture detector.\n\n```dart\nRawGestureDetector(\n gestures: <Type, GestureRecognizerFactory>{\n TapGestureRecognizer: GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(\n () => TapGestureRecognizer(),\n (TapGestureRecognizer instance) {\n instance\n ..onTapDown = (TapDownDetails details) { setState(() { _last = 'down'; }); }\n ..onTapUp = (TapUpDetails details) { setState(() { _last = 'up'; }); }\n ..onTap = () { setState(() { _last = 'tap'; }); }\n ..onTapCancel = () { setState(() { _last = 'cancel'; }); };\n },\n ),\n },\n child: Container(width: 300.0, height: 300.0, color: Colors.yellow, child: Text(_last)),\n)\n```\n\nSee also:\n\n * [GestureDetector], a less flexible but much simpler widget that does the same thing.\n * [Listener], a widget that reports raw pointer events.\n * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.", "detail": "", "kind": 7, "label": "RawGestureDetector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CheckedModeBanner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a [Banner] saying \"DEBUG\" when running in checked mode.\n[MaterialApp] builds one of these by default.\nDoes nothing in release mode.", "detail": "", "kind": 7, "label": "CheckedModeBanner" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoActionSheet", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style action sheet.\n\nAn action sheet is a specific style of alert that presents the user\nwith a set of two or more choices related to the current context.\nAn action sheet can have a title, an additional message, and a list\nof actions. The title is displayed above the message and the actions\nare displayed below this content.\n\nThis action sheet styles its title and message to match standard iOS action\nsheet title and message text style.\n\nTo display action buttons that look like standard iOS action sheet buttons,\nprovide [CupertinoActionSheetAction]s for the [actions] given to this action sheet.\n\nTo include a iOS-style cancel button separate from the other buttons,\nprovide an [CupertinoActionSheetAction] for the [cancelButton] given to this\naction sheet.\n\nAn action sheet is typically passed as the child widget to\n[showCupertinoModalPopup], which displays the action sheet by sliding it up\nfrom the bottom of the screen.\n\nSee also:\n\n * [CupertinoActionSheetAction], which is an iOS-style action sheet button.\n * <https://developer.apple.com/design/human-interface-guidelines/ios/views/action-sheets/>", "detail": "", "kind": 7, "label": "CupertinoActionSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Embeds an iOS view in the Widget hierarchy.\n\n\nEmbedding iOS views is an expensive operation and should be avoided when a Flutter\nequivalent is possible.\n\n\n\n\nConstruction of UIViews is done asynchronously, before the UIView is ready this widget paints\nnothing while maintaining the same layout constraints.", "detail": "", "kind": 7, "label": "UiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state for a scrolling container that animates items when they are\ninserted or removed.\n\nWhen an item is inserted with [insertItem] an animation begins running. The\nanimation is passed to [AnimatedList.itemBuilder] whenever the item's widget\nis needed.\n\nWhen an item is removed with [removeItem] its animation is reversed.\nThe removed item's animation is passed to the [removeItem] builder\nparameter.\n\nAn app that needs to insert or remove items in response to an event\ncan refer to the [AnimatedList]'s state with a global key:\n\n```dart\nGlobalKey<AnimatedListState> listKey = GlobalKey<AnimatedListState>();\n...\nAnimatedList(key: listKey, ...);\n...\nlistKey.currentState.insert(123);\n```\n\n[AnimatedList] item input handlers can also refer to their [AnimatedListState]\nwith the static [AnimatedList.of] method.", "detail": "", "kind": 7, "label": "AnimatedListState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that replaces the entire screen with an iOS transition.\n\nThe page slides in from the right and exits in reverse. The page also shifts\nto the left in parallax when another page enters to cover it.\n\nThe page slides in from the bottom and exits in reverse with no parallax\neffect for fullscreen dialogs.\n\nBy default, when a modal route is replaced by another, the previous route\nremains in memory. To free all the resources when this is not necessary, set\n[maintainState] to false.\n\nThe type `T` specifies the return type of the route which can be supplied as\nthe route is popped from the stack via [Navigator.pop] when an optional\n`result` can be provided.\n\nSee also:\n\n * [MaterialPageRoute], for an adaptive [PageRoute] that uses a\n platform-appropriate transition.\n * [CupertinoPageScaffold], for applications that have one page with a fixed\n navigation bar on top.\n * [CupertinoTabScaffold], for applications that have a tab bar at the\n bottom with multiple pages.", "detail": "", "kind": 7, "label": "CupertinoPageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Dismissible", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dismissed by dragging in the indicated [direction].\n\nDragging or flinging this widget in the [DismissDirection] causes the child\nto slide out of view. Following the slide animation, if [resizeDuration] is\nnon-null, the Dismissible widget animates its height (or width, whichever is\nperpendicular to the dismiss direction) to zero over the [resizeDuration].\n\n\nBackgrounds can be used to implement the \"leave-behind\" idiom. If a background\nis specified it is stacked behind the Dismissible's child and is exposed when\nthe child moves.\n\nThe widget calls the [onDismissed] callback either after its size has\ncollapsed to zero (if [resizeDuration] is non-null) or immediately after\nthe slide animation (if [resizeDuration] is null). If the Dismissible is a\nlist item, it must have a key that distinguishes it from the other items and\nits [onDismissed] callback must remove the item from the list.", "detail": "", "kind": 7, "label": "Dismissible" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DatePickerDateTimeOrder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the order of the columns inside [CupertinoDatePicker] in\ntime and date time mode.", "detail": "", "kind": 13, "label": "DatePickerDateTimeOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionHandleType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Which type of selection handle to be displayed.\n\nWith mixed-direction text, both handles may be the same type. Examples:\n\n* LTR text: 'the <quick brown> fox':\n\n The '<' is drawn with the [left] type, the '>' with the [right]\n\n* RTL text: 'XOF <NWORB KCIUQ> EHT':\n\n Same as above.\n\n* mixed text: '<the NWOR<B KCIUQ fox'\n\n Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn\n with the [left] type.\n\nSee also:\n\n * [TextDirection], which discusses left-to-right and right-to-left text in\n more detail.", "detail": "", "kind": 13, "label": "TextSelectionHandleType" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stack", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its children relative to the edges of its box.\n\nThis class is useful if you want to overlap several children in a simple\nway, for example having some text and an image, overlaid with a gradient and\na button attached to the bottom.\n\nEach child of a [Stack] widget is either _positioned_ or _non-positioned_.\nPositioned children are those wrapped in a [Positioned] widget that has at\nleast one non-null property. The stack sizes itself to contain all the\nnon-positioned children, which are positioned according to [alignment]\n(which defaults to the top-left corner in left-to-right environments and the\ntop-right corner in right-to-left environments). The positioned children are\nthen placed relative to the stack according to their top, right, bottom, and\nleft properties.\n\nThe stack paints its children in order with the first child being at the\nbottom. If you want to change the order in which the children paint, you\ncan rebuild the stack with the children in the new order. If you reorder\nthe children in this way, consider giving the children non-null keys.\nThese keys will cause the framework to move the underlying objects for\nthe children to their new locations rather than recreate them at their\nnew location.\n\nFor more details about the stack layout algorithm, see [RenderStack].\n\nIf you want to lay a number of children out in a particular pattern, or if\nyou want to make a custom layout manager, you probably want to use\n[CustomMultiChildLayout] instead. In particular, when using a [Stack] you\ncan't position children relative to their size or the stack's own size.\n\n\nUsing a [Stack] you can position widgets over one another.\n\n```dart\nStack(\n children: <Widget>[\n Container(\n width: 100,\n height: 100,\n color: Colors.red,\n ),\n Container(\n width: 90,\n height: 90,\n color: Colors.green,\n ),\n Container(\n width: 80,\n height: 80,\n color: Colors.blue,\n ),\n ],\n)\n```\n\n\nThis example shows how [Stack] can be used to enhance text visibility\nby adding gradient backdrops.\n\n```dart\nSizedBox(\n width: 250,\n height: 250,\n child: Stack(\n children: <Widget>[\n Container(\n width: 250,\n height: 250,\n color: Colors.white,\n ),\n Container(\n padding: EdgeInsets.all(5.0),\n alignment: Alignment.bottomCenter,\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topCenter,\n end: Alignment.bottomCenter,\n colors: <Color>[\n Colors.black.withAlpha(0),\n Colors.black12,\n Colors.black45\n ],\n ),\n ),\n child: Text(\n \"Foreground Text\",\n style: TextStyle(color: Colors.white, fontSize: 20.0),\n ),\n ),\n ],\n ),\n)\n```\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * [Flow], which provides paint-time control of its children using transform\n matrices.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Stack" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the child semantics with an index.\n\nSemantic indexes are used by TalkBack/Voiceover to make announcements about\nthe current scroll state. Certain widgets like the [ListView] will\nautomatically provide a child index for building semantics. A user may wish\nto manually provide semantic indexes if not all child of the scrollable\ncontribute semantics.\n\n\nThe example below handles spacers in a scrollable that don't contribute\nsemantics. The automatic indexes would give the spaces a semantic index,\ncausing scroll announcements to erroneously state that there are four items\nvisible.\n\n```dart\nListView(\n addSemanticIndexes: false,\n semanticChildCount: 2,\n children: const <Widget>[\n IndexedSemantics(index: 0, child: Text('First')),\n Spacer(),\n IndexedSemantics(index: 1, child: Text('Second')),\n Spacer(),\n ],\n)\n```\n\nSee also:\n\n * [CustomScrollView], for an explanation of index semantics.", "detail": "", "kind": 7, "label": "IndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridPaper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that draws a rectilinear grid of lines one pixel wide.\n\nUseful with a [Stack] for visualizing your layout along a grid.\n\nThe grid's origin (where the first primary horizontal line and the first\nprimary vertical line intersect) is at the top left of the widget.\n\nThe grid is drawn over the [child] widget.", "detail": "", "kind": 7, "label": "GridPaper" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directionality", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the ambient directionality of text and\ntext-direction-sensitive render objects.\n\nFor example, [Padding] depends on the [Directionality] to resolve\n[EdgeInsetsDirectional] objects into absolute [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "Directionality" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecoratedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that paints a [Decoration] either before or after its child paints.\n\n[Container] insets its child by the widths of the borders; this widget does\nnot.\n\nCommonly used with [BoxDecoration].\n\nThe [child] is not clipped. To clip a child to the shape of a particular\n[ShapeDecoration], consider using a [ClipPath] widget.\n\n\nThis sample shows a radial gradient that draws a moon on a night sky:\n\n```dart\nDecoratedBox(\n decoration: BoxDecoration(\n gradient: RadialGradient(\n center: const Alignment(-0.5, -0.6),\n radius: 0.15,\n colors: <Color>[\n const Color(0xFFEEEEEE),\n const Color(0xFF111133),\n ],\n stops: <double>[0.9, 1.0],\n ),\n ),\n)\n```\n\nSee also:\n\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * [DecoratedBoxTransition], the version of this class that animates on the\n [decoration] property.\n * [Decoration], which you can extend to provide other effects with\n [DecoratedBox].\n * [CustomPaint], another way to draw custom effects from the widget layer.", "detail": "", "kind": 7, "label": "DecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Title", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that describes this app in the operating system.", "detail": "", "kind": 7, "label": "Title" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrientationBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builds a widget tree that can depend on the parent widget's orientation\n(distinct from the device orientation).\n\nSee also:\n\n * [LayoutBuilder], which exposes the complete constraints, not just the\n orientation.\n * [CustomSingleChildLayout], which positions its child during layout.\n * [CustomMultiChildLayout], with which you can define the precise layout\n of a list of children during the layout phase.\n * [MediaQueryData.orientation], which exposes whether the device is in\n landscape or portrait mode.", "detail": "", "kind": 7, "label": "OrientationBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expanded", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that expands a child of a [Row], [Column], or [Flex]\nso that the child fills the available space.\n\nUsing an [Expanded] widget makes a child of a [Row], [Column], or [Flex]\nexpand to fill the available space along the main axis (e.g., horizontally for\na [Row] or vertically for a [Column]). If multiple children are expanded,\nthe available space is divided among them according to the [flex] factor.\n\nAn [Expanded] widget must be a descendant of a [Row], [Column], or [Flex],\nand the path from the [Expanded] widget to its enclosing [Row], [Column], or\n[Flex] must contain only [StatelessWidget]s or [StatefulWidget]s (not other\nkinds of widgets, like [RenderObjectWidget]s).\n\n\nThis example shows how to use an [Expanded] widget in a [Column] so that\nit's middle child, a [Container] here, expands to fill the space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Column Sample'),\n ),\n body: Center(\n child: Column(\n children: <Widget>[\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n Expanded(\n child: Container(\n color: Colors.blue,\n width: 100,\n ),\n ),\n Container(\n color: Colors.red,\n height: 100,\n width: 100,\n ),\n ],\n ),\n ),\n );\n}\n```\n\nThis example shows how to use an [Expanded] widget in a [Row] with multiple\nchildren expanded, utilizing the [flex] factor to prioritize available space.\n\n```dart\nWidget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text('Expanded Row Sample'),\n ),\n body: Center(\n child: Row(\n children: <Widget>[\n Expanded(\n flex: 2,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n Container(\n color: Colors.blue,\n height: 100,\n width: 50,\n ),\n Expanded(\n flex: 1,\n child: Container(\n color: Colors.red,\n height: 100,\n ),\n ),\n ],\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [Flexible], which does not force the child to fill the available space.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Expanded" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BallisticScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on a physics [Simulation].\n\nA [BallisticScrollActivity] is typically used when the user lifts their\nfinger off the screen to continue the scrolling gesture with the current velocity.\n\n[BallisticScrollActivity] is also used to restore a scroll view to a valid\nscroll offset when the geometry of the scroll view changes. In these\nsituations, the [Simulation] typically starts with a zero velocity.\n\nSee also:\n\n * [DrivenScrollActivity], which animates a scroll view based on a set of\n animation parameters.", "detail": "", "kind": 7, "label": "BallisticScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenVisitor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks passed to [AnimatedWidgetBaseState.forEachTween].", "detail": "(Tween<T> tween, T targetValue, TweenConstructor<T> constructor) → Tween<T>", "kind": 7, "label": "TweenVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleEndCallback].", "detail": "", "kind": 7, "label": "ScaleEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An action the user has requested the text input control to perform.\n\nEach action represents a logical meaning, and also configures the soft\nkeyboard to display a certain kind of action button. The visual appearance\nof the action button might differ between versions of the same OS.\n\nDespite the logical meaning of each action, choosing a particular\n[TextInputAction] does not necessarily cause any specific behavior to\nhappen. It is up to the developer to ensure that the behavior that occurs\nwhen an action button is pressed is appropriate for the action button chosen.\n\nFor example: If the user presses the keyboard action button on iOS when it\nreads \"Emergency Call\", the result should not be a focus change to the next\nTextField. This behavior is not logically appropriate for a button that says\n\"Emergency Call\".\n\nSee [EditableText] for more information about customizing action button\nbehavior.\n\nMost [TextInputAction]s are supported equally by both Android and iOS.\nHowever, there is not a complete, direct mapping between Android's IME input\ntypes and iOS's keyboard return types. Therefore, some [TextInputAction]s\nare inappropriate for one of the platforms. If a developer chooses an\ninappropriate [TextInputAction] when running in debug mode, an error will be\nthrown. If the same thing is done in release mode, then instead of sending\nthe inappropriate value, Android will use \"unspecified\" on the platform\nside and iOS will use \"default\" on the platform side.\n\nSee also:\n\n * [TextInput], which configures the platform's keyboard setup.\n * [EditableText], which invokes callbacks when the action button is pressed.", "detail": "", "kind": 13, "label": "TextInputAction" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two relative rects.\n\nThis class specializes the interpolation of [Tween<RelativeRect>] to\nuse [RelativeRect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RelativeRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that has mutable state.\n\nState is information that (1) can be read synchronously when the widget is\nbuilt and (2) might change during the lifetime of the widget. It is the\nresponsibility of the widget implementer to ensure that the [State] is\npromptly notified when such state changes, using [State.setState].\n\nA stateful widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\nStateful widgets are useful when the part of the user interface you are\ndescribing can change dynamically, e.g. due to having an internal\nclock-driven state, or depending on some system state. For compositions that\ndepend only on the configuration information in the object itself and the\n[BuildContext] in which the widget is inflated, consider using\n[StatelessWidget].\n\n\n[StatefulWidget] instances themselves are immutable and store their mutable\nstate either in separate [State] objects that are created by the\n[createState] method, or in objects to which that [State] subscribes, for\nexample [Stream] or [ChangeNotifier] objects, to which references are stored\nin final fields on the [StatefulWidget] itself.\n\nThe framework calls [createState] whenever it inflates a\n[StatefulWidget], which means that multiple [State] objects might be\nassociated with the same [StatefulWidget] if that widget has been inserted\ninto the tree in multiple places. Similarly, if a [StatefulWidget] is\nremoved from the tree and later inserted in to the tree again, the framework\nwill call [createState] again to create a fresh [State] object, simplifying\nthe lifecycle of [State] objects.\n\nA [StatefulWidget] keeps the same [State] object when moving from one\nlocation in the tree to another if its creator used a [GlobalKey] for its\n[key]. Because a widget with a [GlobalKey] can be used in at most one\nlocation in the tree, a widget that uses a [GlobalKey] has at most one\nassociated element. The framework takes advantage of this property when\nmoving a widget with a global key from one location in the tree to another\nby grafting the (unique) subtree associated with that widget from the old\nlocation to the new location (instead of recreating the subtree at the new\nlocation). The [State] objects associated with [StatefulWidget] are grafted\nalong with the rest of the subtree, which means the [State] object is reused\n(instead of being recreated) in the new location. However, in order to be\neligible for grafting, the widget must be inserted into the new location in\nthe same animation frame in which it was removed from the old location.\n\n## Performance considerations\n\nThere are two primary categories of [StatefulWidget]s.\n\nThe first is one which allocates resources in [State.initState] and disposes\nof them in [State.dispose], but which does not depend on [InheritedWidget]s\nor call [State.setState]. Such widgets are commonly used at the root of an\napplication or page, and communicate with subwidgets via [ChangeNotifier]s,\n[Stream]s, or other such objects. Stateful widgets following such a pattern\nare relatively cheap (in terms of CPU and GPU cycles), because they are\nbuilt once then never update. They can, therefore, have somewhat complicated\nand deep build methods.\n\nThe second category is widgets that use [State.setState] or depend on\n[InheritedWidget]s. These will typically rebuild many times during the\napplication's lifetime, and it is therefore important to minimize the impact\nof rebuilding such a widget. (They may also use [State.initState] or\n[State.didChangeDependencies] and allocate resources, but the important part\nis that they rebuild.)\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateful widget:\n\n * Push the state to the leaves. For example, if your page has a ticking\n clock, rather than putting the state at the top of the page and\n rebuilding the entire page each time the clock ticks, create a dedicated\n clock widget that only updates itself.\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. Ideally, a stateful widget would only create a\n single widget, and that widget would be a [RenderObjectWidget].\n (Obviously this isn't always practical, but the closer a widget gets to\n this ideal, the more efficient it will be.)\n\n * If a subtree does not change, cache the widget that represents that\n subtree and re-use it each time it can be used. It is massively more\n efficient for a widget to be re-used than for a new (but\n identically-configured) widget to be created. Factoring out the stateful\n part into a widget that takes a child argument is a common way of doing\n this.\n\n * Use `const` widgets where possible. (This is equivalent to caching a\n widget and re-using it.)\n\n * Avoid changing the depth of any created subtrees or changing the type of\n any widgets in the subtree. For example, rather than returning either the\n child or the child wrapped in an [IgnorePointer], always wrap the child\n widget in an [IgnorePointer] and control the [IgnorePointer.ignoring]\n property. This is because changing the depth of the subtree requires\n rebuilding, laying out, and painting the entire subtree, whereas just\n changing the property will require the least possible change to the\n render tree (in the case of [IgnorePointer], for example, no layout or\n repaint is necessary at all).\n\n * If the depth must be changed for some reason, consider wrapping the\n common parts of the subtrees in widgets that have a [GlobalKey] that\n remains consistent for the life of the stateful widget. (The\n [KeyedSubtree] widget may be useful for this purpose if no other widget\n can conveniently be assigned the key.)\n\n\nThis is a skeleton of a stateful widget subclass called `YellowBird`.\n\nIn this example. the [State] has no actual state. State is normally\nrepresented as private member fields. Also, normally widgets have more\nconstructor arguments, each of which corresponds to a `final` property.\n\n```dart\nclass YellowBird extends StatefulWidget {\n const YellowBird({ Key key }) : super(key: key);\n\n @override\n _YellowBirdState createState() => _YellowBirdState();\n}\n\nclass _YellowBirdState extends State<YellowBird> {\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFFFFE306));\n }\n}\n```\n\nThis example shows the more generic widget `Bird` which can be given a\ncolor and a child, and which has some internal state with a method that\ncan be called to mutate it:\n\n```dart\nclass Bird extends StatefulWidget {\n const Bird({\n Key key,\n this.color = const Color(0xFFFFE306),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n _BirdState createState() => _BirdState();\n}\n\nclass _BirdState extends State<Bird> {\n double _size = 1.0;\n\n void grow() {\n setState(() { _size += 0.1; });\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(\n color: widget.color,\n transform: Matrix4.diagonal3Values(_size, _size, 1.0),\n child: widget.child,\n );\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [State], where the logic behind a [StatefulWidget] is hosted.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatefulWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. Rather than receiving\ntheir children as an explicit [List], they receive their children using a\n[SliverChildDelegate].\n\nIt's uncommon to subclass [SliverChildDelegate]. Instead, consider using one\nof the existing subclasses that provide adaptors to builder callbacks or\nexplicit child lists.\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as in the\ncase of [SliverChildListDelegate]) or lazily provided ones (such as in the\ncase of [SliverChildBuilderDelegate]).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree, states\nand render objects are destroyed. A new child at the same position in the\nsliver will be lazily recreated along with new elements, states and render\nobjects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the sliver child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the sliver child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child widget\n subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the sliver child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the sliver keeps the child's\n render object (and by extension, its associated elements and states) in a\n cache list instead of destroying them. When scrolled back into view, the\n render object is repainted as-is (if it wasn't marked dirty in the\n interim).\n\n This only works if the [SliverChildDelegate] subclasses don't wrap the\n child widget subtree with other widgets such as [AutomaticKeepAlive] and\n [RepaintBoundary] via `addAutomaticKeepAlives` and\n `addRepaintBoundaries`.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default in\n [SliverChildListDelegate] or [SliverChildListDelegate]). Instead of\n unconditionally caching the child element subtree when scrolling\n off-screen like [KeepAlive], [AutomaticKeepAlive] can let whether to\n cache the subtree be determined by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its sliver child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the sliver child element subtree will be\n destroyed when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive by\n using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\nSee also:\n\n * [SliverChildBuilderDelegate], which is a delegate that uses a builder\n callback to construct the children.\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.", "detail": "", "kind": 7, "label": "SliverChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildListDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using an\nexplicit list.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an explicit list, which is convenient but reduces the benefit\nof building children lazily.\n\nIn general building all the widgets in advance is not efficient. It is\nbetter to create a delegate that builds them on demand using\n[ListWheelChildBuilderDelegate] or by subclassing [ListWheelChildDelegate]\ndirectly.\n\nThis class is provided for the cases where either the list of children is\nknown well in advance (ideally the children are themselves compile-time\nconstants, for example), and therefore will not be built each time the\ndelegate itself is created, or the list is small, such that it's likely\nalways visible (and thus there is nothing to be gained by building it on\ndemand). For example, the body of a dialog box might fit both of these\nconditions.", "detail": "", "kind": 7, "label": "ListWheelChildListDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollIndicatorNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that an [GlowingOverscrollIndicator] will start showing an\noverscroll indication.\n\nTo prevent the indicator from showing the indication, call [disallowGlow] on\nthe notification.\n\nSee also:\n\n * [GlowingOverscrollIndicator], which generates this type of notification.", "detail": "", "kind": 7, "label": "OverscrollIndicatorNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragEndCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onEnd], which uses [GestureDragEndCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].", "detail": "", "kind": 7, "label": "DragEndDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollbarPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomPainter] for painting scrollbars.\n\nUnlike [CustomPainter]s that subclasses [CustomPainter] and only repaint\nwhen [shouldRepaint] returns true (which requires this [CustomPainter] to\nbe rebuilt), this painter has the added optimization of repainting and not\nrebuilding when:\n\n * the scroll position changes; and\n * when the scrollbar fades away.\n\nCalling [update] with the new [ScrollMetrics] will repaint the new scrollbar\nposition.\n\nUpdating the value on the provided [fadeoutOpacityAnimation] will repaint\nwith the new opacity.\n\nYou must call [dispose] on this [ScrollbarPainter] when it's no longer used.\n\nSee also:\n\n * [Scrollbar] for a widget showing a scrollbar around a [Scrollable] in the\n Material Design style.\n * [CupertinoScrollbar] for a widget showing a scrollbar around a\n [Scrollable] in the iOS style.", "detail": "", "kind": 7, "label": "ScrollbarPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressStartCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressStart], which uses [GestureLongPressStartCallback].\n * [LongPressMoveUpdateDetails], the details for [GestureLongPressMoveUpdateCallback]\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback].", "detail": "", "kind": 7, "label": "LongPressStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoActivityIndicator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style activity indicator.\n\nSee also:\n\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/progress-indicators/#activity-indicators>", "detail": "", "kind": 7, "label": "CupertinoActivityIndicator" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListItemBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedList].", "detail": "(BuildContext context, int index, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionControls", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for building the selection UI, to be provided by the\nimplementor of the toolbar widget.\n\nOverride text operations such as [handleCut] if needed.", "detail": "", "kind": 7, "label": "TextSelectionControls" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FadeTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animates the opacity of a widget.\n\nFor a widget that automatically animates between the sizes of two children,\nfading between them, see [AnimatedCrossFade].\n\n\nHere's an illustration of the [FadeTransition] widget, with it's [opacity]\nanimated by a [CurvedAnimation] set to [Curves.fastOutSlowIn]:", "detail": "", "kind": 7, "label": "FadeTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is not a [GlobalKey].\n\nKeys must be unique amongst the [Element]s with the same parent. By\ncontrast, [GlobalKey]s must be unique across the entire app.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "LocalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotificationListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that listens for [Notification]s bubbling up the tree.\n\nNotifications will trigger the [onNotification] callback only if their\n[runtimeType] is a subtype of `T`.\n\nTo dispatch notifications, use the [Notification.dispatch] method.", "detail": "", "kind": 7, "label": "NotificationListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics used by a [PageView].\n\nThese physics cause the page view to snap to page boundaries.\n\nSee also:\n\n * [ScrollPhysics], the base class which defines the API for scrolling\n physics.\n * [PageView.physics], which can override the physics used by a page view.", "detail": "", "kind": 7, "label": "PageScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Metrics for a [ScrollPosition] to a scroll view with fixed item sizes.\n\nThe metrics are available on [ScrollNotification]s generated from a scroll\nviews such as [ListWheelScrollView]s with a [FixedExtentScrollController] and\nexposes the current [itemIndex] and the scroll view's [itemExtent].\n\n`FixedExtent` refers to the fact that the scrollable items have the same size.\nThis is distinct from `Fixed` in the parent class name's [FixedScrollMetric]\nwhich refers to its immutability.", "detail": "", "kind": 7, "label": "FixedExtentMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers are no longer in contact with the screen.", "detail": "(ScaleEndDetails details) → void", "kind": 7, "label": "GestureScaleEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFade", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that cross-fades between two given children and animates itself\nbetween their sizes.\n\nThe animation is controlled through the [crossFadeState] parameter.\n[firstCurve] and [secondCurve] represent the opacity curves of the two\nchildren. The [firstCurve] is inverted, i.e. it fades out when providing a\ngrowing curve like [Curves.linear]. The [sizeCurve] is the curve used to\nanimate between the size of the fading-out child and the size of the\nfading-in child.\n\nThis widget is intended to be used to fade a pair of widgets with the same\nwidth. In the case where the two children have different heights, the\nanimation crops overflowing children during the animation by aligning their\ntop edge, which means that the bottom will be clipped.\n\nThe animation is automatically triggered when an existing\n[AnimatedCrossFade] is rebuilt with a different value for the\n[crossFadeState] property.\n\n\nThis code fades between two representations of the Flutter logo. It depends\non a boolean field `_first`; when `_first` is true, the first logo is shown,\notherwise the second logo is shown. When the field changes state, the\n[AnimatedCrossFade] widget cross-fades between the two forms of the logo\nover three seconds.\n\n```dart\nAnimatedCrossFade(\n duration: const Duration(seconds: 3),\n firstChild: const FlutterLogo(style: FlutterLogoStyle.horizontal, size: 100.0),\n secondChild: const FlutterLogo(style: FlutterLogoStyle.stacked, size: 100.0),\n crossFadeState: _first ? CrossFadeState.showFirst : CrossFadeState.showSecond,\n)\n```\n\nSee also:\n\n * [AnimatedSize], the lower-level widget which [AnimatedCrossFade] uses to\n automatically change size.\n * [AnimatedSwitcher], which switches out a child for a new one with a\n customizable transition.", "detail": "", "kind": 7, "label": "AnimatedCrossFade" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DrivenScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An activity that animates a scroll view based on animation parameters.\n\nFor example, a [DrivenScrollActivity] is used to implement\n[ScrollController.animateTo].\n\nSee also:\n\n * [BallisticScrollActivity], which animates a scroll view based on a\n physics [Simulation].", "detail": "", "kind": 7, "label": "DrivenScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Spacer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Spacer creates an adjustable, empty spacer that can be used to tune the\nspacing between widgets in a [Flex] container, like [Row] or [Column].\n\nThe [Spacer] widget will take up any available space, so setting the\n[Flex.mainAxisAlignment] on a flex container that contains a [Spacer] to\n[MainAxisAlignment.spaceAround], [MainAxisAlignment.spaceBetween], or\n[MainAxisAlignment.spaceEvenly] will not have any visible effect: the\n[Spacer] has taken up all of the additional space, therefore there is none\nleft to redistribute.\n\n\n```dart\nRow(\n children: <Widget>[\n Text('Begin'),\n Spacer(), // Defaults to a flex of one.\n Text('Middle'),\n // Gives twice the space between Middle and End than Begin and Middle.\n Spacer(flex: 2),\n Text('End'),\n ],\n)\n```\n\nSee also:\n\n * [Row] and [Column], which are the most common containers to use a Spacer\n in.\n * [SizedBox], to create a box with a specific size and an optional child.", "detail": "", "kind": 7, "label": "Spacer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollStartNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has started scrolling.\n\nSee also:\n\n * [ScrollEndNotification], which indicates that scrolling has stopped.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollStartNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Simulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The base class for all simulations.\n\nA simulation models an object, in a one-dimensional space, on which particular\nforces are being applied, and exposes:\n\n * The object's position, [x]\n * The object's velocity, [dx]\n * Whether the simulation is \"done\", [isDone]\n\nA simulation is generally \"done\" if the object has, to a given [tolerance],\ncome to a complete rest.\n\nThe [x], [dx], and [isDone] functions take a time argument which specifies\nthe time for which they are to be evaluated. In principle, simulations can\nbe stateless, and thus can be queried with arbitrary times. In practice,\nhowever, some simulations are not, and calling any of these functions will\nadvance the simulation to the given time.\n\nAs a general rule, therefore, a simulation should only be queried using\ntimes that are equal to or greater than all times previously used for that\nsimulation.\n\nSimulations do not specify units for distance, velocity, and time. Client\nshould establish a convention and use that convention consistently with all\nrelated objects.", "detail": "", "kind": 7, "label": "Simulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveHandle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Listenable] which can be manually triggered.\n\nUsed with [KeepAliveNotification] objects as their\n[KeepAliveNotification.handle].\n\nFor a more convenient way to interact with [AutomaticKeepAlive] widgets,\nconsider using [AutomaticKeepAliveClientMixin], which uses a\n[KeepAliveHandle] internally.", "detail": "", "kind": 7, "label": "KeepAliveHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SafeArea", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by sufficient padding to avoid intrusions by\nthe operating system.\n\nFor example, this will indent the child by enough to avoid the status bar at\nthe top of the screen.\n\nIt will also indent the child by the amount necessary to avoid The Notch on\nthe iPhone X, or other similar creative physical features of the display.\n\nWhen a [minimum] padding is specified, the greater of the minimum padding\nor the safe area padding will be applied.\n\n\nSee also:\n\n * [SliverSafeArea], for insetting slivers to avoid operating system\n intrusions.\n * [Padding], for insetting widgets in general.\n * [MediaQuery], from which the window padding is obtained.\n * [dart:ui.Window.padding], which reports the padding from the operating\n system.", "detail": "", "kind": 7, "label": "SafeArea" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoButton", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style button.\n\nTakes in a text or an icon that fades out and in on touch. May optionally have a\nbackground.\n\nSee also:\n\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/buttons/>", "detail": "", "kind": 7, "label": "CupertinoButton" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that composes other [Element]s.\n\nRather than creating a [RenderObject] directly, a [ComponentElement] creates\n[RenderObject]s indirectly by creating other [Element]s.\n\nContrast with [RenderObjectElement].", "detail": "", "kind": 7, "label": "ComponentElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedDefaultTextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [DefaultTextStyle] which automatically transitions the\ndefault text style (the text style to apply to descendant [Text] widgets\nwithout explicit style) over a given duration whenever the given style\nchanges.\n\nThe [textAlign], [softWrap], [textOverflow], and [maxLines] properties are\nnot animated and take effect immediately when changed.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.elasticInOut].", "detail": "", "kind": 7, "label": "AnimatedDefaultTextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleListResolutionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeListResolutionCallback].\n\nA [LocaleListResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the list of\nlocales for the device.\n\nThe [locales] list is the device's preferred locales when the app started, or the\ndevice's preferred locales the user selected after the app was started. This list\nis in order of preference. If this list is null or empty, then Flutter has not yet\nreceived the locale information from the platform. The [supportedLocales] parameter\nis just the value of [WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleResolutionCallback], which takes only one default locale (instead of a list)\n and is attempted only after this callback fails or is null. [LocaleListResolutionCallback]\n is recommended over [LocaleResolutionCallback].", "detail": "(List<Locale> locales, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleListResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a [Scrollable]'s contents, useful for modeling the state\nof its viewport.\n\nThis class defines a current position, [pixels], and a range of values\nconsidered \"in bounds\" for that position. The range has a minimum value at\n[minScrollExtent] and a maximum value at [maxScrollExtent] (inclusive). The\nviewport scrolls in the direction and axis described by [axisDirection]\nand [axis].\n\nThe [outOfRange] getter will return true if [pixels] is outside this defined\nrange. The [atEdge] getter will return true if the [pixels] position equals\neither the [minScrollExtent] or the [maxScrollExtent].\n\nThe dimensions of the viewport in the given [axis] are described by\n[viewportDimension].\n\nThe above values are also exposed in terms of [extentBefore],\n[extentInside], and [extentAfter], which may be more useful for use cases\nsuch as scroll bars; for example, see [Scrollbar].\n\nSee also:\n\n * [FixedScrollMetrics], which is an immutable object that implements this\n interface.", "detail": "", "kind": 7, "label": "ScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAliveClientMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin with convenience methods for clients of [AutomaticKeepAlive]. Used\nwith [State] subclasses.\n\nSubclasses must implement [wantKeepAlive], and their [build] methods must\ncall `super.build` (the return value will always return null, and should be\nignored).\n\nThen, whenever [wantKeepAlive]'s value changes (or might change), the\nsubclass should call [updateKeepAlive].\n\nThe type argument `T` is the type of the [StatefulWidget] subclass of the\n[State] into which this class is being mixed.\n\nSee also:\n\n * [AutomaticKeepAlive], which listens to messages from this mixin.\n * [KeepAliveNotification], the notifications sent by this mixin.", "detail": "", "kind": 7, "label": "AutomaticKeepAliveClientMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offstage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that lays the child out as if it was in the tree, but without\npainting anything, without making the child available for hit testing, and\nwithout taking any room in the parent.\n\nAnimations continue to run in offstage children, and therefore use battery\nand CPU time, regardless of whether the animations end up being visible.\n\n[Offstage] can be used to measure the dimensions of a widget without\nbringing it on screen (yet). To hide a widget from view while it is not\nneeded, prefer removing the widget from the tree entirely rather than\nkeeping it alive in an [Offstage] subtree.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly).\n * [TickerMode], which can be used to disable animations in a subtree.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Offstage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The state of connection to an asynchronous computation.\n\nSee also:\n\n * [AsyncSnapshot], which augments a connection state with information\n received from the asynchronous computation.", "detail": "", "kind": 13, "label": "ConnectionState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentDataElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ParentDataWidget] as its configuration.", "detail": "", "kind": 7, "label": "ParentDataElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Key", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.\n\nA new widget will only be used to update an existing element if its key is\nthe same as the key of the current widget associated with the element.\n\n\nKeys must be unique amongst the [Element]s with the same parent.\n\nSubclasses of [Key] should either subclass [LocalKey] or [GlobalKey].\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "Key" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A viewport showing a subset of children on a wheel.\n\nTypically used with [ListWheelScrollView], this viewport is similar to\n[Viewport] in that it shows a subset of children in a scrollable based\non the scrolling offset and the children's dimensions. But uses\n[RenderListWheelViewport] to display the children on a wheel.\n\nSee also:\n\n * [ListWheelScrollView], widget that combines this viewport with a scrollable.\n * [RenderListWheelViewport], the render object that renders the children\n on a wheel.", "detail": "", "kind": 7, "label": "ListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the draggable is dropped.\n\nThe velocity and offset at which the pointer was moving when the draggable\nwas dropped is available in the [DraggableDetails]. Also included in the\n`details` is whether the draggable's [DragTarget] accepted it.\n\nUsed by [Draggable.onDragEnd]", "detail": "(DraggableDetails details) → void", "kind": 7, "label": "DragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a widget, e.g. [StatelessWidget.build]\nor [State.build].\n\nUsed by [Builder.builder], [OverlayEntry.builder], etc.\n\nSee also:\n\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [TransitionBuilder], which is similar but also takes a child.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context) → Widget", "kind": 7, "label": "WidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NestedScrollViewHeaderSliversBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [NestedScrollView] for building its header.\n\nThe `innerBoxIsScrolled` argument is typically used to control the\n[SliverAppBar.forceElevated] property to ensure that the app bar shows a\nshadow, since it would otherwise not necessarily be aware that it had\ncontent ostensibly below it.", "detail": "(BuildContext context, bool innerBoxIsScrolled) → List<Widget>", "kind": 7, "label": "NestedScrollViewHeaderSliversBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AspectRatio", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that attempts to size the child to a specific aspect ratio.\n\nThe widget first tries the largest width permitted by the layout\nconstraints. The height of the widget is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The widget will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the widget would\ncontinue iterating through the constraints. If the widget does not\nfind a feasible size after consulting each constraint, the widget\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [ConstrainedBox], a widget that imposes additional constraints on its\n child.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "AspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PopupRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that overlays a widget over the current route.", "detail": "", "kind": 7, "label": "PopupRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDialog", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style dialog.\n\nThis dialog widget does not have any opinion about the contents of the\ndialog. Rather than using this widget directly, consider using\n[CupertinoAlertDialog], which implement a specific kind of dialog.\n\nPush with `Navigator.of(..., rootNavigator: true)` when using with\n[CupertinoTabScaffold] to ensure that the dialog appears above the tabs.\n\nSee also:\n\n * [CupertinoAlertDialog], which is a dialog with title, contents, and\n actions.\n * <https://developer.apple.com/ios/human-interface-guidelines/views/alerts/>", "detail": "(Deprecated) ", "kind": 7, "label": "CupertinoDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormFieldBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for building the widget representing the form field.\n\nUsed by [FormField.builder].", "detail": "(FormFieldState<T> field) → Widget", "kind": 7, "label": "FormFieldBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Builder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that calls a closure to obtain its child widget.\n\nSee also:\n\n * [StatefulBuilder], a platonic widget which also has state.", "detail": "", "kind": 7, "label": "Builder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoPageTransition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides an iOS-style page transition animation.\n\nThe page slides in from the right and exits in reverse. It also shifts to the left in\na parallax motion when another page enters to cover it.", "detail": "", "kind": 7, "label": "CupertinoPageTransition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Center", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that centers its child within itself.\n\nThis widget will be as big as possible if its dimensions are constrained and\n[widthFactor] and [heightFactor] are null. If a dimension is unconstrained\nand the corresponding size factor is null then the widget will match its\nchild's size in that dimension. If a size factor is non-null then the\ncorresponding dimension of this widget will be the product of the child's\ndimension and the size factor. For example if widthFactor is 2.0 then\nthe width of this widget will always be twice its child's width.\n\nSee also:\n\n * [Align], which lets you arbitrarily position a child within itself,\n rather than just centering it.\n * [Row], a widget that displays its children in a horizontal array.\n * [Column], a widget that displays its children in a vertical array.\n * [Container], a convenience widget that combines common painting,\n positioning, and sizing widgets.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Center" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Text", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A run of text with a single style.\n\nThe [Text] widget displays a string of text with single style. The string\nmight break across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nThe [style] argument is optional. When omitted, the text will use the style\nfrom the closest enclosing [DefaultTextStyle]. If the given style's\n[TextStyle.inherit] property is true (the default), the given style will\nbe merged with the closest enclosing [DefaultTextStyle]. This merging\nbehavior is useful, for example, to make the text bold while using the\ndefault font family and size.\n\n\n```dart\nText(\n 'Hello, $_name! How are you?',\n textAlign: TextAlign.center,\n overflow: TextOverflow.ellipsis,\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\nUsing the [Text.rich] constructor, the [Text] widget can\ndisplay a paragraph with differently styled [TextSpan]s. The sample\nthat follows displays \"Hello beautiful world\" with different styles\nfor each word.\n\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'Hello', // default text style\n children: <TextSpan>[\n TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),\n TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),\n ],\n ),\n)\n```\n\n## Interactivity\n\nTo make [Text] react to touch events, wrap it in a [GestureDetector] widget\nwith a [GestureDetector.onTap] handler.\n\nIn a material design application, consider using a [FlatButton] instead, or\nif that isn't appropriate, at least using an [InkWell] instead of\n[GestureDetector].\n\nTo make sections of the text interactive, use [RichText] and specify a\n[TapGestureRecognizer] as the [TextSpan.recognizer] of the relevant part of\nthe text.\n\nSee also:\n\n * [RichText], which gives you more control over the text styles.\n * [DefaultTextStyle], which sets default styles for [Text] widgets.", "detail": "", "kind": 7, "label": "Text" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSliverRefreshControl", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver widget implementing the iOS-style pull to refresh content control.\n\nWhen inserted as the first sliver in a scroll view or behind other slivers\nthat still lets the scrollable overscroll in front of this sliver (such as\nthe [CupertinoSliverNavigationBar], this widget will:\n\n * Let the user draw inside the overscrolled area via the passed in [builder].\n * Trigger the provided [onRefresh] function when overscrolled far enough to\n pass [refreshTriggerPullDistance].\n * Continue to hold [refreshIndicatorExtent] amount of space for the [builder]\n to keep drawing inside of as the [Future] returned by [onRefresh] processes.\n * Scroll away once the [onRefresh] [Future] completes.\n\nThe [builder] function will be informed of the current [RefreshIndicatorMode]\nwhen invoking it, except in the [RefreshIndicatorMode.inactive] state when\nno space is available and nothing needs to be built. The [builder] function\nwill otherwise be continuously invoked as the amount of space available\nchanges from overscroll, as the sliver scrolls away after the [onRefresh]\ntask is done, etc.\n\nOnly one refresh can be triggered until the previous refresh has completed\nand the indicator sliver has retracted at least 90% of the way back.\n\nCan only be used in downward-scrolling vertical lists that overscrolls. In\nother words, refreshes can't be triggered with lists using\n[ClampingScrollPhysics].\n\nIn a typical application, this sliver should be inserted between the app bar\nsliver such as [CupertinoSliverNavigationBar] and your main scrollable\ncontent's sliver.\n\nSee also:\n\n * [CustomScrollView], a typical sliver holding scroll view this control\n should go into.\n * <https://developer.apple.com/ios/human-interface-guidelines/controls/refresh-content-controls/>\n * [RefreshIndicator], a Material Design version of the pull-to-refresh\n paradigm. This widget works differently than [RefreshIndicator] because\n instead of being an overlay on top of the scrollable, the\n [CupertinoSliverRefreshControl] is part of the scrollable and actively occupies\n scrollable space.", "detail": "", "kind": 7, "label": "CupertinoSliverRefreshControl" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes and positions children efficiently, according to the\nlogic in a [FlowDelegate].\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow, which happens\nwithout the children being laid out again (contrast this with a [Stack],\nwhich does the sizing and positioning together during layout).\n\nThe most efficient way to trigger a repaint of the flow is to supply an\nanimation to the constructor of the [FlowDelegate]. The flow will listen to\nthis animation and repaint whenever the animation ticks, avoiding both the\nbuild and layout phases of the pipeline.\n\nSee also:\n\n * [Wrap], which provides the layout model that some other frameworks call\n \"flow\", and is otherwise unrelated to [Flow].\n * [FlowDelegate], which controls the visual presentation of the children.\n * [Stack], which arranges children relative to the edges of the container.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [CustomMultiChildLayout], which uses a delegate to position multiple\n children.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A platonic widget that both has state and calls a closure to obtain its child widget.\n\nSee also:\n\n * [Builder], the platonic stateless widget.", "detail": "", "kind": 7, "label": "StatefulBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A bridge from a [RenderObject] to an [Element] tree.\n\nThe given container is the [RenderObject] that the [Element] tree should be\ninserted into. It must be a [RenderObject] that implements the\n[RenderObjectWithChildMixin] protocol. The type argument `T` is the kind of\n[RenderObject] that the container expects as its child.\n\nUsed by [runApp] to bootstrap applications.", "detail": "", "kind": 7, "label": "RenderObjectToWidgetAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragCancelCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointer that previously triggered a\n[GestureDragDownCallback] did not complete.\n\nSee [DragGestureRecognizer.onCancel].", "detail": "() → void", "kind": 7, "label": "GestureDragCancelCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressEnd].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected. Also reports the position where the pointer stopped\ncontacting the screen.", "detail": "(LongPressEndDetails details) → void", "kind": 7, "label": "GestureLongPressEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LimitedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box that limits its size only when it's unconstrained.\n\nIf this widget's maximum width is unconstrained then its child's width is\nlimited to [maxWidth]. Similarly, if this widget's maximum height is\nunconstrained then its child's height is limited to [maxHeight].\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).\n\nSee also:\n\n * [ConstrainedBox], which applies its constraints in all cases, not just\n when the incoming constraints are unbounded.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "LimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultAssetBundle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that determines the default asset bundle for its descendants.\n\nFor example, used by [Image] to determine which bundle to use for\n[AssetImage]s if no bundle is specified explicitly.\n\n\nThis can be used in tests to override what the current asset bundle is, thus\nallowing specific resources to be injected into the widget under test.\n\nFor example, a test could create a test asset bundle like this:\n\n```dart\nclass TestAssetBundle extends CachingAssetBundle {\n @override\n Future<ByteData> load(String key) async {\n if (key == 'resources/test')\n return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);\n return null;\n }\n}\n```\n\n...then wrap the widget under test with a [DefaultAssetBundle] using this\nbundle implementation:\n\n```dart\nawait tester.pumpWidget(\n MaterialApp(\n home: DefaultAssetBundle(\n bundle: TestAssetBundle(),\n child: TestWidget(),\n ),\n ),\n);\n```\n\nAssuming that `TestWidget` uses [DefaultAssetBundle.of] to obtain its\n[AssetBundle], it will now see the [TestAssetBundle]'s \"Hello World!\" data\nwhen requesting the \"resources/test\" asset.\n\nSee also:\n\n * [AssetBundle], the interface for asset bundles.\n * [rootBundle], the default default asset bundle.", "detail": "", "kind": 7, "label": "DefaultAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncSnapshot", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable representation of the most recent interaction with an asynchronous\ncomputation.\n\nSee also:\n\n * [StreamBuilder], which builds itself based on a snapshot from interacting\n with a [Stream].\n * [FutureBuilder], which builds itself based on a snapshot from interacting\n with a [Future].", "detail": "", "kind": 7, "label": "AsyncSnapshot" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] during the frames\nafter the triggering of a [ForcePressGestureRecognizer.onStart] callback.", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Banner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays a diagonal message above the corner of another widget.\n\nUseful for showing the execution mode of an app (e.g., that asserts are\nenabled.)\n\nSee also:\n\n * [CheckedModeBanner], which the [WidgetsApp] widget includes by default in\n debug mode, to show a banner that says \"DEBUG\".", "detail": "", "kind": 7, "label": "Banner" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawGestureDetectorState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [RawGestureDetector].", "detail": "", "kind": 7, "label": "RawGestureDetectorState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [ProxyWidget] as its configuration.", "detail": "", "kind": 7, "label": "ProxyElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CreateRectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that takes two [Rect] instances and returns a\n[RectTween] that transitions between them.\n\nThis is typically used with a [HeroController] to provide an animation for\n[Hero] positions that looks nicer than a linear movement. For example, see\n[MaterialRectArcTween].", "detail": "(Rect begin, Rect end) → Tween<Rect>", "kind": 7, "label": "CreateRectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for strategies that build widgets based on asynchronous\ninteraction.\n\nSee also:\n\n * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Stream].\n * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build\n itself based on a snapshot from interacting with a [Future].", "detail": "(BuildContext context, AsyncSnapshot<T> snapshot) → Widget", "kind": 7, "label": "AsyncWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageIcon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An icon that comes from an [ImageProvider], e.g. an [AssetImage].\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [IconTheme], which provides ambient configuration for icons.\n * [Icon], for icons based on glyphs from fonts instead of images.\n * [Icons], a predefined font based set of icons from the material design library.", "detail": "", "kind": 7, "label": "ImageIcon" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for scrolling activities like dragging and flinging.\n\nSee also:\n\n * [ScrollPosition], which uses [ScrollActivity] objects to manage the\n [ScrollPosition] of a [Scrollable].", "detail": "", "kind": 7, "label": "ScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorberHandle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Handle to provide to a [SliverOverlapAbsorber], a [SliverOverlapInjector],\nand an [NestedScrollViewViewport], to shift overlap in a [NestedScrollView].\n\nA particular [SliverOverlapAbsorberHandle] can only be assigned to a single\n[SliverOverlapAbsorber] at a time. It can also be (and normally is) assigned\nto one or more [SliverOverlapInjector]s, which must be later descendants of\nthe same [NestedScrollViewViewport] as the [SliverOverlapAbsorber]. The\n[SliverOverlapAbsorber] must be a direct descendant of the\n[NestedScrollViewViewport], taking part in the same sliver layout. (The\n[SliverOverlapInjector] can be a descendant that takes part in a nested\nscroll view's sliver layout.)\n\nWhenever the [NestedScrollViewViewport] is marked dirty for layout, it will\ncause its assigned [SliverOverlapAbsorberHandle] to fire notifications. It\nis the responsibility of the [SliverOverlapInjector]s (and any other\nclients) to mark themselves dirty when this happens, in case the geometry\nsubsequently changes during layout.\n\nSee also:\n\n * [NestedScrollView], which uses a [NestedScrollViewViewport] and a\n [SliverOverlapAbsorber] to align its children, and which shows sample\n usage for this class.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorberHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObjectKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nSee also the discussions at [Key] and [Widget.key].", "detail": "", "kind": 7, "label": "ObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InspectorSelectButtonBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by\n[WidgetInspector.selectButtonBuilder].", "detail": "(BuildContext context, VoidCallback onPressed) → Widget", "kind": 7, "label": "InspectorSelectButtonBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOval", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].\n\nSee also:\n\n * [CustomClipper], for information about creating custom clips.\n * [ClipRect], for more efficient clips without rounded corners.\n * [ClipRRect], for a clip with rounded corners.\n * [ClipPath], for an arbitrarily shaped clip.", "detail": "", "kind": 7, "label": "ClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildBuilderDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView] using a builder\ncallback.\n\n[ListWheelScrollView] lazily constructs its children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot have to be built until they are displayed.", "detail": "", "kind": 7, "label": "ListWheelChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTabBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled bottom navigation tab bar.\n\nDisplays multiple tabs using [BottomNavigationBarItem] with one tab being\nactive, the first tab by default.\n\nThis [StatelessWidget] doesn't store the active tab itself. You must\nlisten to the [onTap] callbacks and call `setState` with a new [currentIndex]\nfor the new selection to reflect. This can also be done automatically\nby wrapping this with a [CupertinoTabScaffold].\n\nTab changes typically trigger a switch between [Navigator]s, each with its\nown navigation stack, per standard iOS design. This can be done by using\n[CupertinoTabView]s inside each tab builder in [CupertinoTabScaffold].\n\nIf the given [backgroundColor]'s opacity is not 1.0 (which is the case by\ndefault), it will produce a blurring effect to the content behind it.\n\nSee also:\n\n * [CupertinoTabScaffold], which hosts the [CupertinoTabBar] at the bottom.\n * [BottomNavigationBarItem], an item in a [CupertinoTabBar].", "detail": "", "kind": 7, "label": "CupertinoTabBar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetLeave", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] leaves a [DragTarget].\n\nUsed by [DragTarget.onLeave].", "detail": "(T data) → void", "kind": 7, "label": "DragTargetLeave" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents the details when a specific pointer event occurred on\nthe [Draggable].\n\nThis includes the [Velocity] at which the pointer was moving and [Offset]\nwhen the draggable event occurred, and whether its [DragTarget] accepted it.\n\nAlso, this is the details object for callbacks that use [DragEndCallback].", "detail": "", "kind": 7, "label": "DraggableDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [MultiChildRenderObjectWidget] as its configuration.\n\nThis element subclass can be used for RenderObjectWidgets whose\nRenderObjects use the [ContainerRenderObjectMixin] mixin with a parent data\ntype that implements [ContainerParentDataMixin<RenderObject>]. Such widgets\nare expected to inherit from [MultiChildRenderObjectWidget].", "detail": "", "kind": 7, "label": "MultiChildRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Localizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the [Locale] for its `child` and the localized resources that the\nchild depends on.\n\nLocalized resources are loaded by the list of [LocalizationsDelegate]\n`delegates`. Each delegate is essentially a factory for a collection\nof localized resources. There are multiple delegates because there are\nmultiple sources for localizations within an app.\n\nDelegates are typically simple subclasses of [LocalizationsDelegate] that\noverride [LocalizationsDelegate.load]. For example a delegate for the\n`MyLocalizations` class defined below would be:\n\n```dart\nclass _MyDelegate extends LocalizationsDelegate<MyLocalizations> {\n @override\n Future<MyLocalizations> load(Locale locale) => MyLocalizations.load(locale);\n\n @override\n bool shouldReload(MyLocalizationsDelegate old) => false;\n}\n```\n\nEach delegate can be viewed as a factory for objects that encapsulate a\na set of localized resources. These objects are retrieved with\nby runtime type with [Localizations.of].\n\nThe [WidgetsApp] class creates a `Localizations` widget so most apps\nwill not need to create one. The widget app's `Localizations` delegates can\nbe initialized with [WidgetsApp.localizationsDelegates]. The [MaterialApp]\nclass also provides a `localizationsDelegates` parameter that's just\npassed along to the [WidgetsApp].\n\nApps should retrieve collections of localized resources with\n`Localizations.of<MyLocalizations>(context, MyLocalizations)`,\nwhere MyLocalizations is an app specific class defines one function per\nresource. This is conventionally done by a static `.of` method on the\nMyLocalizations class.\n\nFor example, using the `MyLocalizations` class defined below, one would\nlookup a localized title string like this:\n```dart\nMyLocalizations.of(context).title()\n```\nIf `Localizations` were to be rebuilt with a new `locale` then\nthe widget subtree that corresponds to [BuildContext] `context` would\nbe rebuilt after the corresponding resources had been loaded.\n\nThis class is effectively an [InheritedWidget]. If it's rebuilt with\na new `locale` or a different list of delegates or any of its\ndelegates' [LocalizationsDelegate.shouldReload()] methods returns true,\nthen widgets that have created a dependency by calling\n`Localizations.of(context)` will be rebuilt after the resources\nfor the new locale have been loaded.\n\n\nThis following class is defined in terms of the\n[Dart `intl` package](https://github.com/dart-lang/intl). Using the `intl`\npackage isn't required.\n\n```dart\nclass MyLocalizations {\n MyLocalizations(this.locale);\n\n final Locale locale;\n\n static Future<MyLocalizations> load(Locale locale) {\n return initializeMessages(locale.toString())\n .then((void _) {\n return MyLocalizations(locale);\n });\n }\n\n static MyLocalizations of(BuildContext context) {\n return Localizations.of<MyLocalizations>(context, MyLocalizations);\n }\n\n String title() => Intl.message('<title>', name: 'title', locale: locale.toString());\n // ... more Intl.message() methods like title()\n}\n```\nA class based on the `intl` package imports a generated message catalog that provides\nthe `initializeMessages()` function and the per-locale backing store for `Intl.message()`.\nThe message catalog is produced by an `intl` tool that analyzes the source code for\nclasses that contain `Intl.message()` calls. In this case that would just be the\n`MyLocalizations` class.\n\nOne could choose another approach for loading localized resources and looking them up while\nstill conforming to the structure of this example.", "detail": "", "kind": 7, "label": "Localizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableScrollableSheet", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container for a [Scrollable] that responds to drag gestures by resizing\nthe scrollable until a limit is reached, and then scrolling.\n\nThis widget can be dragged along the vertical axis between its\n[minChildSize], which defaults to `0.25` and [maxChildSize], which defaults\nto `1.0`. These sizes are percentages of the height of the parent container.\n\nThe widget coordinates resizing and scrolling of the widget returned by\nbuilder as the user drags along the horizontal axis.\n\nThe widget will initially be displayed at its initialChildSize which\ndefaults to `0.5`, meaning half the height of its parent. Dragging will work\nbetween the range of minChildSize and maxChildSize (as percentages of the\nparent container's height) as long as the builder creates a widget which\nuses the provided [ScrollController]. If the widget created by the\n[ScrollableWidgetBuilder] does not use provided [ScrollController], the\nsheet will remain at the initialChildSize.\n\n\nThis is a sample widget which shows a [ListView] that has 25 [ListTile]s.\nIt starts out as taking up half the body of the [Scaffold], and can be\ndragged up to the full height of the scaffold or down to 25% of the height\nof the scaffold. Upon reaching full height, the list contents will be\nscrolled up or down, until they reach the top of the list again and the user\ndrags the sheet back down.\n\n```dart\nclass HomePage extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: const Text('DraggableScrollableSheet'),\n ),\n body: SizedBox.expand(\n child: DraggableScrollableSheet(\n builder: (BuildContext context, ScrollController scrollController) {\n return Container(\n color: Colors.blue[100],\n child: ListView.builder(\n controller: scrollController,\n itemCount: 25,\n itemBuilder: (BuildContext context, int index) {\n return ListTile(title: Text('Item $index'));\n },\n ),\n );\n },\n ),\n ),\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "DraggableScrollableSheet" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedCrossFadeBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [AnimatedCrossFade.layoutBuilder] callback.\n\nThe `topChild` is the child fading in, which is normally drawn on top. The\n`bottomChild` is the child fading out, normally drawn on the bottom.\n\nFor good performance, the returned widget tree should contain both the\n`topChild` and the `bottomChild`; the depth of the tree, and the types of\nthe widgets in the tree, from the returned widget to each of the children\nshould be the same; and where there is a widget with multiple children, the\ntop child and the bottom child should be keyed using the provided\n`topChildKey` and `bottomChildKey` keys respectively.\n\n\n```dart\nWidget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) {\n return Stack(\n fit: StackFit.loose,\n children: <Widget>[\n Positioned(\n key: bottomChildKey,\n left: 0.0,\n top: 0.0,\n right: 0.0,\n child: bottomChild,\n ),\n Positioned(\n key: topChildKey,\n child: topChild,\n )\n ],\n );\n}\n```", "detail": "(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) → Widget", "kind": 7, "label": "AnimatedCrossFadeBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDialogAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A button typically used in a [CupertinoAlertDialog].\n\nSee also:\n\n * [CupertinoAlertDialog], a dialog that informs the user about situations\n that require acknowledgement.", "detail": "", "kind": 7, "label": "CupertinoDialogAction" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ControlsWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that creates a widget given the two callbacks `onStepContinue` and\n`onStepCancel`.\n\nUsed by [Stepper.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].", "detail": "(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) → Widget", "kind": 7, "label": "ControlsWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressStart].\n\nCalled when a pointer has remained in contact with the screen at the\nsame location for a long period of time. Also reports the long press down\nposition.", "detail": "(LongPressStartDetails details) → void", "kind": 7, "label": "GestureLongPressStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin used by routes to handle back navigations internally by popping a list.\n\nWhen a [Navigator] is instructed to pop, the current route is given an\nopportunity to handle the pop internally. A `LocalHistoryRoute` handles the\npop internally if its list of local history entries is non-empty. Rather\nthan being removed as the current route, the most recent [LocalHistoryEntry]\nis removed from the list and its [LocalHistoryEntry.onRemove] is called.", "detail": "", "kind": 7, "label": "LocalHistoryRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An element that lazily builds children for a [SliverMultiBoxAdaptorWidget].\n\nImplements [RenderSliverBoxChildManager], which lets this element manage\nthe children of subclasses of [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flex", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a one-dimensional array.\n\nThe [Flex] widget allows you to control the axis along which the children are\nplaced (horizontal or vertical). This is referred to as the _main axis_. If\nyou know the main axis in advance, then consider using a [Row] (if it's\nhorizontal) or [Column] (if it's vertical) instead, because that will be less\nverbose.\n\nTo cause a child to expand to fill the available space in the [direction]\nof this widget's main axis, wrap the child in an [Expanded] widget.\n\nThe [Flex] widget does not scroll (and in general it is considered an error\nto have more children in a [Flex] than will fit in the available room). If\nyou have some widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nIf you only have one child, then rather than using [Flex], [Row], or\n[Column], consider using [Align] or [Center] to position the child.\n\n## Layout algorithm\n\n_This section describes how a [Flex] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Flex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded main axis constraints and the incoming\n cross axis constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight cross axis constraints\n that match the incoming max extent in the cross axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of main axis space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [Flex] is the maximum cross axis extent of\n the children (which will always satisfy the incoming constraints).\n5. The main axis extent of the [Flex] is determined by the [mainAxisSize]\n property. If the [mainAxisSize] property is [MainAxisSize.max], then the\n main axis extent of the [Flex] is the max extent of the incoming main\n axis constraints. If the [mainAxisSize] property is [MainAxisSize.min],\n then the main axis extent of the [Flex] is the sum of the main axis\n extents of the children (subject to the incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a version of this widget that is always horizontal.\n * [Column], for a version of this widget that is always vertical.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n that may be sized smaller (leaving some remaining room unused).\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Flex" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExcludeSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that drops all the semantics of its descendants.\n\nWhen [excluding] is true, this widget (and its subtree) is excluded from\nthe semantics tree.\n\nThis can be used to hide descendant widgets that would otherwise be\nreported but that would only be confusing. For example, the\nmaterial library's [Chip] widget hides the avatar since it is\nredundant with the chip label.\n\nSee also:\n\n * [BlockSemantics] which drops semantics of widgets earlier in the tree.", "detail": "", "kind": 7, "label": "ExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollEndNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has stopped scrolling.\n\nSee also:\n\n * [ScrollStartNotification], which indicates that scrolling has started.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "ScrollEndNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoThumbPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints an iOS-style slider thumb.\n\nUsed by [CupertinoSwitch] and [CupertinoSlider].", "detail": "", "kind": 7, "label": "CupertinoThumbPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An [Element] that uses a [StatefulWidget] as its configuration.", "detail": "", "kind": 7, "label": "StatefulElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches Android.\n\nSee also:\n\n * [BouncingScrollSimulation], which implements iOS scroll physics.", "detail": "", "kind": 7, "label": "ClampingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragScrollActivity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The activity a scroll view performs when a the user drags their finger\nacross the screen.\n\nSee also:\n\n * [ScrollDragController], which listens to the [Drag] and actually scrolls\n the scroll view.", "detail": "", "kind": 7, "label": "DragScrollActivity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsFlutterBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A concrete binding for applications based on the Widgets framework.\n\nThis is the glue that binds the framework to the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Route", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstraction for an entry managed by a [Navigator].\n\nThis class defines an abstract interface between the navigator and the\n\"routes\" that are pushed on and popped off the navigator. Most routes have\nvisual affordances, which they place in the navigators [Overlay] using one\nor more [OverlayEntry] objects.\n\nSee [Navigator] for more explanation of how to use a Route\nwith navigation, including code examples.\n\nSee [MaterialPageRoute] for a route that replaces the\nentire screen with a platform-adaptive transition.", "detail": "", "kind": 7, "label": "Route" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragDownDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragDownCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onDown], which uses [GestureDragDownCallback].\n * [DragStartDetails], the details for [GestureDragStartCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragDownDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDragController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scrolls a scroll view as the user drags their finger across the screen.\n\nSee also:\n\n * [DragScrollActivity], which is the activity the scroll view performs\n while a drag is underway.", "detail": "", "kind": 7, "label": "ScrollDragController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexedStack", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Stack] that shows a single child from a list of children.\n\nThe displayed child is the one with the given [index]. The stack is\nalways as big as the largest child.\n\nIf value is null, then nothing is displayed.\n\nSee also:\n\n * [Stack], for more details about stacks.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Transform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that applies a transformation before painting its child.\n\n\n\nThis example rotates and skews an orange box containing text, keeping the\ntop right corner pinned to its original position.\n\n```dart\nContainer(\n color: Colors.black,\n child: Transform(\n alignment: Alignment.topRight,\n transform: Matrix4.skewY(0.3)..rotateZ(-math.pi / 12.0),\n child: Container(\n padding: const EdgeInsets.all(8.0),\n color: const Color(0xFFE8581C),\n child: const Text('Apartment for rent!'),\n ),\n ),\n)\n```\n\nSee also:\n\n * [RotatedBox], which rotates the child widget during layout, not just\n during painting.\n * [FractionalTranslation], which applies a translation to the child\n that is relative to the child's size.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.", "detail": "", "kind": 7, "label": "Transform" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysScrollableScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics that always lets the user scroll.\n\nOn Android, overscrolls will be clamped by default and result in an\noverscroll glow. On iOS, overscrolls will load a spring that will return\nthe scroll view to its normal range when released.\n\nSee also:\n\n * [ScrollPhysics], which can be used instead of this class when the default\n behavior is desired instead.\n * [BouncingScrollPhysics], which provides the bouncing overscroll behavior\n found on iOS.\n * [ClampingScrollPhysics], which provides the clamping overscroll behavior\n found on Android.", "detail": "", "kind": 7, "label": "AlwaysScrollableScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClampingScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that prevent the scroll offset from reaching\nbeyond the bounds of the content.\n\nThis is the behavior typically seen on Android.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on Android.\n * [BouncingScrollPhysics], which is the analogous physics for iOS' bouncing\n behavior.\n * [GlowingOverscrollIndicator], which is used by [ScrollConfiguration] to\n provide the glowing effect that is usually found with this clamping effect\n on Android. When using a [MaterialApp], the [GlowingOverscrollIndicator]'s\n glow color is specified to use [ThemeData.accentColor].", "detail": "", "kind": 7, "label": "ClampingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RichText", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A paragraph of rich text.\n\nThe [RichText] widget displays text that uses multiple different styles. The\ntext to display is described using a tree of [TextSpan] objects, each of\nwhich has an associated style that is used for that subtree. The text might\nbreak across multiple lines or might all be displayed on the same line\ndepending on the layout constraints.\n\nText displayed in a [RichText] widget must be explicitly styled. When\npicking which style to use, consider using [DefaultTextStyle.of] the current\n[BuildContext] to provide defaults. For more details on how to style text in\na [RichText] widget, see the documentation for [TextStyle].\n\nConsider using the [Text] widget to integrate with the [DefaultTextStyle]\nautomatically. When all the text uses the same style, the default constructor\nis less verbose. The [Text.rich] constructor allows you to style multiple\nspans with the default text style while still allowing specified styles per\nspan.\n\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Hello ',\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),\n TextSpan(text: ' world!'),\n ],\n ),\n)\n```\n\nSee also:\n\n * [TextStyle], which discusses how to style text.\n * [TextSpan], which is used to describe the text in a paragraph.\n * [Text], which automatically applies the ambient styles described by a\n [DefaultTextStyle] to a single string.", "detail": "", "kind": 7, "label": "RichText" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScope", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Establishes a scope in which widgets can receive focus.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nA focus scope does not itself receive focus but instead helps remember\nprevious focus states. A scope is currently active when its [node] is the\nfirst focus of its parent scope. To activate a [FocusScope], either use the\n[autofocus] property or explicitly make the [node] the first focus in the\nparent scope:\n\n```dart\nFocusScope.of(context).setFirstFocus(node);\n```\n\nIf a [FocusScope] is removed from the widget tree, then the previously\nfocused node will be focused, but only if the [node] is the same [node]\nobject as in the previous frame. To assure this, you can use a GlobalKey to\nkeep the [FocusScope] widget from being rebuilt from one frame to the next,\nor pass in the [node] from a parent that is not rebuilt. If there is no next\nsibling, then the parent scope node will be focused.\n\nSee also:\n\n * [FocusScopeNode], which is the associated node in the focus tree.\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.", "detail": "", "kind": 7, "label": "FocusScope" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Form", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An optional container for grouping together multiple form field widgets\n(e.g. [TextField] widgets).\n\nEach individual form field should be wrapped in a [FormField] widget, with\nthe [Form] widget as a common ancestor of all of those. Call methods on\n[FormState] to save, reset, or validate each [FormField] that is a\ndescendant of this [Form]. To obtain the [FormState], you may use [Form.of]\nwith a context whose ancestor is the [Form], or pass a [GlobalKey] to the\n[Form] constructor and call [GlobalKey.currentState].\n\nThis example shows a [Form] with one [TextFormField] and a [RaisedButton]. A\n[GlobalKey] is used here to identify the [Form] and validate input.\n\n```dart\nfinal _formKey = GlobalKey<FormState>();\n\n@override\nWidget build(BuildContext context) {\n return Form(\n key: _formKey,\n child: Column(\n crossAxisAlignment: CrossAxisAlignment.start,\n children: <Widget>[\n TextFormField(\n validator: (value) {\n if (value.isEmpty) {\n return 'Please enter some text';\n }\n },\n ),\n Padding(\n padding: const EdgeInsets.symmetric(vertical: 16.0),\n child: RaisedButton(\n onPressed: () {\n // Validate will return true if the form is valid, or false if\n // the form is invalid.\n if (_formKey.currentState.validate()) {\n // Process data.\n }\n },\n child: Text('Submit'),\n ),\n ),\n ],\n ),\n );\n}\n```\n\nSee also:\n\n * [GlobalKey], a key that is unique across the entire app.\n * [FormField], a single form field widget that maintains the current state.\n * [TextFormField], a convenience widget that wraps a [TextField] widget in a [FormField].", "detail": "", "kind": 7, "label": "Form" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4Tween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Matrix4]s.\n\nThis class specializes the interpolation of [Tween<Matrix4>] to be\nappropriate for transformation matrices.\n\nCurrently this class works only for translations.\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "Matrix4Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Table", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses the table layout algorithm for its children.\n\n\nIf you only have one row, the [Row] widget is more appropriate. If you only\nhave one column, the [SliverList] or [Column] widgets will be more\nappropriate.\n\nRows size vertically based on their contents. To control the column widths,\nuse the [columnWidths] property.\n\nFor more details about the table layout algorithm, see [RenderTable].\nTo control the alignment of children, see [TableCell].", "detail": "", "kind": 7, "label": "Table" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatelessWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that does not require mutable state.\n\nA stateless widget is a widget that describes part of the user interface by\nbuilding a constellation of other widgets that describe the user interface\nmore concretely. The building process continues recursively until the\ndescription of the user interface is fully concrete (e.g., consists\nentirely of [RenderObjectWidget]s, which describe concrete [RenderObject]s).\n\n\nStateless widget are useful when the part of the user interface you are\ndescribing does not depend on anything other than the configuration\ninformation in the object itself and the [BuildContext] in which the widget\nis inflated. For compositions that can change dynamically, e.g. due to\nhaving an internal clock-driven state, or depending on some system state,\nconsider using [StatefulWidget].\n\n## Performance considerations\n\nThe [build] method of a stateless widget is typically only called in three\nsituations: the first time the widget is inserted in the tree, when the\nwidget's parent changes its configuration, and when an [InheritedWidget] it\ndepends on changes.\n\nIf a widget's parent will regularly change the widget's configuration, or if\nit depends on inherited widgets that frequently change, then it is important\nto optimize the performance of the [build] method to maintain a fluid\nrendering performance.\n\nThere are several techniques one can use to minimize the impact of\nrebuilding a stateless widget:\n\n * Minimize the number of nodes transitively created by the build method and\n any widgets it creates. For example, instead of an elaborate arrangement\n of [Row]s, [Column]s, [Padding]s, and [SizedBox]es to position a single\n child in a particularly fancy manner, consider using just an [Align] or a\n [CustomSingleChildLayout]. Instead of an intricate layering of multiple\n [Container]s and with [Decoration]s to draw just the right graphical\n effect, consider a single [CustomPaint] widget.\n\n * Use `const` widgets where possible, and provide a `const` constructor for\n the widget so that users of the widget can also do so.\n\n * Consider refactoring the stateless widget into a stateful widget so that\n it can use some of the techniques described at [StatefulWidget], such as\n caching common parts of subtrees and using [GlobalKey]s when changing the\n tree structure.\n\n * If the widget is likely to get rebuilt frequently due to the use of\n [InheritedWidget]s, consider refactoring the stateless widget into\n multiple widgets, with the parts of the tree that change being pushed to\n the leaves. For example instead of building a tree with four widgets, the\n inner-most widget depending on the [Theme], consider factoring out the\n part of the build function that builds the inner-most widget into its own\n widget, so that only the inner-most widget needs to be rebuilt when the\n theme changes.\n\n\nThe following is a skeleton of a stateless widget subclass called `GreenFrog`.\n\nNormally, widgets have more constructor arguments, each of which corresponds\nto a `final` property.\n\n```dart\nclass GreenFrog extends StatelessWidget {\n const GreenFrog({ Key key }) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(color: const Color(0xFF2DBD3A));\n }\n}\n```\n\n\nThis next example shows the more generic widget `Frog` which can be given\na color and a child:\n\n```dart\nclass Frog extends StatelessWidget {\n const Frog({\n Key key,\n this.color = const Color(0xFF2DBD3A),\n this.child,\n }) : super(key: key);\n\n final Color color;\n final Widget child;\n\n @override\n Widget build(BuildContext context) {\n return Container(color: color, child: child);\n }\n}\n```\n\nBy convention, widget constructors only use named arguments. Named arguments\ncan be marked as required using [@required]. Also by convention, the first\nargument is [key], and the last argument is `child`, `children`, or the\nequivalent.\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [InheritedWidget], for widgets that introduce ambient state that can\n be read by descendant widgets.", "detail": "", "kind": 7, "label": "StatelessWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossFadeState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Specifies which of two children to show. See [AnimatedCrossFade].\n\nThe child that is shown will fade in, while the other will fade out.", "detail": "", "kind": 13, "label": "CrossFadeState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalObjectKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A global key that takes its identity from the object used as its value.\n\nUsed to tie the identity of a widget to the identity of an object used to\ngenerate that widget.\n\nIf the object is not private, then it is possible that collisions will occur\nwhere independent widgets will reuse the same object as their\n[GlobalObjectKey] value in a different part of the tree, leading to a global\nkey conflict. To avoid this problem, create a private [GlobalObjectKey]\nsubclass, as in:\n\n```dart\nclass _MyKey extends GlobalObjectKey {\n const _MyKey(Object value) : super(value);\n}\n```\n\nSince the [runtimeType] of the key is part of its identity, this will\nprevent clashes with other [GlobalObjectKey]s even if they have the same\nvalue.\n\nAny [GlobalObjectKey] created for the same value will match.", "detail": "", "kind": 7, "label": "GlobalObjectKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the default color, opacity, and size of icons in a widget subtree.\n\nThe icon theme is honored by [Icon] and [ImageIcon] widgets.", "detail": "", "kind": 7, "label": "IconTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyedSubtree", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that builds its child.\n\nUseful for attaching a key to an existing widget.", "detail": "", "kind": 7, "label": "KeyedSubtree" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Listener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that calls callbacks in response to pointer events.\n\nRather than listening for raw pointer events, consider listening for\nhigher-level gestures using [GestureDetector].\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nIf it has a child, this widget defers to the child for sizing behavior. If\nit does not have a child, it grows to fit the parent instead.\n\nThis example makes a [Container] react to being entered by a mouse\npointer, showing a count of the number of entries and exits.\n\n```dart\nimport 'package:flutter/gestures.dart';\n```\n\n```dart\nint _enterCounter = 0;\nint _exitCounter = 0;\ndouble x = 0.0;\ndouble y = 0.0;\n\nvoid _incrementCounter(PointerEnterEvent details) {\n setState(() {\n _enterCounter++;\n });\n}\n\nvoid _decrementCounter(PointerExitEvent details) {\n setState(() {\n _exitCounter++;\n });\n}\n\nvoid _updateLocation(PointerHoverEvent details) {\n setState(() {\n x = details.position.dx;\n y = details.position.dy;\n });\n}\n\n@override\nWidget build(BuildContext context) {\n return Center(\n child: ConstrainedBox(\n constraints: new BoxConstraints.tight(Size(300.0, 200.0)),\n child: Listener(\n onPointerEnter: _incrementCounter,\n onPointerHover: _updateLocation,\n onPointerExit: _decrementCounter,\n child: Container(\n color: Colors.lightBlueAccent,\n child: Column(\n mainAxisAlignment: MainAxisAlignment.center,\n children: <Widget>[\n Text('You have pointed at this box this many times:'),\n Text(\n '$_enterCounter Entries\\n$_exitCounter Exits',\n style: Theme.of(context).textTheme.display1,\n ),\n Text(\n 'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',\n ),\n ],\n ),\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [MouseTracker] an object that tracks mouse locations in the [GestureBinding].", "detail": "", "kind": 7, "label": "Listener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for [ListWheelScrollView].\n\n[ListWheelScrollView] lazily constructs its children during layout to avoid\ncreating more children than are visible through the [Viewport]. This\ndelegate is responsible for providing children to [ListWheelScrollView]\nduring that stage.\n\nSee also:\n\n * [ListWheelChildListDelegate], a delegate that supplies children using an\n explicit list.\n * [ListWheelChildLoopingListDelegate], a delegate that supplies infinite\n children by looping an explicit list.\n * [ListWheelChildBuilderDelegate], a delegate that supplies children using\n a builder callback.", "detail": "", "kind": 7, "label": "ListWheelChildDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WillPopScope", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Registers a callback to veto attempts by the user to dismiss the enclosing\n[ModalRoute].\n\nSee also:\n\n * [ModalRoute.addScopedWillPopCallback] and [ModalRoute.removeScopedWillPopCallback],\n which this widget uses to register and unregister [onWillPop].", "detail": "", "kind": 7, "label": "WillPopScope" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragTargetWillAccept", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for determining whether the given data will be accepted by a [DragTarget].\n\nUsed by [DragTarget.onWillAccept].", "detail": "(T data) → bool", "kind": 7, "label": "DragTargetWillAccept" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EditableTextState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "State for a [EditableText].", "detail": "", "kind": 7, "label": "EditableTextState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable list of widgets arranged linearly.\n\n[ListView] is the most commonly used scrolling widget. It displays its\nchildren one after another in the scroll direction. In the cross axis, the\nchildren are required to fill the [ListView].\n\nIf non-null, the [itemExtent] forces the children to have the given extent\nin the scroll direction. Specifying an [itemExtent] is more efficient than\nletting the children determine their own extent because the scrolling\nmachinery can make use of the foreknowledge of the children's extent to save\nwork, for example when the scroll position changes drastically.\n\nThere are four options for constructing a [ListView]:\n\n 1. The default constructor takes an explicit [List<Widget>] of children. This\n constructor is appropriate for list views with a small number of\n children because constructing the [List] requires doing work for every\n child that could possibly be displayed in the list view instead of just\n those children that are actually visible.\n\n 2. The [ListView.builder] constructor takes an [IndexedWidgetBuilder], which\n builds the children on demand. This constructor is appropriate for list views\n with a large (or infinite) number of children because the builder is called\n only for those children that are actually visible.\n\n 3. The [ListView.separated] constructor takes two [IndexedWidgetBuilder]s:\n `itemBuilder` builds child items on demand, and `separatorBuilder`\n similarly builds separator children which appear in between the child items.\n This constructor is appropriate for list views with a fixed number of children.\n\n 4. The [ListView.custom] constructor takes a [SliverChildDelegate], which provides\n the ability to customize additional aspects of the child model. For example,\n a [SliverChildDelegate] can control the algorithm used to estimate the\n size of children that are not actually visible.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nThis example uses the default constructor for [ListView] which takes an\nexplicit [List<Widget>] of children. This [ListView]'s children are made up\nof [Container]s with [Text].\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view.png)\n\n```dart\nListView(\n padding: const EdgeInsets.all(8.0),\n children: <Widget>[\n Container(\n height: 50,\n color: Colors.amber[600],\n child: const Center(child: Text('Entry A')),\n ),\n Container(\n height: 50,\n color: Colors.amber[500],\n child: const Center(child: Text('Entry B')),\n ),\n Container(\n height: 50,\n color: Colors.amber[100],\n child: const Center(child: Text('Entry C')),\n ),\n ],\n)\n```\n\nThis example mirrors the previous one, creating the same list using the\n[ListView.builder] constructor. Using the [IndexedWidgetBuilder], children\nare built lazily and can be infinite in number.\n\n![A ListView of 3 amber colored containers with sample text.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_builder.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.builder(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n }\n);\n```\n\nThis example continues to build from our the previous ones, creating a\nsimilar list using [ListView.separated]. Here, a [Divider] is used as a\nseparator.\n\n![A ListView of 3 amber colored containers with sample text and a Divider\nbetween each of them.](https://flutter.github.io/assets-for-api-docs/assets/widgets/list_view_separated.png)\n\n```dart\nfinal List<String> entries = <String>['A', 'B', 'C'];\nfinal List<int> colorCodes = <int>[600, 500, 100];\n\nListView.separated(\n padding: const EdgeInsets.all(8.0),\n itemCount: entries.length,\n itemBuilder: (BuildContext context, int index) {\n return Container(\n height: 50,\n color: Colors.amber[colorCodes[index]],\n child: Center(child: Text('Entry ${entries[index]}')),\n );\n },\n separatorBuilder: (BuildContext context, int index) => const Divider(),\n);\n```\n\n## Child elements' lifecycle\n\n### Creation\n\nWhile laying out the list, visible children's elements, states and render\nobjects will be created lazily based on existing widgets (such as when using\nthe default constructor) or lazily provided ones (such as when using the\n[ListView.builder] constructor).\n\n### Destruction\n\nWhen a child is scrolled out of view, the associated element subtree,\nstates and render objects are destroyed. A new child at the same position\nin the list will be lazily recreated along with new elements, states and\nrender objects when it is scrolled back.\n\n### Destruction mitigation\n\nIn order to preserve state as child elements are scrolled in and out of\nview, the following options are possible:\n\n * Moving the ownership of non-trivial UI-state-driving business logic\n out of the list child subtree. For instance, if a list contains posts\n with their number of upvotes coming from a cached network response, store\n the list of posts and upvote number in a data model outside the list. Let\n the list child UI subtree be easily recreate-able from the\n source-of-truth model object. Use [StatefulWidget]s in the child\n widget subtree to store instantaneous UI state only.\n\n * Letting [KeepAlive] be the root widget of the list child widget subtree\n that needs to be preserved. The [KeepAlive] widget marks the child\n subtree's top render object child for keep-alive. When the associated top\n render object is scrolled out of view, the list keeps the child's render\n object (and by extension, its associated elements and states) in a cache\n list instead of destroying them. When scrolled back into view, the render\n object is repainted as-is (if it wasn't marked dirty in the interim).\n\n This only works if [addAutomaticKeepAlives] and [addRepaintBoundaries]\n are false since those parameters cause the [ListView] to wrap each child\n widget subtree with other widgets.\n\n * Using [AutomaticKeepAlive] widgets (inserted by default when\n [addAutomaticKeepAlives] is true). Instead of unconditionally caching the\n child element subtree when scrolling off-screen like [KeepAlive],\n [AutomaticKeepAlive] can let whether to cache the subtree be determined\n by descendant logic in the subtree.\n\n As an example, the [EditableText] widget signals its list child element\n subtree to stay alive while its text field has input focus. If it doesn't\n have focus and no other descendants signaled for keep-alive via a\n [KeepAliveNotification], the list child element subtree will be destroyed\n when scrolled away.\n\n [AutomaticKeepAlive] descendants typically signal it to be kept alive\n by using the [AutomaticKeepAliveClientMixin], then implementing the\n [wantKeepAlive] getter and calling [updateKeepAlive].\n\n## Transitioning to [CustomScrollView]\n\nA [ListView] is basically a [CustomScrollView] with a single [SliverList] in\nits [CustomScrollView.slivers] property.\n\nIf [ListView] is no longer sufficient, for example because the scroll view\nis to have both a list and a grid, or because the list is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[ListView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [ListView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing either a\n[SliverList] or a [SliverFixedExtentList]; the former if [itemExtent] on the\n[ListView] was null, and the latter if [itemExtent] was not null.\n\nThe [childrenDelegate] property on [ListView] corresponds to the\n[SliverList.delegate] (or [SliverFixedExtentList.delegate]) property. The\n[new ListView] constructor's `children` argument corresponds to the\n[childrenDelegate] being a [SliverChildListDelegate] with that same\nargument. The [new ListView.builder] constructor's `itemBuilder` and\n`childCount` arguments correspond to the [childrenDelegate] being a\n[SliverChildBuilderDelegate] with the matching arguments.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the list itself, and having\nthe [SliverList] instead be a child of the [SliverPadding].\n\n[CustomScrollView]s don't automatically avoid obstructions from [MediaQuery]\nlike [ListView]s do. To reproduce the behavior, wrap the slivers in\n[SliverSafeArea]s.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [ListView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nListView(\n shrinkWrap: true,\n padding: const EdgeInsets.all(20.0),\n children: <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n shrinkWrap: true,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverList(\n delegate: SliverChildListDelegate(\n <Widget>[\n const Text('I\\'m dedicating every day to you'),\n const Text('Domestic life was never quite my style'),\n const Text('When you smile, you knock me out, I fall apart'),\n const Text('And I thought I was so smart'),\n ],\n ),\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is scrollable, 2D array of widgets.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [ListBody], which arranges its children in a similar manner, but without\n scrolling.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ListView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GridView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrollable, 2D array of widgets.\n\nThe main axis direction of a grid is the direction in which it scrolls (the\n[scrollDirection]).\n\nThe most commonly used grid layouts are [GridView.count], which creates a\nlayout with a fixed number of tiles in the cross axis, and\n[GridView.extent], which creates a layout with tiles that have a maximum\ncross-axis extent. A custom [SliverGridDelegate] can produce an arbitrary 2D\narrangement of children, including arrangements that are unaligned or\noverlapping.\n\nTo create a grid with a large (or infinite) number of children, use the\n[GridView.builder] constructor with either a\n[SliverGridDelegateWithFixedCrossAxisCount] or a\n[SliverGridDelegateWithMaxCrossAxisExtent] for the [gridDelegate].\n\nTo use a custom [SliverChildDelegate], use [GridView.custom].\n\nTo create a linear array of children, use a [ListView].\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\n## Transitioning to [CustomScrollView]\n\nA [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in\nits [CustomScrollView.slivers] property.\n\nIf [GridView] is no longer sufficient, for example because the scroll view\nis to have both a grid and a list, or because the grid is to be combined\nwith a [SliverAppBar], etc, it is straight-forward to port code from using\n[GridView] to using [CustomScrollView] directly.\n\nThe [key], [scrollDirection], [reverse], [controller], [primary], [physics],\nand [shrinkWrap] properties on [GridView] map directly to the identically\nnamed properties on [CustomScrollView].\n\nThe [CustomScrollView.slivers] property should be a list containing just a\n[SliverGrid].\n\nThe [childrenDelegate] property on [GridView] corresponds to the\n[SliverGrid.delegate] property, and the [gridDelegate] property on the\n[GridView] corresponds to the [SliverGrid.gridDelegate] property.\n\nThe [new GridView], [new GridView.count], and [new GridView.extent]\nconstructors' `children` arguments correspond to the [childrenDelegate]\nbeing a [SliverChildListDelegate] with that same argument. The [new\nGridView.builder] constructor's `itemBuilder` and `childCount` arguments\ncorrespond to the [childrenDelegate] being a [SliverChildBuilderDelegate]\nwith the matching arguments.\n\nThe [new GridView.count] and [new GridView.extent] constructors create\ncustom grid delegates, and have equivalently named constructors on\n[SliverGrid] to ease the transition: [new SliverGrid.count] and [new\nSliverGrid.extent] respectively.\n\nThe [padding] property corresponds to having a [SliverPadding] in the\n[CustomScrollView.slivers] property instead of the grid itself, and having\nthe [SliverGrid] instead be a child of the [SliverPadding].\n\nBy default, [ListView] will automatically pad the list's scrollable\nextremities to avoid partial obstructions indicated by [MediaQuery]'s\npadding. To avoid this behavior, override with a zero [padding] property.\n\nOnce code has been ported to use [CustomScrollView], other slivers, such as\n[SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers]\nlist.\n\n\nHere are two brief snippets showing a [GridView] and its equivalent using\n[CustomScrollView]:\n\n```dart\nGridView.count(\n primary: false,\n padding: const EdgeInsets.all(20.0),\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n)\n```\n\n```dart\nCustomScrollView(\n primary: false,\n slivers: <Widget>[\n SliverPadding(\n padding: const EdgeInsets.all(20.0),\n sliver: SliverGrid.count(\n crossAxisSpacing: 10.0,\n crossAxisCount: 2,\n children: <Widget>[\n const Text('He\\'d have you all unravel at the'),\n const Text('Heed not the rabble'),\n const Text('Sound of screams but the'),\n const Text('Who scream'),\n const Text('Revolution is coming...'),\n const Text('Revolution, they...'),\n ],\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ListView], which is scrollable, linear list of widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [CustomScrollView], which is a scrollable widget that creates custom\n scroll effects using slivers.\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "GridView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Opacity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.\n\n\n\nThis example shows some [Text] when the `_visible` member field is true, and\nhides it when it is false:\n\n```dart\nOpacity(\n opacity: _visible ? 1.0 : 0.0,\n child: const Text('Now you see me, now you don\\'t!'),\n)\n```\n\nThis is more efficient than adding and removing the child widget from the\ntree on demand.\n\n## Performance considerations for opacity animation\n\nAnimating an [Opacity] widget directly causes the widget (and possibly its\nsubtree) to rebuild each frame, which is not very efficient. Consider using\nan [AnimatedOpacity] instead.\n\n## Transparent image\n\nIf only a single [Image] or [Color] needs to be composited with an opacity\nbetween 0.0 and 1.0, it's much faster to directly use them without [Opacity]\nwidgets.\n\nFor example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much\nfaster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`.\n\n\nThe following example draws an [Image] with 0.5 opacity without using\n[Opacity]:\n\n```dart\nImage.network(\n 'https://raw.githubusercontent.com/flutter/assets-for-api-docs/master/packages/diagrams/assets/blend_mode_destination.jpeg',\n color: Color.fromRGBO(255, 255, 255, 0.5),\n colorBlendMode: BlendMode.modulate\n)\n```\n\n\nDirectly drawing an [Image] or [Color] with opacity is faster than using\n[Opacity] on top of them because [Opacity] could apply the opacity to a\ngroup of widgets and therefore a costly offscreen buffer will be used.\nDrawing content into the offscreen buffer may also trigger render target\nswitches and such switching is particularly slow in older GPUs.\n\nSee also:\n\n * [Visibility], which can hide a child more efficiently (albeit less\n subtly, because it is either visible or hidden, rather than allowing\n fractional opacity values).\n * [ShaderMask], which can apply more elaborate effects to its child.\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * [AnimatedOpacity], which uses an animation internally to efficiently\n animate opacity.\n * [FadeTransition], which uses a provided animation to efficiently animate\n opacity.\n * [Image], which can directly provide a partially transparent image with\n much less performance hit.", "detail": "", "kind": 7, "label": "Opacity" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollHoldController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for holding a [Scrollable] stationary.\n\nAn object that implements this interface is returned by\n[ScrollPosition.hold]. It holds the scrollable stationary until an activity\nis started or the [cancel] method is called.", "detail": "", "kind": 7, "label": "ScrollHoldController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragUpdateCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that is in contact with the screen and moving\nhas moved again.\n\nThe `details` object provides the position of the touch and the distance it\nhas travelled since the last update.\n\nSee [DragGestureRecognizer.onUpdate].", "detail": "(DragUpdateDetails details) → void", "kind": 7, "label": "GestureDragUpdateCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocaleResolutionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The signature of [WidgetsApp.localeResolutionCallback].\n\nIt is recommended to provide a [LocaleListResolutionCallback] instead of a\n[LocaleResolutionCallback] when possible, as [LocaleResolutionCallback] only\nreceives a subset of the information provided in [LocaleListResolutionCallback].\n\nA [LocaleResolutionCallback] is responsible for computing the locale of the app's\n[Localizations] object when the app starts and when user changes the default\nlocale for the device after [LocaleListResolutionCallback] fails or is not provided.\n\nThis callback is also used if the app is created with a specific locale using\nthe [new WidgetsApp] `locale` parameter.\n\nThe [locale] is either the value of [WidgetsApp.locale], or the device's default\nlocale when the app started, or the device locale the user selected after the app\nwas started. The default locale is the first locale in the list of preferred\nlocales. If [locale] is null, then Flutter has not yet received the locale\ninformation from the platform. The [supportedLocales] parameter is just the value of\n[WidgetsApp.supportedLocales].\n\nSee also:\n\n * [LocaleListResolutionCallback], which takes a list of preferred locales (instead of one locale).\n Resolutions by [LocaleListResolutionCallback] take precedence over [LocaleResolutionCallback].", "detail": "(Locale locale, Iterable<Locale> supportedLocales) → Locale", "kind": 7, "label": "LocaleResolutionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirectionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [Dismissible] to indicate that it has been dismissed in\nthe given `direction`.\n\nUsed by [Dismissible.onDismissed].", "detail": "(DismissDirection direction) → void", "kind": 7, "label": "DismissDirectionCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract widget for building widgets that gradually change their\nvalues over a period of time.\n\nSubclasses' States must provide a way to visit the subclass's relevant\nfields to animate. [ImplicitlyAnimatedWidget] will then automatically\ninterpolate and animate those fields using the provided duration and\ncurve when those fields change.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModalRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A route that blocks interaction with previous routes.\n\n[ModalRoute]s cover the entire [Navigator]. They are not necessarily\n[opaque], however; for example, a pop-up menu uses a [ModalRoute] but only\nshows the menu in a small box overlapping the previous route.\n\nThe `T` type argument is the return value of the route. If there is no\nreturn value, consider using `void` as the return value.", "detail": "", "kind": 7, "label": "ModalRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BorderRadius]s.\n\nThis class specializes the interpolation of [Tween<BorderRadius>] to use\n[BorderRadius.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderRadiusTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTextThemeData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Cupertino typography theme in a [CupertinoThemeData].", "detail": "", "kind": 7, "label": "CupertinoTextThemeData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for widgets that efficiently propagate information down the tree.\n\nTo obtain the nearest instance of a particular type of inherited widget from\na build context, use [BuildContext.inheritFromWidgetOfExactType].\n\nInherited widgets, when referenced in this way, will cause the consumer to\nrebuild when the inherited widget itself changes state.\n\n\n\nThe following is a skeleton of an inherited widget called `FrogColor`:\n\n```dart\nclass FrogColor extends InheritedWidget {\n const FrogColor({\n Key key,\n @required this.color,\n @required Widget child,\n }) : assert(color != null),\n assert(child != null),\n super(key: key, child: child);\n\n final Color color;\n\n static FrogColor of(BuildContext context) {\n return context.inheritFromWidgetOfExactType(FrogColor) as FrogColor;\n }\n\n @override\n bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n```\n\nThe convention is to provide a static method `of` on the [InheritedWidget]\nwhich does the call to [BuildContext.inheritFromWidgetOfExactType]. This\nallows the class to define its own fallback logic in case there isn't\na widget in scope. In the example above, the value returned will be\nnull in that case, but it could also have defaulted to a value.\n\nSometimes, the `of` method returns the data rather than the inherited\nwidget; for example, in this case it could have returned a [Color] instead\nof the `FrogColor` widget.\n\nOccasionally, the inherited widget is an implementation detail of another\nclass, and is therefore private. The `of` method in that case is typically\nput on the public class instead. For example, [Theme] is implemented as a\n[StatelessWidget] that builds a private inherited widget; [Theme.of] looks\nfor that inherited widget using [BuildContext.inheritFromWidgetOfExactType]\nand then returns the [ThemeData].\n\nSee also:\n\n * [StatefulWidget] and [State], for widgets that can build differently\n several times over their lifetime.\n * [StatelessWidget], for widgets that always build the same way given a\n particular configuration and ambient state.\n * [Widget], for an overview of widgets in general.\n * [InheritedNotifier], an inherited widget whose value can be a\n [Listenable], and which will notify dependents whenever the value\n sends notifications.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TargetPlatform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The platform that user interaction should adapt to target.\n\nThe [defaultTargetPlatform] getter returns the current platform.", "detail": "", "kind": 13, "label": "TargetPlatform" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressDraggable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child draggable starting from long press.", "detail": "", "kind": 7, "label": "LongPressDraggable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Icon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A graphical icon widget drawn with a glyph from a font described in\nan [IconData] such as material's predefined [IconData]s in [Icons].\n\nIcons are not interactive. For an interactive icon, consider material's\n[IconButton].\n\nThere must be an ambient [Directionality] widget when using [Icon].\nTypically this is introduced automatically by the [WidgetsApp] or\n[MaterialApp].\n\nThis widget assumes that the rendered icon is squared. Non-squared icons may\nrender incorrectly.\n\n\nThis example shows how to use [Icon] to create an addition icon, in the\ncolor pink, and 30 x 30 pixels in size.\n\n```dart\nIcon(\n Icons.add,\n color: Colors.pink,\n size: 30.0,\n)\n```\n\nSee also:\n\n * [IconButton], for interactive icons.\n * [Icons], for the list of available icons for use with this class.\n * [IconTheme], which provides ambient configuration for icons.\n * [ImageIcon], for showing icons from [AssetImage]s or other [ImageProvider]s.", "detail": "", "kind": 7, "label": "Icon" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedWidgetBaseState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations that need to rebuild their\nwidget tree as the animation runs.\n\nThis class calls [build] each frame that the animation tickets. For a\nvariant that does not rebuild each frame, consider subclassing\n[ImplicitlyAnimatedWidgetState] directly.\n\nSubclasses must implement the [forEachTween] method to allow\n[AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields\nand animate them.", "detail": "", "kind": 7, "label": "AnimatedWidgetBaseState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoutePopDisposition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates whether the current route should be popped.\n\nUsed as the return value for [Route.willPop].\n\nSee also:\n\n * [WillPopScope], a widget that hooks into the route's [Route.willPop]\n mechanism.", "detail": "", "kind": 13, "label": "RoutePopDisposition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A scrolling container that animates items when they are inserted or removed.\n\nThis widget's [AnimatedListState] can be used to dynamically insert or remove\nitems. To refer to the [AnimatedListState] either provide a [GlobalKey] or\nuse the static [of] method from an item's input callback.\n\nThis widget is similar to one created by [ListView.builder].", "detail": "", "kind": 7, "label": "AnimatedList" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapUpCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that will trigger a tap has stopped contacting\nthe screen.\n\nThe position at which the pointer stopped contacting the screen is available\nin the `details`.\n\nSee also:\n\n * [GestureDetector.onTapUp], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapUpDetails details) → void", "kind": 7, "label": "GestureTapUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDatePicker", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A date picker widget in iOS style.\n\nThere are several modes of the date picker listed in [CupertinoDatePickerMode].\n\nThe class will display its children as consecutive columns. Its children\norder is based on internationalization.\n\nExample of the picker in date mode:\n\n * US-English: [July | 13 | 2012]\n * Vietnamese: [13 | Tháng 7 | 2012]\n\nSee also:\n\n * [CupertinoTimerPicker], the class that implements the iOS-style timer picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 7, "label": "CupertinoDatePicker" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraintsTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [BoxConstraints].\n\nThis class specializes the interpolation of [Tween<BoxConstraints>] to use\n[BoxConstraints.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BoxConstraintsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureLongPressUpCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Callback signature for [LongPressGestureRecognizer.onLongPressUp].\n\nCalled when a pointer stops contacting the screen after a long press\ngesture was detected.", "detail": "() → void", "kind": 7, "label": "GestureLongPressUpCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsApp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience class that wraps a number of widgets that are commonly\nrequired for an application.\n\nOne of the primary roles that [WidgetsApp] provides is binding the system\nback button to popping the [Navigator] or quitting the application.\n\nSee also: [CheckedModeBanner], [DefaultTextStyle], [MediaQuery],\n[Localizations], [Title], [Navigator], [Overlay], [SemanticsDebugger] (the\nwidgets wrapped by this one).", "detail": "", "kind": 7, "label": "WidgetsApp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedExtentScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for scroll views whose items have the same size.\n\nSimilar to a standard [ScrollController] but with the added convenience\nmechanisms to read and go to item indices rather than a raw pixel scroll\noffset.\n\nSee also:\n\n * [ListWheelScrollView], a scrollable view widget with fixed size items\n that this widget controls.\n * [FixedExtentMetrics], the `metrics` property exposed by\n [ScrollNotification] from [ListWheelScrollView] which can be used\n to listen to the current item index on a push basis rather than polling\n the [FixedExtentScrollController].", "detail": "", "kind": 7, "label": "FixedExtentScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays an image.\n\nSeveral constructors are provided for the various ways that an image can be\nspecified:\n\n * [new Image], for obtaining an image from an [ImageProvider].\n * [new Image.asset], for obtaining an image from an [AssetBundle]\n using a key.\n * [new Image.network], for obtaining an image from a URL.\n * [new Image.file], for obtaining an image from a [File].\n * [new Image.memory], for obtaining an image from a [Uint8List].\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\nTo automatically perform pixel-density-aware asset resolution, specify the\nimage using an [AssetImage] and make sure that a [MaterialApp], [WidgetsApp],\nor [MediaQuery] widget exists above the [Image] widget in the widget tree.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.\n\nSee also:\n\n * [Icon], which shows an image from a font.\n * [new Ink.image], which is the preferred way to show an image in a\n material application (especially if the image is in a [Material] and will\n have an [InkWell] on top of it).\n * [Image](https://api.flutter.dev/flutter/dart-ui/Image-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverOverlapAbsorber", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[SliverOverlapInjector].\n\nSee also:\n\n * [NestedScrollView], whose documentation has sample code showing how to\n use this widget.", "detail": "", "kind": 7, "label": "SliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPadding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that applies padding on each side of another sliver.\n\nSlivers are special-purpose widgets that can be combined using a\n[CustomScrollView] to create custom scroll effects. A [SliverPadding]\nis a basic sliver that insets another sliver by applying padding on each\nside.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a [SliverPersistentHeader] with\n`pinned:true` will cause the app bar to overlap earlier slivers (contrary to\nthe normal behavior of pinned app bars), and while the app bar is pinned,\nthe padding will scroll away.\n\nSee also:\n\n * [CustomScrollView], which displays a scrollable list of slivers.", "detail": "", "kind": 7, "label": "SliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ObstructingPreferredSizeWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Widget that has a preferred size and reports whether it fully obstructs\nwidgets behind it.\n\nUsed by [CupertinoPageScaffold] to either shift away fully obstructed content\nor provide a padding guide to partially obstructed content.", "detail": "", "kind": 7, "label": "ObstructingPreferredSizeWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransitionBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A builder that builds a widget given a child.\n\nThe child should typically be part of the returned widget tree.\n\nUsed by [AnimatedBuilder.builder], as well as [WidgetsApp.builder] and\n[MaterialApp.builder].\n\nSee also:\n\n * [WidgetBuilder], which is similar but only takes a [BuildContext].\n * [IndexedWidgetBuilder], which is similar but also takes an index.\n * [ValueWidgetBuilder], which is similar but takes a value and a child.", "detail": "(BuildContext context, Widget child) → Widget", "kind": 7, "label": "TransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Viewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside.\n\n[Viewport] is the visual workhorse of the scrolling machinery. It displays a\nsubset of its children according to its own dimensions and the given\n[offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[Viewport] hosts a bidirectional list of slivers, anchored on a [center]\nsliver, which is placed at the zero scroll offset. The center widget is\ndisplayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[Viewport] cannot contain box children directly. Instead, use a\n[SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [Viewport] into widgets that are easier to use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [ShrinkWrappingViewport], a variant of [Viewport] that shrink-wraps its\n contents along the main axis.", "detail": "", "kind": 7, "label": "Viewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget representing a physical layer that clips its children to a shape.\n\nPhysical layers cast shadows based on an [elevation] which is nominally in\nlogical pixels, coming vertically out of the rendering surface.\n\nFor shapes that cannot be expressed as a rectangle with rounded corners use\n[PhysicalShape].\n\nSee also:\n\n * [DecoratedBox], which can apply more arbitrary shadow effects.\n * [ClipRect], which applies a clip to its child.", "detail": "", "kind": 7, "label": "PhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tolerance", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Structure that specifies maximum allowable magnitudes for distances,\ndurations, and velocity differences to be considered equal.", "detail": "", "kind": 7, "label": "Tolerance" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureScaleStartCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when the pointers in contact with the screen have established\na focal point and initial scale of 1.0.", "detail": "(ScaleStartDetails details) → void", "kind": 7, "label": "GestureScaleStartCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Baseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that positions its child according to the child's baseline.\n\nThis widget shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child. If [baseline] is less than the distance from\nthe top of the child to the baseline of the child, then the child\nis top-aligned instead.\n\nSee also:\n\n * [Align], a widget that aligns its child within itself and optionally\n sizes itself based on the child's size.\n * [Center], a widget that centers its child within itself.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Baseline" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IconData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of an icon fulfilled by a font glyph.\n\nSee [Icons] for a number of predefined icons available for material\ndesign applications.", "detail": "", "kind": 7, "label": "IconData" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollSimulation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An implementation of scroll physics that matches iOS.\n\nSee also:\n\n * [ClampingScrollSimulation], which implements Android scroll physics.", "detail": "", "kind": 7, "label": "BouncingScrollSimulation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverFillRemaining", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[SliverFillRemaining] sizes its child to fill the viewport in the cross axis\nand to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [SliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [SliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "SliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DraggableCanceledCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a [Draggable] is dropped without being accepted by a [DragTarget].\n\nUsed by [Draggable.onDraggableCanceled].", "detail": "(Velocity velocity, Offset offset) → void", "kind": 7, "label": "DraggableCanceledCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShrinkWrappingViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that is bigger on the inside and shrink wraps its children in the\nmain axis.\n\n[ShrinkWrappingViewport] displays a subset of its children according to its\nown dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[ShrinkWrappingViewport] differs from [Viewport] in that [Viewport] expands\nto fill the main axis whereas [ShrinkWrappingViewport] sizes itself to match\nits children in the main axis. This shrink wrapping behavior is expensive\nbecause the children, and hence the viewport, could potentially change size\nwhenever the [offset] changes (e.g., because of a collapsing header).\n\n[ShrinkWrappingViewport] cannot contain box children directly. Instead, use\na [SliverList], [SliverFixedExtentList], [SliverGrid], or a\n[SliverToBoxAdapter], for example.\n\nSee also:\n\n * [ListView], [PageView], [GridView], and [CustomScrollView], which combine\n [Scrollable] and [ShrinkWrappingViewport] into widgets that are easier to\n use.\n * [SliverToBoxAdapter], which allows a box widget to be placed inside a\n sliver context (the opposite of this widget).\n * [Viewport], a viewport that does not shrink-wrap its contents.", "detail": "", "kind": 7, "label": "ShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrackingScrollController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [ScrollController] whose [initialScrollOffset] tracks its most recently\nupdated [ScrollPosition].\n\nThis class can be used to synchronize the scroll offset of two or more\nlazily created scroll views that share a single [TrackingScrollController].\nIt tracks the most recently updated scroll position and reports it as its\n`initialScrollOffset`.\n\n\nIn this example each [PageView] page contains a [ListView] and all three\n[ListView]'s share a [TrackingScrollController]. The scroll offsets of all\nthree list views will track each other, to the extent that's possible given\nthe different list lengths.\n\n```dart\nPageView(\n children: <Widget>[\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),\n ),\n ListView(\n controller: _trackingScrollController,\n children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),\n ),\n ],\n)\n```\n\nIn this example the `_trackingController` would have been created by the\nstateful widget that built the widget tree.", "detail": "", "kind": 7, "label": "TrackingScrollController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for stateful widgets that have exactly one inflated instance in\nthe tree.\n\nSuch widgets must be given a [GlobalKey]. This key can be generated by the\nsubclass from its [Type] object, e.g. by calling `super(key: new\nGlobalObjectKey(MyWidget))` where `MyWidget` is the name of the subclass.\n\nSince only one instance can be inflated at a time, there is only ever one\ncorresponding [State] object. That object is exposed, for convenience, via\nthe [currentState] property.\n\nWhen subclassing [UniqueWidget], provide the corresponding [State] subclass\nas the type argument.", "detail": "", "kind": 7, "label": "UniqueWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\nScrollable widgets consist of three pieces:\n\n 1. A [Scrollable] widget, which listens for various user gestures and\n implements the interaction design for scrolling.\n 2. A viewport widget, such as [Viewport] or [ShrinkWrappingViewport], which\n implements the visual design for scrolling by displaying only a portion\n of the widgets inside the scroll view.\n 3. One or more slivers, which are widgets that can be composed to created\n various scrolling effects, such as lists, grids, and expanding headers.\n\n[ScrollView] helps orchestrate these pieces by creating the [Scrollable] and\nthe viewport and deferring to its subclass to create the slivers.\n\nTo control the initial scroll offset of the scroll view, provide a\n[controller] with its [ScrollController.initialScrollOffset] property set.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "ScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedModalBarrier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that prevents the user from interacting with widgets behind itself,\nand can be configured with an animated color value.\n\nThe modal barrier is the scrim that is rendered behind each route, which\ngenerally prevents the user from interacting with the route below the\ncurrent route, and normally partially obscures such routes.\n\nFor example, when a dialog is on the screen, the page below the dialog is\nusually darkened by the modal barrier.\n\nThis widget is similar to [ModalBarrier] except that it takes an animated\n[color] instead of a single color.\n\nSee also:\n\n * [ModalRoute], which uses this widget.", "detail": "", "kind": 7, "label": "AnimatedModalBarrier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPaint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [CustomPaint] first asks its [painter] to paint on the\ncurrent canvas, then it paints its child, and then, after painting its\nchild, it asks its [foregroundPainter] to paint. The coordinate system of the\ncanvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing [CustomPainter].\n\n\nBecause custom paint calls its painters during paint, you cannot call\n`setState` or `markNeedsLayout` during the callback (the layout for this\nframe has already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [size], which defaults to\n[Size.zero]. [size] must not be null.\n\n[isComplex] and [willChange] are hints to the compositor's raster cache\nand must not be null.\n\n\nThis example shows how the sample custom painter shown at [CustomPainter]\ncould be used in a [CustomPaint] widget to display a background to some\ntext.\n\n```dart\nCustomPaint(\n painter: Sky(),\n child: Center(\n child: Text(\n 'Once upon a time...',\n style: const TextStyle(\n fontSize: 40.0,\n fontWeight: FontWeight.w900,\n color: Color(0xFFFFFFFF),\n ),\n ),\n ),\n)\n```\n\nSee also:\n\n * [CustomPainter], the class to extend when creating custom painters.\n * [Canvas], the class that a custom painter uses to paint.", "detail": "", "kind": 7, "label": "CustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicHeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Element that supports building children lazily for [ListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureForcePressPeakCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature used by [ForcePressGestureRecognizer] for when a pointer that has\npressed with at least [ForcePressGestureRecognizer.peakPressure].", "detail": "(ForcePressDetails details) → void", "kind": 7, "label": "GestureForcePressPeakCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RotatedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that rotates its child by a integral number of quarter turns.\n\nUnlike [Transform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.\n\n\nThis snippet rotates the child (some [Text]) so that it renders from bottom\nto top, like an axis label on a graph:\n\n```dart\nRotatedBox(\n quarterTurns: 3,\n child: const Text('Hello World!'),\n)\n```\n\nSee also:\n\n * [Transform], which is a paint effect that allows you to apply an\n arbitrary transform to a child.\n * [new Transform.rotate], which applies a rotation paint effect.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "RotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapInjector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that has a sliver geometry based on the values stored in a\n[SliverOverlapAbsorberHandle].\n\nThe [RenderSliverOverlapAbsorber] must be an earlier descendant of a common\nancestor [RenderViewport] (probably a [RenderNestedScrollViewViewport]), so\nthat it will always be laid out before the [RenderSliverOverlapInjector]\nduring a particular frame.", "detail": "", "kind": 7, "label": "RenderSliverOverlapInjector" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleStartCallback].", "detail": "", "kind": 7, "label": "ScaleStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteFactory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a route for the given route settings.\n\nUsed by [Navigator.onGenerateRoute] and [Navigator.onUnknownRoute].", "detail": "(RouteSettings settings) → Route<dynamic>", "kind": 7, "label": "RouteFactory" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPath", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that clips its child using a path.\n\nCalls a callback on a delegate whenever the widget is to be\npainted. The callback returns a path and the widget prevents the\nchild from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized widgets:\n\n * To clip to a rectangle, consider [ClipRect].\n * To clip to an oval or circle, consider [ClipOval].\n * To clip to a rounded rectangle, consider [ClipRRect].\n\nTo clip to a particular [ShapeBorder], consider using either the\n[ClipPath.shape] static method or the [ShapeBorderClipper] custom clipper\nclass.", "detail": "", "kind": 7, "label": "ClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayVisibilityMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Visibility of text field overlays based on the state of the current text entry.\n\nUsed to toggle the visibility behavior of the optional decorating widgets\nsurrounding the [EditableText] such as the clear text button.", "detail": "", "kind": 13, "label": "OverlayVisibilityMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormField", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single form field.\n\nThis widget maintains the current state of the form field, so that updates\nand validation errors are visually reflected in the UI.\n\nWhen used inside a [Form], you can use methods on [FormState] to query or\nmanipulate the form data as a whole. For example, calling [FormState.save]\nwill invoke each [FormField]'s [onSaved] callback in turn.\n\nUse a [GlobalKey] with [FormField] if you want to retrieve its current\nstate, for example if you want one form field to depend on another.\n\nA [Form] ancestor is not required. The [Form] simply makes it easier to\nsave, reset, or validate multiple fields at once. To use without a [Form],\npass a [GlobalKey] to the constructor and use [GlobalKey.currentState] to\nsave or reset the form field.\n\nSee also:\n\n * [Form], which is the widget that aggregates the form fields.\n * [TextField], which is a commonly used form field for entering text.", "detail": "", "kind": 7, "label": "FormField" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WidgetsBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the widgets layer and the Flutter engine.", "detail": "", "kind": 7, "label": "WidgetsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImplicitlyAnimatedWidgetState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for widgets with implicit animations.\n\n[ImplicitlyAnimatedWidgetState] requires that subclasses respond to the\nanimation, themselves. If you would like `setState()` to be called\nautomatically as the animation changes, use [AnimatedWidgetBaseState].\n\nSubclasses must implement the [forEachTween] method to allow\n[ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's\nfields and animate them.", "detail": "", "kind": 7, "label": "ImplicitlyAnimatedWidgetState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteTransitionsBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the function that builds a route's transitions.\nUsed in [PageRouteBuilder] and [showGeneralDialog].\n\nSee [ModalRoute.buildTransitions] for complete definition of the parameters.", "detail": "(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) → Widget", "kind": 7, "label": "RouteTransitionsBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusManager", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the focus tree.\n\nThe focus tree keeps track of which [FocusNode] is the user's current\nkeyboard focus. The widget that owns the [FocusNode] often listens for\nkeyboard events.\n\nThe focus manager is responsible for holding the [FocusScopeNode] that is\nthe root of the focus tree and tracking which [FocusNode] has the overall\nfocus.\n\nThe [FocusManager] is held by the [WidgetsBinding] as\n[WidgetsBinding.focusManager]. The [FocusManager] is rarely accessed\ndirectly. Instead, to find the [FocusScopeNode] for a given [BuildContext],\nuse [FocusScope.of].\n\nThe [FocusManager] knows nothing about [FocusNode]s other than the one that\nis currently focused. If a [FocusScopeNode] is removed, then the\n[FocusManager] will attempt to focus the next [FocusScopeNode] in the focus\ntree that it maintains, but if the current focus in that [FocusScopeNode] is\nnull, it will stop there, and no [FocusNode] will have focus.\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScopeNode], which is an interior node in the focus tree.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].", "detail": "", "kind": 7, "label": "FocusManager" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragDownCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer has contacted the screen and might begin to\nmove.\n\nThe `details` object provides the position of the touch.\n\nSee [DragGestureRecognizer.onDown].", "detail": "(DragDownDetails details) → void", "kind": 7, "label": "GestureDragDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for [PageView].\n\nA page controller lets you manipulate which page is visible in a [PageView].\nIn addition to being able to control the pixel offset of the content inside\nthe [PageView], a [PageController] also lets you control the offset in terms\nof pages, which are increments of the viewport size.\n\nSee also:\n\n * [PageView], which is the widget this object controls.", "detail": "", "kind": 7, "label": "PageController" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables or disables tickers (and thus animation controllers) in the widget\nsubtree.\n\nThis only works if [AnimationController] objects are created using\nwidget-aware ticker providers. For example, using a\n[TickerProviderStateMixin] or a [SingleTickerProviderStateMixin].", "detail": "", "kind": 7, "label": "TickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GlobalKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is unique across the entire app.\n\nGlobal keys uniquely identify elements. Global keys provide access to other\nobjects that are associated with elements, such as the a [BuildContext] and,\nfor [StatefulWidget]s, a [State].\n\nWidgets that have global keys reparent their subtrees when they are moved\nfrom one location in the tree to another location in the tree. In order to\nreparent its subtree, a widget must arrive at its new location in the tree\nin the same animation frame in which it was removed from its old location in\nthe tree.\n\nGlobal keys are relatively expensive. If you don't need any of the features\nlisted above, consider using a [Key], [ValueKey], [ObjectKey], or\n[UniqueKey] instead.\n\nYou cannot simultaneously include two widgets in the tree with the same\nglobal key. Attempting to do so will assert at runtime.\n\nSee also the discussion at [Widget.key].", "detail": "", "kind": 7, "label": "GlobalKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoDatePickerMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different display modes of [CupertinoDatePicker].\n\nSee also:\n\n * [CupertinoDatePicker], the class that implements different display modes\n of the iOS-style date picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 13, "label": "CupertinoDatePickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Column", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in a vertical array.\n\nTo cause a child to expand to fill the available vertical space, wrap the\nchild in an [Expanded] widget.\n\nThe [Column] widget does not scroll (and in general it is considered an error\nto have more children in a [Column] than will fit in the available room). If\nyou have a line of widgets and want them to be able to scroll if there is\ninsufficient room, consider using a [ListView].\n\nFor a horizontal variant, see [Row].\n\nIf you only have one child, then consider using [Align] or [Center] to\nposition the child.\n\n\nThis example uses a [Column] to arrange three widgets vertically, the last\nbeing made to fill all the remaining space.\n\n```dart\nColumn(\n children: <Widget>[\n Text('Deliver features faster'),\n Text('Craft beautiful UIs'),\n Expanded(\n child: FittedBox(\n fit: BoxFit.contain, // otherwise the logo will be tiny\n child: const FlutterLogo(),\n ),\n ),\n ],\n)\n```\n\nIn the sample above, the text and the logo are centered on each line. In the\nfollowing example, the [crossAxisAlignment] is set to\n[CrossAxisAlignment.start], so that the children are left-aligned. The\n[mainAxisSize] is set to [MainAxisSize.min], so that the column shrinks to\nfit the children.\n\n```dart\nColumn(\n crossAxisAlignment: CrossAxisAlignment.start,\n mainAxisSize: MainAxisSize.min,\n children: <Widget>[\n Text('We move under cover and we move as one'),\n Text('Through the night, we have one shot to live another day'),\n Text('We cannot let a stray gunshot give us away'),\n Text('We will fight up close, seize the moment and stay in it'),\n Text('It’s either that or meet the business end of a bayonet'),\n Text('The code word is ‘Rochambeau,’ dig me?'),\n Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),\n ],\n)\n```\n\n## Troubleshooting\n\n### When the incoming vertical constraints are unbounded\n\nWhen a [Column] has one or more [Expanded] or [Flexible] children, and is\nplaced in another [Column], or in a [ListView], or in some other context\nthat does not provide a maximum height constraint for the [Column], you will\nget an exception at runtime saying that there are children with non-zero\nflex but the vertical constraints are unbounded.\n\nThe problem, as described in the details that accompany that exception, is\nthat using [Flexible] or [Expanded] means that the remaining space after\nlaying out all the other children must be shared equally, but if the\nincoming vertical constraints are unbounded, there is infinite remaining\nspace.\n\nThe key to solving this problem is usually to determine why the [Column] is\nreceiving unbounded vertical constraints.\n\nOne common reason for this to happen is that the [Column] has been placed in\nanother [Column] (without using [Expanded] or [Flexible] around the inner\nnested [Column]). When a [Column] lays out its non-flex children (those that\nhave neither [Expanded] or [Flexible] around them), it gives them unbounded\nconstraints so that they can determine their own dimensions (passing\nunbounded constraints usually signals to the child that it should\nshrink-wrap its contents). The solution in this case is typically to just\nwrap the inner column in an [Expanded] to indicate that it should take the\nremaining space of the outer column, rather than being allowed to take any\namount of room it desires.\n\nAnother reason for this message to be displayed is nesting a [Column] inside\na [ListView] or other vertical scrollable. In that scenario, there really is\ninfinite vertical space (the whole point of a vertical scrolling list is to\nallow infinite space vertically). In such scenarios, it is usually worth\nexamining why the inner [Column] should have an [Expanded] or [Flexible]\nchild: what size should the inner children really be? The solution in this\ncase is typically to remove the [Expanded] or [Flexible] widgets from around\nthe inner children.\n\nFor more discussion about constraints, see [BoxConstraints].\n\n### The yellow and black striped banner\n\nWhen the contents of a [Column] exceed the amount of space available, the\n[Column] overflows, and the contents are clipped. In debug mode, a yellow\nand black striped bar is rendered at the overflowing edge to indicate the\nproblem, and a message is printed below the [Column] saying how much\noverflow was detected.\n\nThe usual solution is to use a [ListView] rather than a [Column], to enable\nthe contents to scroll when vertical space is limited.\n\n## Layout algorithm\n\n_This section describes how a [Column] is rendered by the framework._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [Column] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor (e.g., those that are not\n [Expanded]) with unbounded vertical constraints and the incoming\n horizontal constraints. If the [crossAxisAlignment] is\n [CrossAxisAlignment.stretch], instead use tight horizontal constraints\n that match the incoming max width.\n2. Divide the remaining vertical space among the children with non-zero\n flex factors (e.g., those that are [Expanded]) according to their flex\n factor. For example, a child with a flex factor of 2.0 will receive twice\n the amount of vertical space as a child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same horizontal\n constraints as in step 1, but instead of using unbounded vertical\n constraints, use vertical constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The width of the [Column] is the maximum width of the children (which\n will always satisfy the incoming horizontal constraints).\n5. The height of the [Column] is determined by the [mainAxisSize] property.\n If the [mainAxisSize] property is [MainAxisSize.max], then the height of\n the [Column] is the max height of the incoming constraints. If the\n [mainAxisSize] property is [MainAxisSize.min], then the height of the\n [Column] is the sum of heights of the children (subject to the incoming\n constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any vertical\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Row], for a horizontal equivalent.\n * [Flex], if you don't know in advance if you want a horizontal or vertical\n arrangement.\n * [Expanded], to indicate children that should take all the remaining room.\n * [Flexible], to indicate children that should share the remaining room but\n that may size smaller (leaving some remaining room unused).\n * [SingleChildScrollView], whose documentation discusses some ways to\n use a [Column] inside a scrolling container.\n * [Spacer], a widget that takes up space proportional to it's flex value.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Column" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAlive", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mark a child as needing to stay alive even when it's in a lazy list that\nwould otherwise remove it.\n\nThis widget is for use in [SliverWithKeepAliveWidget]s, such as\n[SliverGrid] or [SliverList].\n\nThis widget is rarely used directly. The [SliverChildBuilderDelegate] and\n[SliverChildListDelegate] delegates, used with [SliverList] and\n[SliverGrid], as well as the scroll view counterparts [ListView] and\n[GridView], have an `addAutomaticKeepAlives` feature, which is enabled by\ndefault, and which causes [AutomaticKeepAlive] widgets to be inserted around\neach child, causing [KeepAlive] widgets to be automatically added and\nconfigured in response to [KeepAliveNotification]s.\n\nTherefore, to keep a widget alive, it is more common to use those\nnotifications than to directly deal with [KeepAlive] widgets.\n\nIn practice, the simplest way to deal with these notifications is to mix\n[AutomaticKeepAliveClientMixin] into one's [State]. See the documentation\nfor that mixin class for details.", "detail": "", "kind": 7, "label": "KeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BouncingScrollPhysics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scroll physics for environments that allow the scroll offset to go beyond\nthe bounds of the content, but then bounce the content back to the edge of\nthose bounds.\n\nThis is the behavior typically seen on iOS.\n\nSee also:\n\n * [ScrollConfiguration], which uses this to provide the default\n scroll behavior on iOS.\n * [ClampingScrollPhysics], which is the analogous physics for Android's\n clamping behavior.", "detail": "", "kind": 7, "label": "BouncingScrollPhysics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageStorageBucket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A storage bucket associated with a page in an app.\n\nUseful for storing per-page state that persists across navigations from one\npage to another.", "detail": "", "kind": 7, "label": "PageStorageBucket" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Semantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that annotates the widget tree with a description of the meaning of\nthe widgets.\n\nUsed by accessibility tools, search engines, and other semantic analysis\nsoftware to determine the meaning of the application.\n\nSee also:\n\n * [MergeSemantics], which marks a subtree as being a single node for\n accessibility purposes.\n * [ExcludeSemantics], which excludes a subtree from the semantics tree\n (which might be useful if it is, e.g., totally decorative and not\n important to the user).\n * [RenderObject.semanticsAnnotator], the rendering library API through which\n the [Semantics] widget is actually implemented.\n * [SemanticsNode], the object used by the rendering library to represent\n semantics in the semantics tree.\n * [SemanticsDebugger], an overlay to help visualize the semantics tree. Can\n be enabled using [WidgetsApp.showSemanticsDebugger] or\n [MaterialApp.showSemanticsDebugger].", "detail": "", "kind": 7, "label": "Semantics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Draggable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that can be dragged from to a [DragTarget].\n\nWhen a draggable widget recognizes the start of a drag gesture, it displays\na [feedback] widget that tracks the user's finger across the screen. If the\nuser lifts their finger while on top of a [DragTarget], that target is given\nthe opportunity to accept the [data] carried by the draggable.\n\nOn multitouch devices, multiple drags can occur simultaneously because there\ncan be multiple pointers in contact with the device at once. To limit the\nnumber of simultaneous drags, use the [maxSimultaneousDrags] property. The\ndefault is to allow an unlimited number of simultaneous drags.\n\nThis widget displays [child] when zero drags are under way. If\n[childWhenDragging] is non-null, this widget instead displays\n[childWhenDragging] when one or more drags are underway. Otherwise, this\nwidget always displays [child].\n\nSee also:\n\n * [DragTarget]\n * [LongPressDraggable]", "detail": "", "kind": 7, "label": "Draggable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DismissDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a [Dismissible] can be dismissed.", "detail": "", "kind": 13, "label": "DismissDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Positioned", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that controls where a child of a [Stack] is positioned.\n\nA [Positioned] widget must be a descendant of a [Stack], and the path from\nthe [Positioned] widget to its enclosing [Stack] must contain only\n[StatelessWidget]s or [StatefulWidget]s (not other kinds of widgets, like\n[RenderObjectWidget]s).\n\n\nIf a widget is wrapped in a [Positioned], then it is a _positioned_ widget\nin its [Stack]. If the [top] property is non-null, the top edge of this child\nwill be positioned [top] layout units from the top of the stack widget. The\n[right], [bottom], and [left] properties work analogously.\n\nIf both the [top] and [bottom] properties are non-null, then the child will\nbe forced to have exactly the height required to satisfy both constraints.\nSimilarly, setting the [right] and [left] properties to non-null values will\nforce the child to have a particular width. Alternatively the [width] and\n[height] properties can be used to give the dimensions, with one\ncorresponding position property (e.g. [top] and [height]).\n\nIf all three values on a particular axis are null, then the\n[Stack.alignment] property is used to position the child.\n\nIf all six values are null, the child is a non-positioned child. The [Stack]\nuses only the non-positioned children to size itself.\n\nSee also:\n\n * [PositionedDirectional], which adapts to the ambient [Directionality].", "detail": "", "kind": 7, "label": "Positioned" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTimerPickerMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different modes of [CupertinoTimerPicker].\n\nSee also:\n\n * [CupertinoTimerPicker], the class that implements the iOS-style timer picker.\n * [CupertinoPicker], the class that implements a content agnostic spinner UI.", "detail": "", "kind": 13, "label": "CupertinoTimerPickerMode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UniqueKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A key that is only equal to itself.", "detail": "", "kind": 7, "label": "UniqueKey" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionallySizedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to a fraction of the total available space.\nFor more details about the layout algorithm, see\n[RenderFractionallySizedOverflowBox].\n\nSee also:\n\n * [Align], which sizes itself based on its child's size and positions\n the child according to an [Alignment] value.\n * [OverflowBox], a widget that imposes different constraints on its child\n than it gets from its parent, possibly allowing the child to overflow the\n parent.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FractionallySizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScaleUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for [GestureScaleUpdateCallback].", "detail": "", "kind": 7, "label": "ScaleUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FocusScopeNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interior node in the focus tree.\n\nThe focus tree keeps track of which widget is the user's current focus. The\nfocused widget often listens for keyboard events.\n\nThe interior nodes in the focus tree cannot themselves be focused but\ninstead remember previous focus states. A scope is currently active in its\nparent whenever [isFirstFocus] is true. If that scope is detached from its\nparent, its previous sibling becomes the parent's first focus.\n\nA [FocusNode] has the overall focus when the node is focused in its\nparent [FocusScopeNode] and [FocusScopeNode.isFirstFocus] is true for\nthat scope and all its ancestor scopes.\n\nIf a [FocusScopeNode] is removed, then the next sibling node will be set as\nthe focused node by the [FocusManager].\n\nSee also:\n\n * [FocusNode], which is a leaf node in the focus tree that can receive\n focus.\n * [FocusScope.of], which provides the [FocusScopeNode] for a given\n [BuildContext].\n * [FocusScope], which is a widget that associates a [FocusScopeNode] with\n its location in the tree.", "detail": "", "kind": 7, "label": "FocusScopeNode" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticKeepAlive", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows subtrees to request to be kept alive in lazy lists.\n\nThis widget is like [KeepAlive] but instead of being explicitly configured,\nit listens to [KeepAliveNotification] messages from the [child] and other\ndescendants.\n\nThe subtree is kept alive whenever there is one or more descendant that has\nsent a [KeepAliveNotification] and not yet triggered its\n[KeepAliveNotification.handle].\n\nTo send these notifications, consider using [AutomaticKeepAliveClientMixin].", "detail": "", "kind": 7, "label": "AutomaticKeepAlive" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverOverlapAbsorber", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that wraps another, forcing its layout extent to be treated as\noverlap.\n\nThe difference between the overlap requested by the [child] sliver and the\noverlap reported by this widget, called the _absorbed overlap_, is reported\nto the [SliverOverlapAbsorberHandle], which is typically passed to a\n[RenderSliverOverlapInjector].", "detail": "", "kind": 7, "label": "RenderSliverOverlapAbsorber" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureDragEndCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that was previously in contact with the screen\nand moving is no longer in contact with the screen.\n\nThe velocity at which the pointer was moving when it stopped contacting\nthe screen is available in the `details`.\n\nSee [DragGestureRecognizer.onEnd].", "detail": "(DragEndDetails details) → void", "kind": 7, "label": "GestureDragEndCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometryTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsetsGeometry]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsetsGeometry>] to\nuse [EdgeInsetsGeometry.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsTween], which interpolates between two [EdgeInsets] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryInitializer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for closures that implement [GestureRecognizerFactory.initializer].", "detail": "(T instance) → void", "kind": 7, "label": "GestureRecognizerFactoryInitializer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPersistentHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver whose size varies when the sliver is scrolled to the leading edge\nof the viewport.\n\nThis is the layout primitive that [SliverAppBar] uses for its\nshrinking/growing effect.", "detail": "", "kind": 7, "label": "SliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoAlertDialog", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-style alert dialog.\n\nAn alert dialog informs the user about situations that require\nacknowledgement. An alert dialog has an optional title, optional content,\nand an optional list of actions. The title is displayed above the content\nand the actions are displayed below the content.\n\nThis dialog styles its title and content (typically a message) to match the\nstandard iOS title and message dialog text style. These default styles can\nbe overridden by explicitly defining [TextStyle]s for [Text] widgets that\nare part of the title or content.\n\nTo display action buttons that look like standard iOS dialog buttons,\nprovide [CupertinoDialogAction]s for the [actions] given to this dialog.\n\nTypically passed as the child widget to [showDialog], which displays the\ndialog.\n\nSee also:\n\n * [CupertinoPopupSurface], which is a generic iOS-style popup surface that\n holds arbitrary content to create custom popups.\n * [CupertinoDialogAction], which is an iOS-style dialog button.\n * [AlertDialog], a Material Design alert dialog.\n * <https://developer.apple.com/ios/human-interface-guidelines/views/alerts/>", "detail": "", "kind": 7, "label": "CupertinoAlertDialog" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectToWidgetElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RootRenderObjectElement] that is hosted by a [RenderObject].\n\nThis element class is the instantiation of a [RenderObjectToWidgetAdapter]\nwidget. It can be used only as the root of an [Element] tree (it cannot be\nmounted into another [Element]; it's parent must be null).\n\nIn typical usage, it will be instantiated for a [RenderObjectToWidgetAdapter]\nwhose container is the [RenderView] that connects to the Flutter engine. In\nthis usage, it is normally instantiated by the bootstrapping logic in the\n[WidgetsFlutterBinding] singleton created by [runApp].", "detail": "", "kind": 7, "label": "RenderObjectToWidgetElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Wrap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that displays its children in multiple horizontal or vertical runs.\n\nA [Wrap] lays out each child and attempts to place the child adjacent to the\nprevious child in the main axis, given by [direction], leaving [spacing]\nspace in between. If there is not enough space to fit the child, [Wrap]\ncreates a new _run_ adjacent to the existing children in the cross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].\n\n\n\nThis example renders some [Chip]s representing four contacts in a [Wrap] so\nthat they flow across lines as necessary.\n\n```dart\nWrap(\n spacing: 8.0, // gap between adjacent chips\n runSpacing: 4.0, // gap between lines\n children: <Widget>[\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('AH')),\n label: Text('Hamilton'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('ML')),\n label: Text('Lafayette'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('HM')),\n label: Text('Mulligan'),\n ),\n Chip(\n avatar: CircleAvatar(backgroundColor: Colors.blue.shade900, child: Text('JL')),\n label: Text('Laurens'),\n ),\n ],\n)\n```\n\nSee also:\n\n * [Row], which places children in one line, and gives control over their\n alignment and spacing.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Wrap" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InheritedNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An inherited widget for a [Listenable] [notifier], which updates its\ndependencies when the [notifier] is triggered.\n\nThis is a variant of [InheritedWidget], specialized for subclasses of\n[Listenable], such as [ChangeNotifier] or [ValueNotifier].\n\nDependents are notified whenever the [notifier] sends notifications, or\nwhenever the identity of the [notifier] changes.\n\nMultiple notifications are coalesced, so that dependents only rebuild once\neven if the [notifier] fires multiple times between two frames.\n\nTypically this class is subclassed with a class that provides an `of` static\nmethod that calls [BuildContext.inheritFromWidgetOfExactType] with that\nclass.\n\nThe [updateShouldNotify] method may also be overridden, to change the logic\nin the cases where [notifier] itself is changed. The [updateShouldNotify]\nmethod is called with the old [notifier] in the case of the [notifier] being\nchanged. When it returns true, the dependents are marked as needing to be\nrebuilt this frame.\n\nSee also:\n\n * [Animation], an implementation of [Listenable] that ticks each frame to\n update a value.\n * [ViewportOffset] or its subclass [ScrollPosition], implementations of\n [Listenable] that trigger when a view is scrolled.\n * [InheritedWidget], an inherited widget that only notifies dependents\n when its value is different.\n * [InheritedModel], an inherited widget that allows clients to subscribe\n to changes for subparts of the value.", "detail": "", "kind": 7, "label": "InheritedNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedScrollMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable snapshot of values associated with a [Scrollable] viewport.\n\nFor details, see [ScrollMetrics], which defines this object's interfaces.", "detail": "", "kind": 7, "label": "FixedScrollMetrics" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Padding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.\n\n\nThis snippet indents the child (a [Card] with some [Text]) by eight pixels\nin each direction:\n\n```dart\nPadding(\n padding: EdgeInsets.all(8.0),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\n## Design discussion\n\n### Why use a [Padding] widget rather than a [Container] with a [Container.padding] property?\n\nThere isn't really any difference between the two. If you supply a\n[Container.padding] argument, [Container] simply builds a [Padding] widget\nfor you.\n\n[Container] doesn't implement its properties directly. Instead, [Container]\ncombines a number of simpler widgets together into a convenient package. For\nexample, the [Container.padding] property causes the container to build a\n[Padding] widget and the [Container.decoration] property causes the\ncontainer to build a [DecoratedBox] widget. If you find [Container]\nconvenient, feel free to use it. If not, feel free to build these simpler\nwidgets in whatever combination meets your needs.\n\nIn fact, the majority of widgets in Flutter are simply combinations of other\nsimpler widgets. Composition, rather than inheritance, is the primary\nmechanism for building up widgets.\n\nSee also:\n\n * [EdgeInsets], the class that is used to describe the padding dimensions.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Padding" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StatefulWidgetBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [StatefulBuilder].\n\nCall [setState] to schedule the [StatefulBuilder] to rebuild.", "detail": "(BuildContext context, StateSetter setState) → Widget", "kind": 7, "label": "StatefulWidgetBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverChildBuilderDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that supplies children for slivers using a builder callback.\n\nMany slivers lazily construct their box children to avoid creating more\nchildren than are visible through the [Viewport]. This delegate provides\nchildren using an [IndexedWidgetBuilder] callback, so that the children do\nnot even have to be built until they are displayed.\n\nThe widgets returned from the builder callback are automatically wrapped in\n[AutomaticKeepAlive] widgets if [addAutomaticKeepAlives] is true (the\ndefault) and in [RepaintBoundary] widgets if [addRepaintBoundaries] is true\n(also the default).\n\n## Accessibility\n\nThe [CustomScrollView] requires that its semantic children are annotated\nusing [IndexedSemantics]. This is done by default in the delegate with\nthe `addSemanticIndexes` parameter set to true.\n\nIf multiple delegates are used in a single scroll view, then the indexes\nwill not be correct by default. The `semanticIndexOffset` can be used to\noffset the semantic indexes of each delegate so that the indexes are\nmonotonically increasing. For example, if a scroll view contains two\ndelegates where the first has 10 children contributing semantics, then the\nsecond delegate should offset its children by 10.\n\n\nThis sample code shows how to use `semanticIndexOffset` to handle multiple\ndelegates in a single scroll view.\n\n```dart\nCustomScrollView(\n semanticChildCount: 4,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n ),\n ),\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n return Text('...');\n },\n childCount: 2,\n semanticIndexOffset: 2,\n ),\n ),\n ],\n)\n```\n\nIn certain cases, only a subset of child widgets should be annotated\nwith a semantic index. For example, in [new ListView.separated()] the\nseparators do not have an index associated with them. This is done by\nproviding a `semanticIndexCallback` which returns null for separators\nindexes and rounds the non-separator indexes down by half.\n\n\nThis sample code shows how to use `semanticIndexCallback` to handle\nannotating a subset of child nodes with a semantic index. There is\na [Spacer] widget at odd indexes which should not have a semantic\nindex.\n\n```dart\nCustomScrollView(\n semanticChildCount: 5,\n slivers: <Widget>[\n SliverGrid(\n gridDelegate: _gridDelegate,\n delegate: SliverChildBuilderDelegate(\n (BuildContext context, int index) {\n if (index.isEven) {\n return Text('...');\n }\n return Spacer();\n },\n semanticIndexCallback: (Widget widget, int localIndex) {\n if (localIndex.isEven) {\n return localIndex ~/ 2;\n }\n return null;\n },\n childCount: 10,\n ),\n ),\n ],\n)\n```\n\nSee also:\n\n * [SliverChildListDelegate], which is a delegate that has an explicit list\n of children.\n * [IndexedSemantics], for an example of manually annotating child nodes\n with semantic indexes.", "detail": "", "kind": 7, "label": "SliverChildBuilderDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelScrollView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box in which children on a wheel can be scrolled.\n\nThis widget is similar to a [ListView] but with the restriction that all\nchildren must be the same size along the scrolling axis.\n\nWhen the list is at the zero scroll offset, the first child is aligned with\nthe middle of the viewport. When the list is at the final scroll offset,\nthe last child is aligned with the middle of the viewport\n\nThe children are rendered as if rotating on a wheel instead of scrolling on\na plane.", "detail": "", "kind": 7, "label": "ListWheelScrollView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTabScaffold", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements a tabbed iOS application's root layout and behavior structure.\n\nThe scaffold lays out the tab bar at the bottom and the content between or\nbehind the tab bar.\n\nA [tabBar] and a [tabBuilder] are required. The [CupertinoTabScaffold]\nwill automatically listen to the provided [CupertinoTabBar]'s tap callbacks\nto change the active tab.\n\nTabs' contents are built with the provided [tabBuilder] at the active\ntab index. The [tabBuilder] must be able to build the same number of\npages as there are [tabBar.items]. Inactive tabs will be moved [Offstage]\nand their animations disabled.\n\nUse [CupertinoTabView] as the root widget of each tab to support tabs with\nparallel navigation state and history. Since each [CupertinoTabView] contains\na [Navigator], rebuilding the [CupertinoTabView] with a different\n[WidgetBuilder] instance in [CupertinoTabView.builder] will not recreate\nthe [CupertinoTabView]'s navigation stack or update its UI. To update the\ncontents of the [CupertinoTabView] after it's built, trigger a rebuild\n(via [State.setState], for instance) from its descendant rather than from\nits ancestor.\n\n\nA sample code implementing a typical iOS information architecture with tabs.\n\n```dart\nCupertinoTabScaffold(\n tabBar: CupertinoTabBar(\n items: <BottomNavigationBarItem> [\n // ...\n ],\n ),\n tabBuilder: (BuildContext context, int index) {\n return CupertinoTabView(\n builder: (BuildContext context) {\n return CupertinoPageScaffold(\n navigationBar: CupertinoNavigationBar(\n middle: Text('Page 1 of tab $index'),\n ),\n child: Center(\n child: CupertinoButton(\n child: const Text('Next page'),\n onPressed: () {\n Navigator.of(context).push(\n CupertinoPageRoute<void>(\n builder: (BuildContext context) {\n return CupertinoPageScaffold(\n navigationBar: CupertinoNavigationBar(\n middle: Text('Page 2 of tab $index'),\n ),\n child: Center(\n child: CupertinoButton(\n child: const Text('Back'),\n onPressed: () { Navigator.of(context).pop(); },\n ),\n ),\n );\n },\n ),\n );\n },\n ),\n ),\n );\n },\n );\n },\n)\n```\n\nTo push a route above all tabs instead of inside the currently selected one\n(such as when showing a dialog on top of this scaffold), use\n`Navigator.of(rootNavigator: true)` from inside the [BuildContext] of a\n[CupertinoTabView].\n\nSee also:\n\n * [CupertinoTabBar], the bottom tab bar inserted in the scaffold.\n * [CupertinoTabView], the typical root content of each tab that holds its own\n [Navigator] stack.\n * [CupertinoPageRoute], a route hosting modal pages with iOS style transitions.\n * [CupertinoPageScaffold], typical contents of an iOS modal page implementing\n layout with a navigation bar on top.", "detail": "", "kind": 7, "label": "CupertinoTabScaffold" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedContainer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A container that gradually changes its values over a period of time.\n\nThe [AnimatedContainer] will automatically animate between the old and\nnew values of properties when they change using the provided curve and\nduration. Properties that are null are not animated. Its child and\ndescendants are not animated.\n\nThis class is useful for generating simple implicit transitions between\ndifferent parameters to [Container] with its internal [AnimationController].\nFor more complex animations, you'll likely want to use a subclass of\n[AnimatedWidget] such as the [DecoratedBoxTransition] or use your own\n[AnimationController].\n\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPadding], which is a subset of this widget that only\n supports animating the [padding].\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).\n * [AnimatedPositioned], which, as a child of a [Stack], automatically\n transitions its child's position over a given duration whenever the given\n position changes.\n * [AnimatedAlign], which automatically transitions its child's\n position over a given duration whenever the given [alignment] changes.\n * [AnimatedSwitcher], which switches out a child for a new one with a customizable transition.\n * [AnimatedCrossFade], which fades between two children and interpolates their sizes.", "detail": "", "kind": 7, "label": "AnimatedContainer" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverscrollNotification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A notification that a [Scrollable] widget has not changed its scroll position\nbecause the change would have caused its scroll position to go outside of\nits scroll bounds.\n\nSee also:\n\n * [ScrollUpdateNotification], which indicates that a [Scrollable] widget\n has changed its scroll position.\n * [ScrollNotification], which describes the notification lifecycle.", "detail": "", "kind": 7, "label": "OverscrollNotification" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRouteBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A utility class for defining one-off page routes in terms of callbacks.\n\nCallers must define the [pageBuilder] function which creates the route's\nprimary contents. To add transitions define the [transitionsBuilder] function.", "detail": "", "kind": 7, "label": "PageRouteBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTheme", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a visual styling theme to descendant Cupertino widgets.\n\nAffects the color and text styles of Cupertino widgets whose styling\nare not overridden when constructing the respective widgets instances.\n\nDescendant widgets can retrieve the current [CupertinoThemeData] by calling\n[CupertinoTheme.of]. An [InheritedWidget] dependency is created when\nan ancestor [CupertinoThemeData] is retrieved via [CupertinoTheme.of].\n\nThe [CupertinoTheme] widget implies an [IconTheme] widget, whose\n[IconTheme.data] has the same color as [CupertinoThemeData.primaryColor]\n\nSee also:\n\n * [CupertinoThemeData], specifies the theme's visual styling.\n * [CupertinoApp], which will automatically add a [CupertinoTheme].\n * [Theme], a Material theme which will automatically add a [CupertinoTheme]\n with a [CupertinoThemeData] derived from the Material [ThemeData].", "detail": "", "kind": 7, "label": "CupertinoTheme" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RouteSettings", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data that might be useful in constructing a [Route].", "detail": "", "kind": 7, "label": "RouteSettings" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A box with a specified size.\n\nIf given a child, this widget forces its child to have a specific width\nand/or height (assuming values are permitted by this widget's parent). If\neither the width or height is null, this widget will size itself to match\nthe child's size in that dimension.\n\nIf not given a child, this widget will size itself to the given width and\nheight, treating nulls as zero.\n\nThe [new SizedBox.expand] constructor can be used to make a [SizedBox] that\nsizes itself to fit the parent. It is equivalent to setting [width] and\n[height] to [double.infinity].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) have the\nexact size 200x300, parental constraints permitting:\n\n```dart\nSizedBox(\n width: 200.0,\n height: 300.0,\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nSee also:\n\n * [ConstrainedBox], a more generic version of this class that takes\n arbitrary [BoxConstraints] instead of an explicit width and height.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [FractionallySizedBox], a widget that sizes its child to a fraction of\n the total available space.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * [FittedBox], which sizes and positions its child widget to fit the parent\n according to a given [BoxFit] discipline.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "SizedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedSwitcherTransitionBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for builders used to generate custom transitions for\n[AnimatedSwitcher].\n\nThe `child` should be transitioning in when the `animation` is running in\nthe forward direction.\n\nThe function should return a widget which wraps the given `child`. It may\nalso use the `animation` to inform its transition. It must not return null.", "detail": "(Widget child, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedSwitcherTransitionBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].\n\n\nSee also:\n\n * [Transform], which applies an arbitrary transform to its child widget at\n paint time.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "FittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DragStartDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details object for callbacks that use [GestureDragStartCallback].\n\nSee also:\n\n * [DragGestureRecognizer.onStart], which uses [GestureDragStartCallback].\n * [DragDownDetails], the details for [GestureDragDownCallback].\n * [DragUpdateDetails], the details for [GestureDragUpdateCallback].\n * [DragEndDetails], the details for [GestureDragEndCallback].", "detail": "", "kind": 7, "label": "DragStartDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedPositioned", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Animated version of [Positioned] which automatically transitions the child's\nposition over a given duration whenever the given position changes.\n\nOnly works if it's the child of a [Stack].\n\nThis widget is a good choice if the _size_ of the child would end up\nchanging as a result of this animation. If the size is intended to remain\nthe same, with only the _position_ changing over time, then consider\n[SlideTransition] instead. [SlideTransition] only triggers a repaint each\nframe of the animation, whereas [AnimatedPositioned] will trigger a relayout\nas well.\n\nHere's an illustration of what using this widget looks like, using a [curve]\nof [Curves.fastOutSlowIn].\n\nSee also:\n\n * [AnimatedPositionedDirectional], which adapts to the ambient\n [Directionality] (the same as this widget, but for animating\n [PositionedDirectional]).", "detail": "", "kind": 7, "label": "AnimatedPositioned" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressMoveUpdateDetails", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Details for callbacks that use [GestureLongPressMoveUpdateCallback].\n\nSee also:\n\n * [LongPressGestureRecognizer.onLongPressMoveUpdate], which uses [GestureLongPressMoveUpdateCallback].\n * [LongPressEndDetails], the details for [GestureLongPressEndCallback]\n * [LongPressStartDetails], the details for [GestureLongPressStartCallback].", "detail": "", "kind": 7, "label": "LongPressMoveUpdateDetails" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Container", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A convenience widget that combines common painting, positioning, and sizing\nwidgets.\n\nA container first surrounds the child with [padding] (inflated by any\nborders present in the [decoration]) and then applies additional\n[constraints] to the padded extent (incorporating the `width` and `height`\nas constraints, if either is non-null). The container is then surrounded by\nadditional empty space described from the [margin].\n\nDuring painting, the container first applies the given [transform], then\npaints the [decoration] to fill the padded extent, then it paints the child,\nand finally paints the [foregroundDecoration], also filling the padded\nextent.\n\nContainers with no children try to be as big as possible unless the incoming\nconstraints are unbounded, in which case they try to be as small as\npossible. Containers with children size themselves to their children. The\n`width`, `height`, and [constraints] arguments to the constructor override\nthis.\n\n## Layout behavior\n\n_See [BoxConstraints] for an introduction to box layout models._\n\nSince [Container] combines a number of other widgets each with their own\nlayout behavior, [Container]'s layout behavior is somewhat complicated.\n\nSummary: [Container] tries, in order: to honor [alignment], to size itself\nto the [child], to honor the `width`, `height`, and [constraints], to expand\nto fit the parent, to be as small as possible.\n\nMore specifically:\n\nIf the widget has no child, no `height`, no `width`, no [constraints],\nand the parent provides unbounded constraints, then [Container] tries to\nsize as small as possible.\n\nIf the widget has no child and no [alignment], but a `height`, `width`, or\n[constraints] are provided, then the [Container] tries to be as small as\npossible given the combination of those constraints and the parent's\nconstraints.\n\nIf the widget has no child, no `height`, no `width`, no [constraints], and\nno [alignment], but the parent provides bounded constraints, then\n[Container] expands to fit the constraints provided by the parent.\n\nIf the widget has an [alignment], and the parent provides unbounded\nconstraints, then the [Container] tries to size itself around the child.\n\nIf the widget has an [alignment], and the parent provides bounded\nconstraints, then the [Container] tries to expand to fit the parent, and\nthen positions the child within itself as per the [alignment].\n\nOtherwise, the widget has a [child] but no `height`, no `width`, no\n[constraints], and no [alignment], and the [Container] passes the\nconstraints from the parent to the child and sizes itself to match the\nchild.\n\nThe [margin] and [padding] properties also affect the layout, as described\nin the documentation for those properties. (Their effects merely augment the\nrules described above.) The [decoration] can implicitly increase the\n[padding] (e.g. borders in a [BoxDecoration] contribute to the [padding]);\nsee [Decoration.padding].\n\nThis example shows a 48x48 amber square (placed inside a [Center] widget in\ncase the parent widget has its own opinions regarding the size that the\n[Container] should take), with a margin so that it stays away from\nneighboring widgets:\n\n![An amber colored container with the dimensions of 48 square pixels.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_a.png)\n\n```dart\nCenter(\n child: Container(\n margin: const EdgeInsets.all(10.0),\n color: Colors.amber[600],\n width: 48.0,\n height: 48.0,\n ),\n)\n```\n\n\nThis example shows how to use many of the features of [Container] at once.\nThe [constraints] are set to fit the font size plus ample headroom\nvertically, while expanding horizontally to fit the parent. The [padding] is\nused to make sure there is space between the contents and the text. The\n[color] makes the box blue. The [alignment] causes the [child] to be\ncentered in the box. Finally, the [transform] applies a slight rotation to the\nentire contraption to complete the effect.\n\n![A blue rectangular container with 'Hello World' in the center, rotated\nslightly in the z axis.](https://flutter.github.io/assets-for-api-docs/assets/widgets/container_b.png)\n\n```dart\nContainer(\n constraints: BoxConstraints.expand(\n height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,\n ),\n padding: const EdgeInsets.all(8.0),\n color: Colors.blue[600],\n alignment: Alignment.center,\n child: Text('Hello World',\n style: Theme.of(context)\n .textTheme\n .display1\n .copyWith(color: Colors.white)),\n transform: Matrix4.rotationZ(0.1),\n)\n```\n\nSee also:\n\n * [AnimatedContainer], a variant that smoothly animates the properties when\n they change.\n * [Border], which has a sample which uses [Container] heavily.\n * [Ink], which paints a [Decoration] on a [Material], allowing\n [InkResponse] and [InkWell] splashes to paint over them.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "Container" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scrollable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that scrolls.\n\n[Scrollable] implements the interaction model for a scrollable widget,\nincluding gesture recognition, but does not have an opinion about how the\nviewport, which actually displays the children, is constructed.\n\nIt's rare to construct a [Scrollable] directly. Instead, consider [ListView]\nor [GridView], which combine scrolling, viewporting, and a layout model. To\ncombine layout models (or to use a custom layout mode), consider using\n[CustomScrollView].\n\nThe static [Scrollable.of] and [Scrollable.ensureVisible] functions are\noften used to interact with the [Scrollable] widget inside a [ListView] or\na [GridView].\n\nTo further customize scrolling behavior with a [Scrollable]:\n\n1. You can provide a [viewportBuilder] to customize the child model. For\n example, [SingleChildScrollView] uses a viewport that displays a single\n box child whereas [CustomScrollView] uses a [Viewport] or a\n [ShrinkWrappingViewport], both of which display a list of slivers.\n\n2. You can provide a custom [ScrollController] that creates a custom\n [ScrollPosition] subclass. For example, [PageView] uses a\n [PageController], which creates a page-oriented scroll position subclass\n that keeps the same page visible when the [Scrollable] resizes.\n\nSee also:\n\n * [ListView], which is a commonly used [ScrollView] that displays a\n scrolling, linear list of child widgets.\n * [PageView], which is a scrolling list of child widgets that are each the\n size of the viewport.\n * [GridView], which is a [ScrollView] that displays a scrolling, 2D array\n of child widgets.\n * [CustomScrollView], which is a [ScrollView] that creates custom scroll\n effects using slivers.\n * [SingleChildScrollView], which is a scrollable widget that has a single\n child.\n * [ScrollNotification] and [NotificationListener], which can be used to watch\n the scroll position without using a [ScrollController].", "detail": "", "kind": 7, "label": "Scrollable" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [Border]s.\n\nThis class specializes the interpolation of [Tween<Border>] to use\n[Border.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "BorderTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [EdgeInsets]s.\n\nThis class specializes the interpolation of [Tween<EdgeInsets>] to use\n[EdgeInsets.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [EdgeInsetsGeometryTween], which interpolates between two\n [EdgeInsetsGeometry] objects.", "detail": "", "kind": 7, "label": "EdgeInsetsTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChangeNotifier", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A class that can be extended or mixed in that provides a change notification\nAPI using [VoidCallback] for notifications.\n\n[ChangeNotifier] is optimized for small numbers (one or two) of listeners.\nIt is O(N) for adding and removing listeners and O(N²) for dispatching\nnotifications (where N is the number of listeners).\n\nSee also:\n\n * [ValueNotifier], which is a [ChangeNotifier] that wraps a single value.", "detail": "", "kind": 7, "label": "ChangeNotifier" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureRecognizerFactoryWithHandlers", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Factory for creating gesture recognizers that delegates to callbacks.\n\nUsed by [RawGestureDetector.gestures].", "detail": "", "kind": 7, "label": "GestureRecognizerFactoryWithHandlers" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstrainedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that imposes additional constraints on its child.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[constraints].\n\n\nThis snippet makes the child widget (a [Card] with some [Text]) fill the\nparent, by applying [BoxConstraints.expand] constraints:\n\n```dart\nConstrainedBox(\n constraints: const BoxConstraints.expand(),\n child: const Card(child: Text('Hello World!')),\n)\n```\n\nThe same behavior can be obtained using the [new SizedBox.expand] widget.\n\nSee also:\n\n * [BoxConstraints], the class that describes constraints.\n * [UnconstrainedBox], a container that tries to let its child draw without\n constraints.\n * [SizedBox], which lets you specify tight constraints by explicitly\n specifying the height or width.\n * [FractionallySizedBox], which sizes its child based on a fraction of its\n own size and positions the child according to an [Alignment] value.\n * [AspectRatio], a widget that attempts to fit within the parent's\n constraints while also sizing its child to match a given aspect ratio.\n * The [catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "ConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GestureTapDownCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for when a pointer that might cause a tap has contacted the\nscreen.\n\nThe position at which the pointer contacted the screen is available in the\n`details`.\n\nSee also:\n\n * [GestureDetector.onTapDown], which matches this signature.\n * [TapGestureRecognizer], which uses this signature in one of its callbacks.", "detail": "(TapDownDetails details) → void", "kind": 7, "label": "GestureTapDownCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimatedListRemovedItemBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the builder callback used by [AnimatedListState.removeItem].", "detail": "(BuildContext context, Animation<double> animation) → Widget", "kind": 7, "label": "AnimatedListRemovedItemBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBody", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that arranges its children sequentially along a given axis, forcing\nthem to the dimension of the parent in the other axis.\n\nThis widget is rarely used directly. Instead, consider using [ListView],\nwhich combines a similar layout algorithm with scrolling behavior, or\n[Column], which gives you more flexible control over the layout of a\nvertical set of boxes.\n\nSee also:\n\n * [RenderListBody], which implements this layout algorithm and the\n documentation for which describes some of its subtleties.\n * [SingleChildScrollView], which is sometimes used with [ListBody] to\n make the contents scrollable.\n * [Column] and [Row], which implement a more elaborate version of\n this layout algorithm (at the cost of being slightly less efficient).\n * [ListView], which implements an efficient scrolling version of this\n layout algorithm.", "detail": "", "kind": 7, "label": "ListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoApp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An application that uses Cupertino design.\n\nA convenience widget that wraps a number of widgets that are commonly\nrequired for an iOS-design targeting application. It builds upon a\n[WidgetsApp] by iOS specific defaulting such as fonts and scrolling\nphysics.\n\nThe [CupertinoApp] configures the top-level [Navigator] to search for routes\nin the following order:\n\n 1. For the `/` route, the [home] property, if non-null, is used.\n\n 2. Otherwise, the [routes] table is used, if it has an entry for the route.\n\n 3. Otherwise, [onGenerateRoute] is called, if provided. It should return a\n non-null value for any _valid_ route not handled by [home] and [routes].\n\n 4. Finally if all else fails [onUnknownRoute] is called.\n\nIf [home], [routes], [onGenerateRoute], and [onUnknownRoute] are all null,\nand [builder] is not null, then no [Navigator] is created.\n\nThis widget also configures the observer of the top-level [Navigator] (if\nany) to perform [Hero] animations.\n\nUse this widget with caution on Android since it may produce behaviors\nAndroid users are not expecting such as:\n\n * Pages will be dismissible via a back swipe.\n * Scrolling past extremities will trigger iOS-style spring overscrolls.\n * The San Francisco font family is unavailable on Android and can result\n in undefined font behavior.\n\nSee also:\n\n * [CupertinoPageScaffold], which provides a standard page layout default\n with nav bars.\n * [Navigator], which is used to manage the app's stack of pages.\n * [CupertinoPageRoute], which defines an app page that transitions in an\n iOS-specific way.\n * [WidgetsApp], which defines the basic app elements but does not depend\n on the Cupertino library.", "detail": "", "kind": 7, "label": "CupertinoApp" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomMultiChildLayout", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that uses a delegate to size and position multiple children.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.\n\n[CustomMultiChildLayout] is appropriate when there are complex relationships\nbetween the size and positioning of a multiple widgets. To control the\nlayout of a single child, [CustomSingleChildLayout] is more appropriate. For\nsimple cases, such as aligning a widget to one or another edge, the [Stack]\nwidget is more appropriate.\n\nEach child must be wrapped in a [LayoutId] widget to identify the widget for\nthe delegate.\n\nSee also:\n\n * [MultiChildLayoutDelegate], for details about how to control the layout of\n the children.\n * [CustomSingleChildLayout], which uses a delegate to control the layout of\n a single child.\n * [Stack], which arranges children relative to the edges of the container.\n * [Flow], which provides paint-time control of its children using transform\n matrices.", "detail": "", "kind": 7, "label": "CustomMultiChildLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoSliverNavigationBar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An iOS-styled navigation bar with iOS-11-style large titles using slivers.\n\nThe [CupertinoSliverNavigationBar] must be placed in a sliver group such\nas the [CustomScrollView].\n\nThis navigation bar consists of two sections, a pinned static section on top\nand a sliding section containing iOS-11-style large title below it.\n\nIt should be placed at top of the screen and automatically accounts for\nthe iOS status bar.\n\nMinimally, a [largeTitle] widget will appear in the middle of the app bar\nwhen the sliver is collapsed and transfer to the area below in larger font\nwhen the sliver is expanded.\n\nFor advanced uses, an optional [middle] widget can be supplied to show a\ndifferent widget in the middle of the navigation bar when the sliver is collapsed.\n\nLike [CupertinoNavigationBar], it also supports a [leading] and [trailing]\nwidget on the static section on top that remains while scrolling.\n\nThe [leading] widget will automatically be a back chevron icon button (or a\nclose button in case of a fullscreen dialog) to pop the current route if none\nis provided and [automaticallyImplyLeading] is true (true by default).\n\nThe [largeTitle] widget will automatically be a title text from the current\n[CupertinoPageRoute] if none is provided and [automaticallyImplyTitle] is\ntrue (true by default).\n\nWhen [transitionBetweenRoutes] is true, this navigation bar will transition\non top of the routes instead of inside them if the route being transitioned\nto also has a [CupertinoNavigationBar] or a [CupertinoSliverNavigationBar]\nwith [transitionBetweenRoutes] set to true. If [transitionBetweenRoutes] is\ntrue, none of the [Widget] parameters can contain any [GlobalKey]s in their\nsubtrees since those widgets will exist in multiple places in the tree\nsimultaneously.\n\nBy default, only one [CupertinoNavigationBar] or [CupertinoSliverNavigationBar]\nshould be present in each [PageRoute] to support the default transitions.\nUse [transitionBetweenRoutes] or [heroTag] to customize the transition\nbehavior for multiple navigation bars per route.\n\nSee also:\n\n * [CupertinoNavigationBar], an iOS navigation bar for use on non-scrolling\n pages.", "detail": "", "kind": 7, "label": "CupertinoSliverNavigationBar" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LocalHistoryEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An entry in the history of a [LocalHistoryRoute].", "detail": "", "kind": 7, "label": "LocalHistoryEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CupertinoTabView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single tab view with its own [Navigator] state and history.\n\nA typical tab view used as the content of each tab in a [CupertinoTabScaffold]\nwhere multiple tabs with parallel navigation states and history can\nco-exist.\n\n[CupertinoTabView] configures the top-level [Navigator] to search for routes\nin the following order:\n\n 1. For the `/` route, the [builder] property, if non-null, is used.\n\n 2. Otherwise, the [routes] table is used, if it has an entry for the route,\n including `/` if [builder] is not specified.\n\n 3. Otherwise, [onGenerateRoute] is called, if provided. It should return a\n non-null value for any _valid_ route not handled by [builder] and [routes].\n\n 4. Finally if all else fails [onUnknownRoute] is called.\n\nThese navigation properties are not shared with any sibling [CupertinoTabView]\nnor any ancestor or descendant [Navigator] instances.\n\nTo push a route above this [CupertinoTabView] instead of inside it (such\nas when showing a dialog on top of all tabs), use\n`Navigator.of(rootNavigator: true)`.\n\nSee also:\n\n * [CupertinoTabScaffold], a typical host that supports switching between tabs.\n * [CupertinoPageRoute], a typical modal page route pushed onto the\n [CupertinoTabView]'s [Navigator].", "detail": "", "kind": 7, "label": "CupertinoTabView" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this widget can result in a layout that is O(N²) in the depth of\nthe tree.\n\nSee also:\n\n * [The catalog of layout widgets](https://flutter.dev/widgets/layout/).", "detail": "", "kind": 7, "label": "IntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PageRoute", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A modal route that replaces the entire screen.", "detail": "", "kind": 7, "label": "PageRoute" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OverlayState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The current state of an [Overlay].\n\nUsed to insert [OverlayEntry]s into the overlay using the [insert] and\n[insertAll] functions.", "detail": "", "kind": 7, "label": "OverlayState" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultWidgetsLocalizations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "US English localizations for the widgets library.\n\nSee also:\n\n * [GlobalWidgetsLocalizations], which provides widgets localizations for\n many languages.\n * [WidgetsApp.delegates], which automatically includes\n [DefaultWidgetsLocalizations.delegate] by default.", "detail": "", "kind": 7, "label": "DefaultWidgetsLocalizations" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RepaintBoundary", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A widget that creates a separate display list for its child.\n\nThis widget creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree.\n\nThis is useful since [RenderObject.paint] may be triggered even if its\nassociated [Widget] instances did not change or rebuild. A [RenderObject]\nwill repaint whenever any [RenderObject] that shares the same [Layer] is\nmarked as being dirty and needing paint (see [RenderObject.markNeedsPaint]),\nsuch as when an ancestor scrolls or when an ancestor or descendant animates.\n\nContaining [RenderObject.paint] to parts of the render subtree that are\nactually visually changing using [RepaintBoundary] explicitly or implicitly\nis therefore critical to minimizing redundant work and improving the app's\nperformance.\n\nWhen a [RenderObject] is flagged as needing to paint via\n[RenderObject.markNeedsPaint], the nearest ancestor [RenderObject] with\n[RenderObject.isRepaintBoundary], up to possibly the root of the application,\nis requested to repaint. That nearest ancestor's [RenderObject.paint] method\nwill cause _all_ of its descendant [RenderObject]s to repaint in the same\nlayer.\n\n[RepaintBoundary] is therefore used, both while propagating the\n`markNeedsPaint` flag up the render tree and while traversing down the\nrender tree via [RenderObject.paintChild], to strategically contain repaints\nto the render subtree that visually changed for performance. This is done\nbecause the [RepaintBoundary] widget creates a [RenderObject] that always\nhas a [Layer], decoupling ancestor render objects from the descendant\nrender objects.\n\n[RepaintBoundary] has the further side-effect of possibly hinting to the\nengine that it should further optimize animation performance if the render\nsubtree behind the [RepaintBoundary] is sufficiently complex and is static\nwhile the surrounding tree changes frequently. In those cases, the engine\nmay choose to pay a one time cost of rasterizing and caching the pixel\nvalues of the subtree for faster future GPU re-rendering speed.\n\nSeveral framework widgets insert [RepaintBoundary] widgets to mark natural\nseparation points in applications. For instance, contents in Material Design\ndrawers typically don't change while the drawer opens and closes, so\nrepaints are automatically contained to regions inside or outside the drawer\nwhen using the [Drawer] widget during transitions.\n\nSee also:\n\n * [debugRepaintRainbowEnabled], a debugging flag to help visually monitor\n render tree repaints in a running app.\n * [debugProfilePaintsEnabled], a debugging flag to show render tree\n repaints in the observatory's timeline view.", "detail": "", "kind": 7, "label": "RepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RootRenderObjectElement", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The element at the root of the tree.\n\nOnly root elements may have their owner set explicitly. All other\nelements inherit their owner from their parent.", "detail": "", "kind": 7, "label": "RootRenderObjectElement" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildRenderObjectWidget", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A superclass for RenderObjectWidgets that configure RenderObject subclasses\nthat have a single child slot. (This superclass only provides the storage\nfor that child, it doesn't actually provide the updating logic.)", "detail": "", "kind": 7, "label": "SingleChildRenderObjectWidget" }, { "data": { "autoImportDisplayUri": "package:flutter/cupertino.dart", "libraryId": 305, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportNotificationMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mixin for [Notification]s that track how many [RenderAbstractViewport] they\nhave bubbled through.\n\nThis is used by [ScrollNotification] and [OverscrollIndicatorNotification].", "detail": "", "kind": 7, "label": "ViewportNotificationMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsProperties", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties used by assistive technologies to make the application\nmore accessible.\n\nThe properties of this class are used to generate a [SemanticsNode]s in the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsProperties" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsOwner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Owns [SemanticsNode] objects and notifies listeners of changes to the\nrender tree semantics.\n\nTo listen for semantic updates, call [PipelineOwner.ensureSemantics] to\nobtain a [SemanticsHandle]. This will create a [SemanticsOwner] if\nnecessary.", "detail": "", "kind": 7, "label": "SemanticsOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsService", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows access to the platform's accessibility services.\n\nEvents sent by this service are handled by the platform-specific\naccessibility bridge in Flutter's engine.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "SemanticsService" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the semantics layer and the Flutter engine.", "detail": "", "kind": 7, "label": "SemanticsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccessibilityFeatures", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Additional accessibility features that may be enabled by the platform.\n\nIt is not possible to enable these settings from Flutter, instead they are\nused by the platform to indicate that additional accessibility features are\nenabled.", "detail": "", "kind": 7, "label": "AccessibilityFeatures" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Summary information about a [SemanticsNode] object.\n\nA semantics node might [SemanticsNode.mergeAllDescendantsIntoThisNode],\nwhich means the individual fields on the semantics node don't fully describe\nthe semantics at that node. This data structure contains the full semantics\nfor the node.\n\nTypically obtained from [SemanticsNode.getSemanticsData].", "detail": "", "kind": 7, "label": "SemanticsData" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MoveCursorHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [SemanticsAction]s that move the cursor.\n\nIf `extendSelection` is set to true the cursor movement should extend the\ncurrent selection or (if nothing is currently selected) start a selection.", "detail": "(bool extendSelection) → void", "kind": 7, "label": "MoveCursorHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsSortKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for all sort keys for [Semantics] accessibility traversal order\nsorting.\n\nOnly keys of the same type and having matching [name]s are compared. If a\nlist of sibling [SemanticsNode]s contains keys that are not comparable with\neach other the list is first sorted using the default sorting algorithm.\nThen the nodes are broken down into groups by moving comparable nodes\ntowards the _earliest_ node in the group. Finally each group is sorted by\nsort key and the resulting list is made by concatenating the sorted groups\nback.\n\nFor example, let's take nodes (C, D, B, E, A, F). Let's assign node A key 1,\nnode B key 2, node C key 3. Let's also assume that the default sort order\nleaves the original list intact. Because nodes A, B, and C, have comparable\nsort key, they will form a group by pulling all nodes towards the earliest\nnode, which is C. The result is group (C, B, A). The remaining nodes D, E,\nF, form a second group with sort key being `null`. The first group is sorted\nusing their sort keys becoming (A, B, C). The second group is left as is\nbecause it does not specify sort keys. Then we concatenate the two groups -\n(A, B, C) and (D, E, F) - into the final (A, B, C, D, E, F).\n\nBecause of the complexity introduced by incomparable sort keys among sibling\nnodes, it is recommended to either use comparable keys for all nodes, or\nuse null for all of them, leaving the sort order to the default algorithm.\n\nSee Also:\n\n * [OrdinalSortKey] for a sort key that sorts using an ordinal.", "detail": "", "kind": 7, "label": "SemanticsSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugSemanticsDumpOrder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Used by [debugDumpSemanticsTree] to specify the order in which child nodes\nare printed.", "detail": "", "kind": 13, "label": "DebugSemanticsDumpOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetSelectionHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [SemanticsAction.setSelection] handlers to change the\ntext selection (or re-position the cursor) to `selection`.", "detail": "(TextSelection selection) → void", "kind": 7, "label": "SetSelectionHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressSemanticsEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers long press semantic feedback.\n\nCurrently only honored on Android. Triggers a long-press specific sound\nwhen TalkBack is enabled.", "detail": "", "kind": 7, "label": "LongPressSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the semantic information associated with the owning\n[RenderObject].\n\nThe information provided in the configuration is used to generate the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The possible actions that can be conveyed from the operating system\naccessibility APIs to a semantics node.", "detail": "", "kind": 7, "label": "SemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapSemanticEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers tap semantic feedback.\n\nCurrently only honored on Android. Triggers a tap specific sound when\nTalkBack is enabled.", "detail": "", "kind": 7, "label": "TapSemanticEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnounceSemanticsEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement.\n\nThis should be used for announcement that are not seamlessly announced by\nthe system as a result of a UI state change.\n\nFor example a camera application can use this method to make accessibility\nannouncements regarding objects in the viewfinder.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "AnnounceSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TooltipSemanticsEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement of a tooltip.\n\nThis is only used by Android to announce tooltip values.", "detail": "", "kind": 7, "label": "TooltipSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSemanticsAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier of a custom semantics action.\n\nCustom semantics actions can be provided to make complex user\ninteractions more accessible. For instance, if an application has a\ndrag-and-drop list that requires the user to press and hold an item\nto move it, users interacting with the application using a hardware\nswitch may have difficulty. This can be made accessible by creating custom\nactions and pairing them with handlers that move a list item up or down in\nthe list.\n\nIn Android, these actions are presented in the local context menu. In iOS,\nthese are presented in the radial context menu.\n\nLocalization and text direction do not automatically apply to the provided\nlabel or hint.\n\nInstances of this class should either be instantiated with const or\nnew instances cached in static fields.\n\nSee also:\n\n * [SemanticsProperties], where the handler for a custom action is provided.", "detail": "", "kind": 7, "label": "CustomSemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsTag", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tag for a [SemanticsNode].\n\nTags can be interpreted by the parent of a [SemanticsNode]\nand depending on the presence of a tag the parent can for example decide\nhow to add the tagged node as a child. Tags are not sent to the engine.\n\nAs an example, the [RenderSemanticsGestureHandler] uses tags to determine\nif a child node should be excluded from the scrollable area for semantic\npurposes.\n\nThe provided [name] is only used for debugging. Two tags created with the\nsame [name] and the `new` operator are not considered identical. However,\ntwo tags created with the same [name] and the `const` operator are always\nidentical.", "detail": "", "kind": 7, "label": "SemanticsTag" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event sent by the application to notify interested listeners that\nsomething happened to the user interface (e.g. a view scrolled).\n\nThese events are usually interpreted by assistive technologies to give the\nuser additional clues about the current state of the UI.", "detail": "", "kind": 7, "label": "SemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UpdateLiveRegionEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers a polite announcement of a live region.\n\nThis requires that the semantics node has already been marked as a live\nregion. On Android, TalkBack will make a verbal announcement, as long as\nthe label of the semantics node has changed since the last live region\nupdate. iOS does not currently support this event.\n\nSee also:\n\n * [SemanticsFlag.liveRegion], for a description of live regions.", "detail": "", "kind": 7, "label": "UpdateLiveRegionEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrdinalSortKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [SemanticsSortKey] that sorts simply based on the `double` value it is\ngiven.\n\nThe [OrdinalSortKey] compares itself with other [OrdinalSortKey]s\nto sort based on the order it is given.\n\nThe ordinal value `order` is typically a whole number, though it can be\nfractional, e.g. in order to fit between two other consecutive whole\nnumbers. The value must be finite (it cannot be [double.nan],\n[double.infinity], or [double.negativeInfinity]).", "detail": "", "kind": 7, "label": "OrdinalSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNodeVisitor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called for each [SemanticsNode].\n\nReturn false to stop visiting nodes.\n\nUsed by [SemanticsNode.visitChildren].", "detail": "(SemanticsNode node) → bool", "kind": 7, "label": "SemanticsNodeVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A node that represents some semantic data.\n\nThe semantics tree is maintained during the semantics phase of the pipeline\n(i.e., during [PipelineOwner.flushSemantics]), which happens after\ncompositing. The semantics tree is then uploaded into the engine for use\nby assistive technology.", "detail": "", "kind": 7, "label": "SemanticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/semantics.dart", "libraryId": 96, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsHintOverrides", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides hint values which override the default hints on supported\nplatforms.\n\nOn iOS, these values are always ignored.", "detail": "", "kind": 7, "label": "SemanticsHintOverrides" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Where to paint a box decoration.", "detail": "", "kind": 13, "label": "DecorationPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderCustomSingleChildLayoutBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defers the layout of its single child to a delegate.\n\nThe delegate can determine the layout constraints for the child and can\ndecide where to position the child. The delegate can also determine the size\nof the parent, but the size of the parent cannot depend on the size of the\nchild.", "detail": "", "kind": 7, "label": "RenderCustomSingleChildLayoutBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverHelpers", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Mixin for [RenderSliver] subclasses that provides some utility functions.", "detail": "", "kind": 7, "label": "RenderSliverHelpers" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIndexedSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render objects that annotates semantics with an index.\n\nCertain widgets will automatically provide a child index for building\nsemantics. For example, the [ScrollView] uses the index of the first\nvisible child semantics node to determine the\n[SemanticsConfiguration.scrollIndex].\n\nSee also:\n\n * [CustomScrollView], for an explanation of scroll semantics.", "detail": "", "kind": 7, "label": "RenderIndexedSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFollowerLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transform the child so that its origin is [offset] from the origin of the\n[RenderLeaderLayer] with the same [LayerLink].\n\nThe [RenderLeaderLayer] in question must be earlier in the paint order.\n\nHit testing on descendants of this render object will only work if the\ntarget position is within the box that this render object's parent considers\nto be hittable.\n\nSee also:\n\n * [CompositedTransformFollower], the corresponding widget.\n * [FollowerLayer], the layer that this render object creates.", "detail": "", "kind": 7, "label": "RenderFollowerLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPhysicalModel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a physical model layer that clips its child to a rounded\nrectangle.\n\nA physical model layer casts a shadow based on its [elevation].", "detail": "", "kind": 7, "label": "RenderPhysicalModel" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObject", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object in the render tree.\n\nThe [RenderObject] class hierarchy is the core of the rendering\nlibrary's reason for being.\n\n[RenderObject]s have a [parent], and have a slot called [parentData] in\nwhich the parent [RenderObject] can store child-specific data, for example,\nthe child position. The [RenderObject] class also implements the basic\nlayout and paint protocols.\n\nThe [RenderObject] class, however, does not define a child model (e.g.\nwhether a node has zero, one, or more children). It also doesn't define a\ncoordinate system (e.g. whether children are positioned in Cartesian\ncoordinates, in polar coordinates, etc) or a specific layout protocol (e.g.\nwhether the layout is width-in-height-out, or constraint-in-size-out, or\nwhether the parent sets the size and position of the child before or after\nthe child lays out, etc; or indeed whether the children are allowed to read\ntheir parent's [parentData] slot).\n\nThe [RenderBox] subclass introduces the opinion that the layout\nsystem uses Cartesian coordinates.\n\n## Writing a RenderObject subclass\n\nIn most cases, subclassing [RenderObject] itself is overkill, and\n[RenderBox] would be a better starting point. However, if a render object\ndoesn't want to use a Cartesian coordinate system, then it should indeed\ninherit from [RenderObject] directly. This allows it to define its own\nlayout protocol by using a new subclass of [Constraints] rather than using\n[BoxConstraints], and by potentially using an entirely new set of objects\nand values to represent the result of the output rather than just a [Size].\nThis increased flexibility comes at the cost of not being able to rely on\nthe features of [RenderBox]. For example, [RenderBox] implements an\nintrinsic sizing protocol that allows you to measure a child without fully\nlaying it out, in such a way that if that child changes size, the parent\nwill be laid out again (to take into account the new dimensions of the\nchild). This is a subtle and bug-prone feature to get right.\n\nMost aspects of writing a [RenderBox] apply to writing a [RenderObject] as\nwell, and therefore the discussion at [RenderBox] is recommended background\nreading. The main differences are around layout and hit testing, since those\nare the aspects that [RenderBox] primarily specializes.\n\n### Layout\n\nA layout protocol begins with a subclass of [Constraints]. See the\ndiscussion at [Constraints] for more information on how to write a\n[Constraints] subclass.\n\nThe [performLayout] method should take the [constraints], and apply them.\nThe output of the layout algorithm is fields set on the object that describe\nthe geometry of the object for the purposes of the parent's layout. For\nexample, with [RenderBox] the output is the [RenderBox.size] field. This\noutput should only be read by the parent if the parent specified\n`parentUsesSize` as true when calling [layout] on the child.\n\nAnytime anything changes on a render object that would affect the layout of\nthat object, it should call [markNeedsLayout].\n\n### Hit Testing\n\nHit testing is even more open-ended than layout. There is no method to\noverride, you are expected to provide one.\n\nThe general behavior of your hit-testing method should be similar to the\nbehavior described for [RenderBox]. The main difference is that the input\nneed not be an [Offset]. You are also allowed to use a different subclass of\n[HitTestEntry] when adding entries to the [HitTestResult]. When the\n[handleEvent] method is called, the same object that was added to the\n[HitTestResult] will be passed in, so it can be used to track information\nlike the precise coordinate of the hit, in whatever coordinate system is\nused by the new layout protocol.\n\n### Adapting from one protocol to another\n\nIn general, the root of a Flutter render object tree is a [RenderView]. This\nobject has a single child, which must be a [RenderBox]. Thus, if you want to\nhave a custom [RenderObject] subclass in the render tree, you have two\nchoices: you either need to replace the [RenderView] itself, or you need to\nhave a [RenderBox] that has your class as its child. (The latter is the much\nmore common case.)\n\nThis [RenderBox] subclass converts from the box protocol to the protocol of\nyour class.\n\nIn particular, this means that for hit testing it overrides\n[RenderBox.hitTest], and calls whatever method you have in your class for\nhit testing.\n\nSimilarly, it overrides [performLayout] to create a [Constraints] object\nappropriate for your class and passes that to the child's [layout] method.\n\n### Layout interactions between render objects\n\nIn general, the layout of a render object should only depend on the output of\nits child's layout, and then only if `parentUsesSize` is set to true in the\n[layout] call. Furthermore, if it is set to true, the parent must call the\nchild's [layout] if the child is to be rendered, because otherwise the\nparent will not be notified when the child changes its layout outputs.\n\nIt is possible to set up render object protocols that transfer additional\ninformation. For example, in the [RenderBox] protocol you can query your\nchildren's intrinsic dimensions and baseline geometry. However, if this is\ndone then it is imperative that the child call [markNeedsLayout] on the\nparent any time that additional information changes, if the parent used it\nin the last layout phase. For an example of how to implement this, see the\n[RenderBox.markNeedsLayout] method. It overrides\n[RenderObject.markNeedsLayout] so that if a parent has queried the intrinsic\nor baseline information, it gets marked dirty whenever the child's geometry\nchanges.", "detail": "", "kind": 7, "label": "RenderObject" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPerformanceOverlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays performance statistics.\n\nThe overlay shows two time series. The first shows how much time was\nrequired on this thread to produce each frame. The second shows how much\ntime was required on the GPU thread to produce each frame. Ideally, both\nthese values would be less than the total frame budget for the hardware on\nwhich the app is running. For example, if the hardware has a screen that\nupdates at 60 Hz, each thread should ideally spend less than 16ms producing\neach frame. This ideal condition is indicated by a green vertical line for\neach thread. Otherwise, the performance overlay shows a red vertical line.\n\nThe simplest way to show the performance overlay is to set\n[MaterialApp.showPerformanceOverlay] or [WidgetsApp.showPerformanceOverlay]\nto true.", "detail": "", "kind": 7, "label": "RenderPerformanceOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorderClipper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [CustomClipper] that clips to the outer path of a [ShapeBorder].", "detail": "", "kind": 7, "label": "ShapeBorderClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBaseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Shifts the child down such that the child's baseline (or the\nbottom of the child, if the child has no baseline) is [baseline]\nlogical pixels below the top of this box, then sizes this box to\ncontain the child.\n\nIf [baseline] is less than the distance from the top of the child\nto the baseline of the child, then the child will overflow the top\nof the box. This is typically not desirable, in particular, that\npart of the child will not be found when doing hit tests, so the\nuser cannot interact with that part of the child.\n\nThis box will be sized so that its bottom is coincident with the\nbottom of the child. This means if this box shifts the child down,\nthere will be space between the top of this box and the top of the\nchild, but there is never space between the bottom of the child\nand the bottom of the box.", "detail": "", "kind": 7, "label": "RenderBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GrowthDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction in which a sliver's contents are ordered, relative to the\nscroll offset axis.\n\nFor example, a vertical alphabetical list that is going [AxisDirection.down]\nwith a [GrowthDirection.forward] would have the A at the top and the Z at\nthe bottom, with the A adjacent to the origin, as would such a list going\n[AxisDirection.up] with a [GrowthDirection.reverse]. On the other hand, a\nvertical alphabetical list that is going [AxisDirection.down] with a\n[GrowthDirection.reverse] would have the Z at the top (at scroll offset\nzero) and the A below it.", "detail": "", "kind": 13, "label": "GrowthDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The possible actions that can be conveyed from the operating system\naccessibility APIs to a semantics node.", "detail": "", "kind": 7, "label": "SemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverHitTestEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A hit test entry used by [RenderSliver].\n\nThe coordinate system used by this hit test entry is relative to the\n[AxisDirection] of the target sliver.", "detail": "", "kind": 7, "label": "SliverHitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsTag", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tag for a [SemanticsNode].\n\nTags can be interpreted by the parent of a [SemanticsNode]\nand depending on the presence of a tag the parent can for example decide\nhow to add the tagged node as a child. Tags are not sent to the engine.\n\nAs an example, the [RenderSemanticsGestureHandler] uses tags to determine\nif a child node should be excluded from the scrollable area for semantic\npurposes.\n\nThe provided [name] is only used for debugging. Two tags created with the\nsame [name] and the `new` operator are not considered identical. However,\ntwo tags created with the same [name] and the `const` operator are always\nidentical.", "detail": "", "kind": 7, "label": "SemanticsTag" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderProxyBoxMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implementation of [RenderProxyBox].\n\nUse this mixin in situations where the proxying behavior\nof [RenderProxyBox] is desired but inheriting from [RenderProxyBox] is\nimpractical (e.g. because you want to mix in other classes as well).", "detail": "", "kind": 7, "label": "RenderProxyBoxMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size], but whose horizontal\ncomponent is dependent on the writing direction.\n\nThis can be used to indicate an offset from the left in [TextDirection.ltr]\ntext and an offset from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [Alignment], a variant that is defined in physical terms (i.e.\n whose horizontal component does not depend on the text direction).", "detail": "", "kind": 7, "label": "AlignmentDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderListWheelViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Render, onto a wheel, a bigger sequential set of objects inside this viewport.\n\nTakes a scrollable set of fixed sized [RenderBox]es and renders them\nsequentially from top down on a vertical scrolling axis.\n\nIt starts with the first scrollable item in the center of the main axis\nand ends with the last scrollable item in the center of the main axis. This\nis in contrast to typical lists that start with the first scrollable item\nat the start of the main axis and ends with the last scrollable item at the\nend of the main axis.\n\nInstead of rendering its children on a flat plane, it renders them\nas if each child is broken into its own plane and that plane is\nperpendicularly fixed onto a cylinder which rotates along the scrolling\naxis.\n\nThis class works in 3 coordinate systems:\n\n1. The **scrollable layout coordinates**. This coordinate system is used to\n communicate with [ViewportOffset] and describes its children's abstract\n offset from the beginning of the scrollable list at (0.0, 0.0).\n\n The list is scrollable from the start of the first child item to the\n start of the last child item.\n\n Children's layout coordinates don't change as the viewport scrolls.\n\n2. The **untransformed plane's viewport painting coordinates**. Children are\n not painted in this coordinate system. It's an abstract intermediary used\n before transforming into the next cylindrical coordinate system.\n\n This system is the **scrollable layout coordinates** translated by the\n scroll offset such that (0.0, 0.0) is the top left corner of the\n viewport.\n\n Because the viewport is centered at the scrollable list's scroll offset\n instead of starting at the scroll offset, there are paintable children\n ~1/2 viewport length before and after the scroll offset instead of ~1\n viewport length after the scroll offset.\n\n Children's visibility inclusion in the viewport is determined in this\n system regardless of the cylinder's properties such as [diameterRatio]\n or [perspective]. In other words, a 100px long viewport will always\n paint 10-11 visible 10px children if there are enough children in the\n viewport.\n\n3. The **transformed cylindrical space viewport painting coordinates**.\n Children from system 2 get their positions transformed into a cylindrical\n projection matrix instead of its Cartesian offset with respect to the\n scroll offset.\n\n Children in this coordinate system are painted.\n\n The wheel's size and the maximum and minimum visible angles are both\n controlled by [diameterRatio]. Children visible in the **untransformed\n plane's viewport painting coordinates**'s viewport will be radially\n evenly laid out between the maximum and minimum angles determined by\n intersecting the viewport's main axis length with a cylinder whose\n diameter is [diameterRatio] times longer, as long as those angles are\n between -pi/2 and pi/2.\n\n For example, if [diameterRatio] is 2.0 and this [RenderListWheelViewport]\n is 100.0px in the main axis, then the diameter is 200.0. And children\n will be evenly laid out between that cylinder's -arcsin(1/2) and\n arcsin(1/2) angles.\n\n The cylinder's 0 degree side is always centered in the\n [RenderListWheelViewport]. The transformation from **untransformed\n plane's viewport painting coordinates** is also done such that the child\n in the center of that plane will be mostly untransformed with children\n above and below it being transformed more as the angle increases.", "detail": "", "kind": 7, "label": "RenderListWheelViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueChanged", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that an underlying value has changed.\n\nSee also [ValueSetter].", "detail": "(T value) → void", "kind": 7, "label": "ValueChanged" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [dart:ui.Image] object with its corresponding scale.\n\nImageInfo objects are used by [ImageStream] objects to represent the\nactual data of the image once it has been obtained.", "detail": "", "kind": 7, "label": "ImageInfo" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverToBoxAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RenderSliver] that contains a single [RenderBox].\n\nThe child will not be laid out if it is not visible. It is sized according\nto the child's preferences in the main axis, and with a tight constraint\nforcing it to the dimensions of the viewport in the cross axis.\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderViewport], which allows [RenderSliver] objects to be placed inside\n a [RenderBox] (the opposite of this class).", "detail": "", "kind": 7, "label": "RenderSliverToBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderRotatedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Rotates its child by a integral number of quarter turns.\n\nUnlike [RenderTransform], which applies a transform just prior to painting,\nthis object applies its rotation prior to layout, which means the entire\nrotated box consumes only as much space as required by the rotated child.", "detail": "", "kind": 7, "label": "RenderRotatedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnnotatedRegion", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Render object which inserts an [AnnotatedRegionLayer] into the layer tree.\n\nSee also:\n\n * [Layer.find], for an example of how this value is retrieved.\n * [AnnotatedRegionLayer], the layer this render object creates.", "detail": "", "kind": 7, "label": "RenderAnnotatedRegion" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderStack", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements the stack layout algorithm\n\nIn a stack layout, the children are positioned on top of each other in the\norder in which they appear in the child list. First, the non-positioned\nchildren (those with null values for top, right, bottom, and left) are\nlaid out and initially placed in the upper-left corner of the stack. The\nstack is then sized to enclose all of the non-positioned children. If there\nare no non-positioned children, the stack becomes as large as possible.\n\nThe final location of non-positioned children is determined by the alignment\nparameter. The left of each non-positioned child becomes the\ndifference between the child's width and the stack's width scaled by\nalignment.x. The top of each non-positioned child is computed\nsimilarly and scaled by alignment.y. So if the alignment x and y properties\nare 0.0 (the default) then the non-positioned children remain in the\nupper-left corner. If the alignment x and y properties are 0.5 then the\nnon-positioned children are centered within the stack.\n\nNext, the positioned children are laid out. If a child has top and bottom\nvalues that are both non-null, the child is given a fixed height determined\nby subtracting the sum of the top and bottom values from the height of the stack.\nSimilarly, if the child has right and left values that are both non-null,\nthe child is given a fixed width derived from the stack's width.\nOtherwise, the child is given unbounded constraints in the non-fixed dimensions.\n\nOnce the child is laid out, the stack positions the child\naccording to the top, right, bottom, and left properties of their\n[StackParentData]. For example, if the bottom value is 10.0, the\nbottom edge of the child will be inset 10.0 pixels from the bottom\nedge of the stack. If the child extends beyond the bounds of the\nstack, the stack will clip the child's painting to the bounds of\nthe stack.\n\nSee also:\n\n * [RenderFlow]", "detail": "", "kind": 7, "label": "RenderStack" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RoundedRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with rounded corners.\n\nTypically used with [ShapeDecoration] to draw a box with a rounded\nrectangle.\n\nThis shape can interpolate to and from [CircleBorder].\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a rounded rectangle.", "detail": "", "kind": 7, "label": "RoundedRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIntrinsicWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes its child to the child's intrinsic width.\n\nSizes its child's width to the child's maximum intrinsic width. If\n[stepWidth] is non-null, the child's width will be snapped to a multiple of\nthe [stepWidth]. Similarly, if [stepHeight] is non-null, the child's height\nwill be snapped to a multiple of the [stepHeight].\n\nThis class is useful, for example, when unlimited width is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable width.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this render object can result in a layout that is O(N²) in the\ndepth of the tree.", "detail": "", "kind": 7, "label": "RenderIntrinsicWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFloatingPersistentHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which shrinks and scrolls like a\n[RenderSliverScrollingPersistentHeader], but immediately comes back when the\nuser scrolls in the reverse direction.\n\nSee also:\n\n * [RenderSliverFloatingPinnedPersistentHeader], which is similar but sticks\n to the start of the viewport rather than scrolling off.", "detail": "", "kind": 7, "label": "RenderSliverFloatingPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipRRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using a rounded rectangle.\n\nBy default, [RenderClipRRect] uses its own bounds as the base rectangle for\nthe clip, but the size and location of the clip can be customized using a\ncustom [clipper].", "detail": "", "kind": 7, "label": "RenderClipRRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Summary information about a [SemanticsNode] object.\n\nA semantics node might [SemanticsNode.mergeAllDescendantsIntoThisNode],\nwhich means the individual fields on the semantics node don't fully describe\nthe semantics at that node. This data structure contains the full semantics\nfor the node.\n\nTypically obtained from [SemanticsNode.getSemanticsData].", "detail": "", "kind": 7, "label": "SemanticsData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderOpacity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child partially transparent.\n\nThis class paints its child into an intermediate buffer and then blends the\nchild back into the scene partially transparent.\n\nFor values of opacity other than 0.0 and 1.0, this class is relatively\nexpensive because it requires painting the child into an intermediate\nbuffer. For the value 0.0, the child is simply not painted at all. For the\nvalue 1.0, the child is painted immediately without an intermediate buffer.", "detail": "", "kind": 7, "label": "RenderOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerBoxParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Abstract ParentData subclass for RenderBox subclasses that want the\nContainerRenderObjectMixin.\n\nThis is a convenience class that mixes in the relevant classes with\nthe relevant type arguments.", "detail": "", "kind": 7, "label": "ContainerBoxParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnimatedSizeState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [RenderAnimatedSize] can be in exactly one of these states.", "detail": "", "kind": 13, "label": "RenderAnimatedSizeState" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectWithChildMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Generic mixin for render objects with one child.\n\nProvides a child model for a render object subclass that has a unique child.", "detail": "", "kind": 7, "label": "RenderObjectWithChildMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [Alignment] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nAlignment] and its variants, or [new AlignmentDirectional].\n\nTo convert an [AlignmentGeometry] object of indeterminate type into an\n[Alignment] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "AlignmentGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the appearance of a flow layout.\n\nFlow layouts are optimized for moving children around the screen using\ntransformation matrices. For optimal performance, construct the\n[FlowDelegate] with an [Animation] that ticks whenever the delegate wishes\nto change the transformation matrices for the children and avoid rebuilding\nthe [Flow] widget itself every animation frame.\n\nSee also:\n\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliver", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for the render objects that implement scroll effects in viewports.\n\nA [RenderViewport] has a list of child slivers. Each sliver — literally a\nslice of the viewport's contents — is laid out in turn, covering the\nviewport in the process. (Every sliver is laid out each time, including\nthose that have zero extent because they are \"scrolled off\" or are beyond\nthe end of the viewport.)\n\nSlivers participate in the _sliver protocol_, wherein during [layout] each\nsliver receives a [SliverConstraints] object and computes a corresponding\n[SliverGeometry] that describes where it fits in the viewport. This is\nanalogous to the box protocol used by [RenderBox], which gets a\n[BoxConstraints] as input and computes a [Size].\n\nSlivers have a leading edge, which is where the position described by\n[SliverConstraints.scrollOffset] for this sliver begins. Slivers have\nseveral dimensions, the primary of which is [SliverGeometry.paintExtent],\nwhich describes the extent of the sliver along the main axis, starting from\nthe leading edge, reaching either the end of the viewport or the end of the\nsliver, whichever comes first.\n\nSlivers can change dimensions based on the changing constraints in a\nnon-linear fashion, to achieve various scroll effects. For example, the\nvarious [RenderSliverPersistentHeader] subclasses, on which [SliverAppBar]\nis based, achieve effects such as staying visible despite the scroll offset,\nor reappearing at different offsets based on the user's scroll direction\n([SliverConstraints.userScrollDirection]).\n\n## Writing a RenderSliver subclass\n\nSlivers can have sliver children, or children from another coordinate\nsystem, typically box children. (For details on the box protocol, see\n[RenderBox].) Slivers can also have different child models, typically having\neither one child, or a list of children.\n\n### Examples of slivers\n\nA good example of a sliver with a single child that is also itself a sliver\nis [RenderSliverPadding], which indents its child. A sliver-to-sliver render\nobject such as this must construct a [SliverConstraints] object for its\nchild, then must take its child's [SliverGeometry] and use it to form its\nown [geometry].\n\nThe other common kind of one-child sliver is a sliver that has a single\n[RenderBox] child. An example of that would be [RenderSliverToBoxAdapter],\nwhich lays out a single box and sizes itself around the box. Such a sliver\nmust use its [SliverConstraints] to create a [BoxConstraints] for the\nchild, lay the child out (using the child's [layout] method), and then use\nthe child's [RenderBox.size] to generate the sliver's [SliverGeometry].\n\nThe most common kind of sliver though is one with multiple children. The\nmost straight-forward example of this is [RenderSliverList], which arranges\nits children one after the other in the main axis direction. As with the\none-box-child sliver case, it uses its [constraints] to create a\n[BoxConstraints] for the children, and then it uses the aggregate\ninformation from all its children to generate its [geometry]. Unlike the\none-child cases, however, it is judicious in which children it actually lays\nout (and later paints). If the scroll offset is 1000 pixels, and it\npreviously determined that the first three children are each 400 pixels\ntall, then it will skip the first two and start the layout with its third\nchild.\n\n### Layout\n\nAs they are laid out, slivers decide their [geometry], which includes their\nsize ([SliverGeometry.paintExtent]) and the position of the next sliver\n([SliverGeometry.layoutExtent]), as well as the position of each of their\nchildren, based on the input [constraints] from the viewport such as the\nscroll offset ([SliverConstraints.scrollOffset]).\n\nFor example, a sliver that just paints a box 100 pixels high would say its\n[SliverGeometry.paintExtent] was 100 pixels when the scroll offset was zero,\nbut would say its [SliverGeometry.paintExtent] was 25 pixels when the scroll\noffset was 75 pixels, and would say it was zero when the scroll offset was\n100 pixels or more. (This is assuming that\n[SliverConstraints.remainingPaintExtent] was more than 100 pixels.)\n\nThe various dimensions that are provided as input to this system are in the\n[constraints]. They are described in detail in the documentation for the\n[SliverConstraints] class.\n\nThe [performLayout] function must take these [constraints] and create a\n[SliverGeometry] object that it must then assign to the [geometry] property.\nThe different dimensions of the geometry that can be configured are\ndescribed in detail in the documentation for the [SliverGeometry] class.\n\n### Painting\n\nIn addition to implementing layout, a sliver must also implement painting.\nThis is achieved by overriding the [paint] method.\n\nThe [paint] method is called with an [Offset] from the [Canvas] origin to\nthe top-left corner of the sliver, _regardless of the axis direction_.\n\nSubclasses should also override [applyPaintTransform] to provide the\n[Matrix4] describing the position of each child relative to the sliver.\n(This is used by, among other things, the accessibility layer, to determine\nthe bounds of the child.)\n\n### Hit testing\n\nTo implement hit testing, either override the [hitTestSelf] and\n[hitTestChildren] methods, or, for more complex cases, instead override the\n[hitTest] method directly.\n\nTo actually react to pointer events, the [handleEvent] method may be\nimplemented. By default it does nothing. (Typically gestures are handled by\nwidgets in the box protocol, not by slivers directly.)\n\n### Helper methods\n\nThere are a number of methods that a sliver should implement which will make\nthe other methods easier to implement. Each method listed below has detailed\ndocumentation. In addition, the [RenderSliverHelpers] class can be used to\nmix in some helpful methods.\n\n#### childScrollOffset\n\nIf the subclass positions children anywhere other than at scroll offset\nzero, it should override [childScrollOffset]. For example,\n[RenderSliverList] and [RenderSliverGrid] override this method, but\n[RenderSliverToBoxAdapter] does not.\n\nThis is used by, among other things, [Scrollable.ensureVisible].\n\n#### childMainAxisPosition\n\nSubclasses should implement [childMainAxisPosition] to describe where their\nchildren are positioned.\n\n#### childCrossAxisPosition\n\nIf the subclass positions children in the cross-axis at a position other\nthan zero, then it should override [childCrossAxisPosition]. For example\n[RenderSliverGrid] overrides this method.", "detail": "", "kind": 7, "label": "RenderSliver" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The shape to use when rendering a [Border] or [BoxDecoration].\n\nConsider using [ShapeBorder] subclasses directly (with [ShapeDecoration]),\ninstead of using [BoxShape] and [Border], if the shapes will need to be\ninterpolated or animated. The [Border] class cannot interpolate between\ndifferent shapes.", "detail": "", "kind": 13, "label": "BoxShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderComparison", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The description of the difference between two objects, in the context of how\nit will affect the rendering.\n\nUsed by [TextSpan.compareTo] and [TextStyle.compareTo].\n\nThe values in this enum are ordered such that they are in increasing order\nof cost. A value with index N implies all the values with index less than N.\nFor example, [layout] (index 3) implies [paint] (2).", "detail": "", "kind": 13, "label": "RenderComparison" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Alignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A point within a rectangle.\n\n`Alignment(0.0, 0.0)` represents the center of the rectangle. The distance\nfrom -1.0 to +1.0 is the distance from one side of the rectangle to the\nother side of the rectangle. Therefore, 2.0 units horizontally (or\nvertically) is equivalent to the width (or height) of the rectangle.\n\n`Alignment(-1.0, -1.0)` represents the top left of the rectangle.\n\n`Alignment(1.0, 1.0)` represents the bottom right of the rectangle.\n\n`Alignment(0.0, 3.0)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically below the bottom of the rectangle by\nthe height of the rectangle.\n\n`Alignment(0.0, -0.5)` represents a point that is horizontally centered with\nrespect to the rectangle and vertically half way between the top edge and\nthe center.\n\n`Alignment(x, y)` in a rectangle with height h and width w describes\nthe point (x * w/2 + w/2, y * h/2 + h/2) in the coordinate system of the\nrectangle.\n\n[Alignment] uses visual coordinates, which means increasing [x] moves the\npoint from left to right. To support layouts with a right-to-left\n[TextDirection], consider using [AlignmentDirectional], in which the\ndirection the point moves when increasing the horizontal value depends on\nthe [TextDirection].\n\nA variety of widgets use [Alignment] in their configuration, most\nnotably:\n\n * [Align] positions a child according to an [Alignment].\n\nSee also:\n\n * [AlignmentDirectional], which has a horizontal coordinate orientation\n that depends on the [TextDirection].\n * [AlignmentGeometry], which is an abstract type that is agnostic as to\n whether the horizontal direction depends on the [TextDirection].", "detail": "", "kind": 7, "label": "Alignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContextCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for painting into a [PaintingContext].\n\nThe `offset` argument is the offset from the origin of the coordinate system\nof the [PaintingContext.canvas] to the coordinate system of the callee.\n\nUsed by many of the methods of [PaintingContext].", "detail": "(PaintingContext context, Offset offset) → void", "kind": 7, "label": "PaintingContextCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderOffstage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Lays the child out as if it was in the tree, but without painting anything,\nwithout making the child available for hit testing, and without taking any\nroom in the parent.", "detail": "", "kind": 7, "label": "RenderOffstage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FixedColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a specific number of pixels.\n\nThis is the cheapest way to size a column.", "detail": "", "kind": 7, "label": "FixedColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].", "detail": "", "kind": 7, "label": "ClipContext" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFloatingPinnedPersistentHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which shrinks and then remains pinned to\nthe start of the viewport like a [RenderSliverPinnedPersistentHeader], but\nimmediately grows when the user scrolls in the reverse direction.\n\nSee also:\n\n * [RenderSliverFloatingPersistentHeader], which is similar but scrolls off\n the top rather than sticking to it.", "detail": "", "kind": 7, "label": "RenderSliverFloatingPinnedPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the amount of space occupied by a [RenderSliver].\n\nA sliver can occupy space in several different ways, which is why this class\ncontains multiple values.", "detail": "", "kind": 7, "label": "SliverGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSizedOverflowBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is a specific size but passes its original constraints\nthrough to its child, which it allows to overflow.\n\nIf the child's resulting size differs from this render object's size, then\nthe child is aligned according to the [alignment] property.\n\nSee also:\n\n * [RenderUnconstrainedBox] for a render object that allows its children\n to render themselves unconstrained, expands to fit them, and considers\n overflow to be an error.\n * [RenderConstrainedOverflowBox] for a render object that imposes\n different constraints on its child than it gets from its parent,\n possibly allowing the child to overflow the parent.", "detail": "", "kind": 7, "label": "RenderSizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Error class used to report Flutter-specific assertion failures and\ncontract violations.", "detail": "", "kind": 7, "label": "FlutterError" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a circle within the available space.\n\nTypically used with [ShapeDecoration] to draw a circle.\n\nThe [dimensions] assume that the border is being used in a square space.\nWhen applied to a rectangular space, the border paints in the center of the\nrectangle.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [Border], which, when used with [BoxDecoration], can also\n describe a circle.", "detail": "", "kind": 7, "label": "CircleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverWithKeepAliveMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This class exists to dissociate [KeepAlive] from [RenderSliverMultiBoxAdaptor].\n\n[RenderSliverWithKeepAliveMixin.setupParentData] must be implemented to use\na parentData class that uses the right mixin or whatever is appropriate.", "detail": "", "kind": 7, "label": "RenderSliverWithKeepAliveMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has made contact with the device.", "detail": "", "kind": 7, "label": "PointerDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnimatedOpacity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Makes its child partially transparent, driven from an [Animation].\n\nThis is a variant of [RenderOpacity] that uses an [Animation<double>] rather\nthan a [double] to control the opacity.", "detail": "", "kind": 7, "label": "RenderAnimatedOpacity" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle.\n\nUsed by [BoxDecoration] when the shape is a [BoxShape.rectangle].\n\nThe [BorderRadius] class specifies offsets in terms of visual corners, e.g.\n[topLeft]. These values are not affected by the [TextDirection]. To support\nboth left-to-right and right-to-left layouts, consider using\n[BorderRadiusDirectional], which is expressed in terms that are relative to\na [TextDirection] (typically obtained from the ambient [Directionality]).", "detail": "", "kind": 7, "label": "BorderRadius" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsOwner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Owns [SemanticsNode] objects and notifies listeners of changes to the\nrender tree semantics.\n\nTo listen for semantic updates, call [PipelineOwner.ensureSemantics] to\nobtain a [SemanticsHandle]. This will create a [SemanticsOwner] if\nnecessary.", "detail": "", "kind": 7, "label": "SemanticsOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Data collected during a hit test about a specific [HitTestTarget].\n\nSubclass this object to pass additional information from the hit test phase\nto the event propagation phase.", "detail": "", "kind": 7, "label": "HitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderTable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A table where the columns and rows are sized to fit the contents of the cells.", "detail": "", "kind": 7, "label": "RenderTable" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIgnorePointer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is invisible during hit testing.\n\nWhen [ignoring] is true, this render object (and its subtree) is invisible\nto hit testing. It still consumes space during layout and paints its child\nas usual. It just cannot be the target of located events, because its render\nobject returns false from [hitTest].\n\nWhen [ignoringSemantics] is true, the subtree will be invisible to\nthe semantics layer (and thus e.g. accessibility tools). If\n[ignoringSemantics] is null, it uses the value of [ignoring].\n\nSee also:\n\n * [RenderAbsorbPointer], which takes the pointer events but prevents any\n nodes in the subtree from seeing them.", "detail": "", "kind": 7, "label": "RenderIgnorePointer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the decoding and scheduling of image frames.\n\nNew frames will only be emitted while there are registered listeners to the\nstream (registered with [addListener]).\n\nThis class deals with 2 types of frames:\n\n * image frames - image frames of an animated image.\n * app frames - frames that the flutter engine is drawing to the screen to\n show the app GUI.\n\nFor single frame images the stream will only complete once.\n\nFor animated images, this class eagerly decodes the next image frame,\nand notifies the listeners that a new frame is ready on the first app frame\nthat is scheduled after the image frame duration has passed.\n\nScheduling new timers only from scheduled app frames, makes sure we pause\nthe animation when the app is not visible (as new app frames will not be\nscheduled).\n\nSee the following timeline example:\n\n | Time | Event | Comment |\n |------|--------------------------------------------|---------------------------|\n | t1 | App frame scheduled (image frame A posted) | |\n | t2 | App frame scheduled | |\n | t3 | App frame scheduled | |\n | t4 | Image frame B decoded | |\n | t5 | App frame scheduled | t5 - t1 < frameB_duration |\n | t6 | App frame scheduled (image frame B posted) | t6 - t1 > frameB_duration |\n", "detail": "", "kind": 7, "label": "MultiFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image in the render tree.\n\nThe render image attempts to find a size for itself that fits in the given\nconstraints and preserves the image's intrinsic aspect ratio.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "RenderImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[ParentData] for use with [RenderListWheelViewport].", "detail": "", "kind": 7, "label": "ListWheelParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnounceSemanticsEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement.\n\nThis should be used for announcement that are not seamlessly announced by\nthe system as a result of a UI state change.\n\nFor example a camera application can use this method to make accessibility\nannouncements regarding objects in the viewfinder.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "AnnounceSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SweepGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D sweep gradient.\n\nThis class is used by [BoxDecoration] to represent sweep gradients. This\nabstracts out the arguments to the [new ui.Gradient.sweep] constructor from\nthe `dart:ui` library.\n\nA gradient has a [center], a [startAngle], and an [endAngle]. The [startAngle]\ncorresponds to 0.0, and the [endAngle] corresponds to 1.0. These angles are\nexpressed in radians.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [startAngle] and after [endAngle] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [SweepGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a different color in each quadrant.\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: SweepGradient(\n center: FractionalOffset.center,\n startAngle: 0.0,\n endAngle: math.pi * 2,\n colors: const <Color>[\n Color(0xFF4285F4), // blue\n Color(0xFF34A853), // green\n Color(0xFFFBBC05), // yellow\n Color(0xFFEA4335), // red\n Color(0xFF4285F4), // blue again to seamlessly transition to the start\n ],\n stops: const <double>[0.0, 0.25, 0.5, 0.75, 1.0],\n ),\n ),\n )\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [BoxDecoration], which can take a [SweepGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "SweepGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPhysicalShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a physical shape layer that clips its child to a [Path].\n\nA physical shape layer casts a shadow based on its [elevation].\n\nSee also:\n\n * [RenderPhysicalModel], which is optimized for rounded rectangles and\n circles.", "detail": "", "kind": 7, "label": "RenderPhysicalShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OrdinalSortKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [SemanticsSortKey] that sorts simply based on the `double` value it is\ngiven.\n\nThe [OrdinalSortKey] compares itself with other [OrdinalSortKey]s\nto sort based on the order it is given.\n\nThe ordinal value `order` is typically a whole number, though it can be\nfractional, e.g. in order to fit between two other consecutive whole\nnumbers. The value must be finite (it cannot be [double.nan],\n[double.infinity], or [double.negativeInfinity]).", "detail": "", "kind": 7, "label": "OrdinalSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderUiKitView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object for an iOS UIKit UIView.\n\nEmbedding UIViews is still in release preview, to enable the preview for an iOS app add a boolean\nfield with the key 'io.flutter.embedded_views_preview' and the value set to 'YES' to the\napplication's Info.plist file. A list of open issued with embedding UIViews is available on\n[Github](https://github.com/flutter/flutter/issues?q=is%3Aopen+is%3Aissue+label%3A%22a%3A+platform-views%22+label%3A%22%E2%8C%BA%E2%80%AC+platform-ios%22)\n\n[RenderUiKitView] is responsible for sizing and displaying an iOS\n[UIView](https://developer.apple.com/documentation/uikit/uiview).\n\nUIViews are added as sub views of the FlutterView and are composited by Quartz.\n\n\n\nSee also:\n\n * [UiKitView] which is a widget that is used to show a UIView.\n * [PlatformViewsService] which is a service for controlling platform views.", "detail": "", "kind": 7, "label": "RenderUiKitView" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configuration information passed to the [ImageProvider.resolve] method to\nselect a specific image.\n\nSee also:\n\n * [createLocalImageConfiguration], which creates an [ImageConfiguration]\n based on ambient configuration in a [Widget] environment.\n * [ImageProvider], which uses [ImageConfiguration] objects to determine\n which image to obtain.", "detail": "", "kind": 7, "label": "ImageConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderingFlutterBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A concrete binding for applications that use the Rendering framework\ndirectly. This is the glue that binds the framework to the Flutter engine.\n\nYou would only use this binding if you are writing to the\nrendering layer directly. If you are writing to a higher-level\nlibrary, such as the Flutter Widgets library, then you would use\nthat layer's binding.\n\nSee also [BindingBase].", "detail": "", "kind": 7, "label": "RenderingFlutterBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Interface for drawing an image to warm up Skia shader compilations.\n\nWhen Skia first sees a certain type of draw operation on the GPU, it needs\nto compile the corresponding shader. The compilation can be slow (20ms-\n200ms). Having that time as startup latency is often better than having\njank in the middle of an animation.\n\nTherefore, we use this during the [PaintingBinding.initInstances] call to\nmove common shader compilations from animation time to startup time. By\ndefault, a [DefaultShaderWarmUp] is used. If needed, app developers can\ncreate a custom [ShaderWarmUp] subclass and hand it to\n[PaintingBinding.shaderWarmUp] (so it replaces [DefaultShaderWarmUp])\nbefore [PaintingBinding.initInstances] is called. Usually, that can be\ndone before calling [runApp].\n\nTo determine whether a draw operation is useful for warming up shaders,\ncheck whether it improves the slowest GPU frame. Also, tracing with\n`flutter run --profile --trace-skia` may reveal whether there is shader-\ncompilation-related jank. If there is such jank, some long\n`GrGLProgramBuilder::finalize` calls would appear in the middle of an\nanimation. Their parent calls, which look like `XyzOp` (e.g., `FillRecOp`,\n`CircularRRectOp`) would suggest Xyz draw operations are causing the\nshaders to be compiled. A useful shader warm-up draw operation would\neliminate such long compilation calls in the animation. To double-check\nthe warm-up, trace with `flutter run --profile --trace-skia --start-\npaused`. The `GrGLProgramBuilder` with the associated `XyzOp` should\nappear during startup rather than in the middle of a later animation.\n\nThis warm-up needs to be run on each individual device because the shader\ncompilation depends on the specific GPU hardware and driver a device has. It\ncan't be pre-computed during the Flutter engine compilation as the engine is\ndevice-agnostic.\n\nIf no warm-up is desired (e.g., when the startup latency is crucial), set\n[PaintingBinding.shaderWarmUp] either to a custom ShaderWarmUp with an empty\n[warmUpOnCanvas] or null.\n\nSee also:\n\n * [PaintingBinding.shaderWarmUp], the actual instance of [ShaderWarmUp]\n that's used to warm up the shaders.", "detail": "", "kind": 7, "label": "ShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithFixedCrossAxisCount", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with a fixed number of tiles in the cross axis.\n\nFor example, if the grid is vertical, this delegate will create a layout\nwith a fixed number of columns. If the grid is horizontal, this delegate\nwill create a layout with a fixed number of rows.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithFixedCrossAxisCount" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderRepaintBoundary", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates a separate display list for its child.\n\nThis render object creates a separate display list for its child, which\ncan improve performance if the subtree repaints at different times than\nthe surrounding parts of the tree. Specifically, when the child does not\nrepaint but its parent does, we can re-use the display list we recorded\npreviously. Similarly, when the child repaints but the surround tree does\nnot, we can re-record its display list without re-recording the display list\nfor the surround tree.\n\nIn some cases, it is necessary to place _two_ (or more) repaint boundaries\nto get a useful effect. Consider, for example, an e-mail application that\nshows an unread count and a list of e-mails. Whenever a new e-mail comes in,\nthe list would update, but so would the unread count. If only one of these\ntwo parts of the application was behind a repaint boundary, the entire\napplication would repaint each time. On the other hand, if both were behind\na repaint boundary, a new e-mail would only change those two parts of the\napplication and the rest of the application would not repaint.\n\nTo tell if a particular RenderRepaintBoundary is useful, run your\napplication in checked mode, interacting with it in typical ways, and then\ncall [debugDumpRenderTree]. Each RenderRepaintBoundary will include the\nratio of cases where the repaint boundary was useful vs the cases where it\nwas not. These counts can also be inspected programmatically using\n[debugAsymmetricPaintCount] and [debugSymmetricPaintCount] respectively.", "detail": "", "kind": 7, "label": "RenderRepaintBoundary" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that creates a [Shader] for a given [Rect].\n\nUsed by [RenderShaderMask] and the [ShaderMask] widget.", "detail": "(Rect bounds) → Shader", "kind": 7, "label": "ShaderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EnumProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An property than displays enum values tersely.\n\nThe enum value is displayed with the class name stripped. For example:\n[HitTestBehavior.deferToChild] is shown as `deferToChild`.\n\nSee also:\n\n * [DiagnosticsProperty] which documents named parameters common to all\n [DiagnosticsProperty].", "detail": "", "kind": 7, "label": "EnumProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomClipper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for providing custom clips.\n\nThis class is used by a number of clip widgets (e.g., [ClipRect] and\n[ClipPath]).\n\nThe [getClip] method is called whenever the custom clip needs to be updated.\n\nThe [shouldReclip] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to update the clip provided by this class is to\nsupply a `reclip` argument to the constructor of the [CustomClipper]. The\ncustom object will listen to this animation and update the clip whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nSee also:\n\n * [ClipRect], which can be customized with a [CustomClipper<Rect>].\n * [ClipRRect], which can be customized with a [CustomClipper<RRect>].\n * [ClipOval], which can be customized with a [CustomClipper<Rect>].\n * [ClipPath], which can be customized with a [CustomClipper<Path>].\n * [ShapeBorderClipper], for specifying a clip path using a [ShapeBorder].", "detail": "", "kind": 7, "label": "CustomClipper" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAbsorbPointer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that absorbs pointers during hit testing.\n\nWhen [absorbing] is true, this render object prevents its subtree from\nreceiving pointer events by terminating hit testing at itself. It still\nconsumes space during layout and paints its child as usual. It just prevents\nits children from being the target of located events, because its render\nobject returns true from [hitTest].\n\nSee also:\n\n * [RenderIgnorePointer], which has the opposite effect: removing the\n subtree from considering entirely for the purposes of hit testing.", "detail": "", "kind": 7, "label": "RenderAbsorbPointer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MoveCursorHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [SemanticsAction]s that move the cursor.\n\nIf `extendSelection` is set to true the cursor movement should extend the\ncurrent selection or (if nothing is currently selected) start a selection.", "detail": "(bool extendSelection) → void", "kind": 7, "label": "MoveCursorHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property with a [value] of type [T].\n\nIf the default `value.toString()` does not provide an adequate description\nof the value, specify `description` defining a custom description.\n\nThe [showSeparator] property indicates whether a separator should be placed\nbetween the property [name] and its [value].", "detail": "", "kind": 7, "label": "DiagnosticsProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverLogicalParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by parents of slivers that position their\nchildren using layout offsets.\n\nThis data structure is optimized for fast layout. It is best used by parents\nthat expect to have many children whose relative positions don't change even\nwhen the scroll offset does.", "detail": "", "kind": 7, "label": "SliverLogicalParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderSide", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A side of a border of a box.\n\nA [Border] consists of four [BorderSide] objects: [Border.top],\n[Border.left], [Border.right], and [Border.bottom].\n\n\nThis sample shows how [BorderSide] objects can be used in a [Container], via\na [BoxDecoration] and a [Border], to decorate some [Text]. In this example,\nthe text has a thick bar above it that is light blue, and a thick bar below\nit that is a darker shade of blue.\n\n```dart\nContainer(\n padding: EdgeInsets.all(8.0),\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(width: 16.0, color: Colors.lightBlue.shade50),\n bottom: BorderSide(width: 16.0, color: Colors.lightBlue.shade900),\n ),\n ),\n child: Text('Flutter in the sky', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [Border], which uses [BorderSide] objects to represent its sides.\n * [BoxDecoration], which optionally takes a [Border] object.\n * [TableBorder], which is similar to [Border] but has two more sides\n ([TableBorder.horizontalInside] and [TableBorder.verticalInside]), both\n of which are also [BorderSide] objects.", "detail": "", "kind": 7, "label": "BorderSide" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SingleChildLayoutDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate for computing the layout of a render object with a single child.\n\nUsed by [CustomSingleChildLayout] (in the widgets library) and\n[RenderCustomSingleChildLayoutBox] (in the rendering library).\n\nWhen asked to layout, [CustomSingleChildLayout] first calls [getSize] with\nits incoming constraints to determine its size. It then calls\n[getConstraintsForChild] to determine the constraints to apply to the child.\nAfter the child completes its layout, [RenderCustomSingleChildLayoutBox]\ncalls [getPositionForChild] to determine the child's position.\n\nThe [shouldRelayout] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\nThe most efficient way to trigger a relayout is to supply a relayout\nargument to the constructor of the [SingleChildLayoutDelegate]. The custom\nobject will listen to this value and relayout whenever the animation\nticks, avoiding both the build phase of the pipeline.\n\nSee also:\n\n * [CustomSingleChildLayout], the widget that uses this delegate.\n * [RenderCustomSingleChildLayoutBox], render object that uses this\n delegate.", "detail": "", "kind": 7, "label": "SingleChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data used by [RenderTable] for its children.", "detail": "", "kind": 7, "label": "TableCellParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderConstrainedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Imposes additional constraints on its child.\n\nA render constrained box proxies most functions in the render box protocol\nto its child, except that when laying out its child, it tightens the\nconstraints provided by its parent by enforcing the [additionalConstraints]\nas well.\n\nFor example, if you wanted [child] to have a minimum height of 50.0 logical\npixels, you could use `const BoxConstraints(minHeight: 50.0)` as the\n[additionalConstraints].", "detail": "", "kind": 7, "label": "RenderConstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[ParentData] used by [RenderCustomMultiChildLayoutBox].", "detail": "", "kind": 7, "label": "MultiChildLayoutParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderLeaderLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides an anchor for a [RenderFollowerLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the corresponding widget.\n * [LeaderLayer], the layer that this render object creates.", "detail": "", "kind": 7, "label": "RenderLeaderLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TooltipSemanticsEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event for a semantic announcement of a tooltip.\n\nThis is only used by Android to announce tooltip values.", "detail": "", "kind": 7, "label": "TooltipSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An image for a box decoration.\n\nThe image is painted using [paintImage], which describes the meanings of the\nvarious fields on this class in more detail.", "detail": "", "kind": 7, "label": "DecorationImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A node that represents some semantic data.\n\nThe semantics tree is maintained during the semantics phase of the pipeline\n(i.e., during [PipelineOwner.flushSemantics]), which happens after\ncompositing. The semantics tree is then uploaded into the engine for use\nby assistive technology.", "detail": "", "kind": 7, "label": "SemanticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsNodeVisitor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called for each [SemanticsNode].\n\nReturn false to stop visiting nodes.\n\nUsed by [SemanticsNode.visitChildren].", "detail": "(SemanticsNode node) → bool", "kind": 7, "label": "SemanticsNodeVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStream", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A handle to an image resource.\n\nImageStream represents a handle to a [dart:ui.Image] object and its scale\n(together represented by an [ImageInfo] object). The underlying image object\nmight change over time, either because the image is animating or because the\nunderlying image resource was mutated.\n\nImageStream objects can also represent an image that hasn't finished\nloading.\n\nImageStream objects are backed by [ImageStreamCompleter] objects.\n\nSee also:\n\n * [ImageProvider], which has an example that includes the use of an\n [ImageStream] in a [Widget].", "detail": "", "kind": 7, "label": "ImageStream" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewHitTestBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How an embedded platform view behave during hit tests.", "detail": "", "kind": 13, "label": "PlatformViewHitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderWrap].", "detail": "", "kind": 7, "label": "WrapParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has moved with respect to the device while the pointer is in\ncontact with the device.\n\nSee also:\n\n * [PointerHoverEvent], which reports movement while the pointer is not in\n contact with the device.", "detail": "", "kind": 7, "label": "PointerMoveEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverPinnedPersistentHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which never scrolls off the viewport in\nthe positive scroll direction, and which first scrolls on at a full size but\nthen shrinks as the viewport continues to scroll.\n\nThis sliver avoids overlapping other earlier slivers where possible.", "detail": "", "kind": 7, "label": "RenderSliverPinnedPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderProxyBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for render objects that resemble their children.\n\nA proxy box has a single child and simply mimics all the properties of that\nchild by calling through to the child for each function in the render box\nprotocol. For example, a proxy box determines its size by asking its child\nto layout with the same constraints and then matching the size.\n\nA proxy box isn't useful on its own because you might as well just replace\nthe proxy box with its child. However, RenderProxyBox is a useful base class\nfor render objects that wish to mimic most, but not all, of the properties\nof their child.", "detail": "", "kind": 7, "label": "RenderProxyBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the user changes the selection\n(including the cursor location).\n\nUsed by [RenderEditable.onSelectionChanged].", "detail": "(TextSelection selection, RenderEditable renderObject, SelectionChangedCause cause) → void", "kind": 7, "label": "SelectionChangedHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RevealedOffset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Return value for [RenderAbstractViewport.getOffsetToReveal].\n\nIt indicates the [offset] required to reveal an element in a viewport and\nthe [rect] position said element would have in the viewport at that\n[offset].", "detail": "", "kind": 7, "label": "RevealedOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class to describe how wide a column in a [RenderTable] should be.\n\nTo size a column to a specific number of pixels, use a [FixedColumnWidth].\nThis is the cheapest way to size a column.\n\nOther algorithms that are relatively cheap include [FlexColumnWidth], which\ndistributes the space equally among the flexible columns,\n[FractionColumnWidth], which sizes a column based on the size of the\ntable's container.", "detail": "", "kind": 7, "label": "TableColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data used by [RenderBox] and its subclasses.", "detail": "", "kind": 7, "label": "BoxParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccessibilityFeatures", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Additional accessibility features that may be enabled by the platform.\n\nIt is not possible to enable these settings from Flutter, instead they are\nused by the platform to indicate that additional accessibility features are\nenabled.", "detail": "", "kind": 7, "label": "AccessibilityFeatures" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BackdropFilterLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a filter to the existing contents of the scene.", "detail": "", "kind": 7, "label": "BackdropFilterLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxHitTestEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A hit test entry used by [RenderBox].", "detail": "", "kind": 7, "label": "BoxHitTestEntry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextureBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle upon which a backend texture is mapped.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture box refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nTexture boxes are repainted autonomously as dictated by the backend (e.g. on\narrival of a video frame). Such repainting generally does not involve\nexecuting Dart code.\n\nThe size of the rectangle is determined by the parent, and the texture is\nautomatically scaled to fit.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "TextureBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a given transformation matrix to its\nchildren.\n\nThis class inherits from [OffsetLayer] to make it one of the layers that\ncan be used at the root of a [RenderObject] hierarchy.", "detail": "", "kind": 7, "label": "TransformLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderShrinkWrappingViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is bigger on the inside and shrink wraps its children\nin the main axis.\n\n[RenderShrinkWrappingViewport] displays a subset of its children according\nto its own dimensions and the given [offset]. As the offset varies, different\nchildren are visible through the viewport.\n\n[RenderShrinkWrappingViewport] differs from [RenderViewport] in that\n[RenderViewport] expands to fill the main axis whereas\n[RenderShrinkWrappingViewport] sizes itself to match its children in the\nmain axis. This shrink wrapping behavior is expensive because the children,\nand hence the viewport, could potentially change size whenever the [offset]\nchanges (e.g., because of a collapsing header).\n\n[RenderShrinkWrappingViewport] cannot contain [RenderBox] children directly.\nInstead, use a [RenderSliverList], [RenderSliverFixedExtentList],\n[RenderSliverGrid], or a [RenderSliverToBoxAdapter], for example.\n\nSee also:\n\n * [RenderViewport], a viewport that does not shrink-wrap its contents.\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which allows a [RenderBox] object to be\n placed inside a [RenderSliver] (the opposite of this class).", "detail": "", "kind": 7, "label": "RenderShrinkWrappingViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomSemanticsAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier of a custom semantics action.\n\nCustom semantics actions can be provided to make complex user\ninteractions more accessible. For instance, if an application has a\ndrag-and-drop list that requires the user to press and hold an item\nto move it, users interacting with the application using a hardware\nswitch may have difficulty. This can be made accessible by creating custom\nactions and pairing them with handlers that move a list item up or down in\nthe list.\n\nIn Android, these actions are presented in the local context menu. In iOS,\nthese are presented in the radial context menu.\n\nLocalization and text direction do not automatically apply to the provided\nlabel or hint.\n\nInstances of this class should either be instantiated with const or\nnew instances cached in static fields.\n\nSee also:\n\n * [SemanticsProperties], where the handler for a custom action is provided.", "detail": "", "kind": 7, "label": "CustomSemanticsAction" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipPath", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using a path.\n\nTakes a delegate whose primary method returns a path that should\nbe used to prevent the child from painting outside the path.\n\nClipping to a path is expensive. Certain shapes have more\noptimized render objects:\n\n * To clip to a rectangle, consider [RenderClipRect].\n * To clip to an oval or circle, consider [RenderClipOval].\n * To clip to a rounded rectangle, consider [RenderClipRRect].", "detail": "", "kind": 7, "label": "RenderClipPath" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable style in which paint text.\n\n### Bold\n\nHere, a single line of text in a [Text] widget is given a specific style\noverride. The style is mixed with the ambient [DefaultTextStyle] by the\n[Text] widget.\n\n```dart\nText(\n 'No, we need bold strokes. We need this plan.',\n style: TextStyle(fontWeight: FontWeight.bold),\n)\n```\n\n### Italics\n\nAs in the previous example, the [Text] widget is given a specific style\noverride which is implicitly mixed with the ambient [DefaultTextStyle].\n\n```dart\nText(\n 'Welcome to the present, we\\'re running a real nation.',\n style: TextStyle(fontStyle: FontStyle.italic),\n)\n```\n\n### Opacity and Color\n\nEach line here is progressively more opaque. The base color is\n[material.Colors.black], and [Color.withOpacity] is used to create a\nderivative color with the desired opacity. The root [TextSpan] for this\n[RichText] widget is explicitly given the ambient [DefaultTextStyle], since\n[RichText] does not do that automatically. The inner [TextStyle] objects are\nimplicitly mixed with the parent [TextSpan]'s [TextSpan.style].\n\nIf [color] is specified, [foreground] must be null and vice versa. [color] is\ntreated as a shorthand for `Paint()..color = color`.\n\nIf [backgroundColor] is specified, [background] must be null and vice versa.\nThe [backgroundColor] is treated as a shorthand for\n`background: Paint()..color = backgroundColor`.\n\n```dart\nRichText(\n text: TextSpan(\n style: DefaultTextStyle.of(context).style,\n children: <TextSpan>[\n TextSpan(\n text: 'You don\\'t have the votes.\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.6)),\n ),\n TextSpan(\n text: 'You don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(0.8)),\n ),\n TextSpan(\n text: 'You\\'re gonna need congressional approval and you don\\'t have the votes!\\n',\n style: TextStyle(color: Colors.black.withOpacity(1.0)),\n ),\n ],\n ),\n)\n```\n\n### Size\n\nIn this example, the ambient [DefaultTextStyle] is explicitly manipulated to\nobtain a [TextStyle] that doubles the default font size.\n\n```dart\nText(\n 'These are wise words, enterprising men quote \\'em.',\n style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),\n)\n```\n\n### Line height\n\nThe [height] property can be used to change the line height. Here, the line\nheight is set to 5 times the font size, so that the text is very spaced out.\n\n```dart\nText(\n 'Don\\'t act surprised, you guys, cuz I wrote \\'em!',\n style: TextStyle(height: 5.0),\n)\n```\n\n### Wavy red underline with black text\n\nStyles can be combined. In this example, the misspelt word is drawn in black\ntext and underlined with a wavy red line to indicate a spelling error. (The\nremainder is styled according to the Flutter default text styles, not the\nambient [DefaultTextStyle], since no explicit style is given and [RichText]\ndoes not automatically use the ambient [DefaultTextStyle].)\n\n```dart\nRichText(\n text: TextSpan(\n text: 'Don\\'t tax the South ',\n children: <TextSpan>[\n TextSpan(\n text: 'cuz',\n style: TextStyle(\n color: Colors.black,\n decoration: TextDecoration.underline,\n decorationColor: Colors.red,\n decorationStyle: TextDecorationStyle.wavy,\n ),\n ),\n TextSpan(\n text: ' we got it made in the shade',\n ),\n ],\n ),\n)\n```\n\n### Custom Fonts\n\nCustom fonts can be declared in the `pubspec.yaml` file as shown below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: fonts/Raleway-Regular.ttf\n - asset: fonts/Raleway-Medium.ttf\n weight: 500\n - asset: assets/fonts/Raleway-SemiBold.ttf\n weight: 600\n - family: Schyler\n fonts:\n - asset: fonts/Schyler-Regular.ttf\n - asset: fonts/Schyler-Italic.ttf\n style: italic\n```\n\nThe `family` property determines the name of the font, which you can use in\nthe [fontFamily] argument. The `asset` property is a path to the font file,\nrelative to the `pubspec.yaml` file. The `weight` property specifies the\nweight of the glyph outlines in the file as an integer multiple of 100\nbetween 100 and 900. This corresponds to the [FontWeight] class and can be\nused in the [fontWeight] argument. The `style` property specifies whether the\noutlines in the file are `italic` or `normal`. These values correspond to\nthe [FontStyle] class and can be used in the [fontStyle] argument.\n\nTo select a custom font, create [TextStyle] using the [fontFamily]\nargument as shown in the example below:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\nTo use a font family defined in a package, the [package] argument must be\nprovided. For instance, suppose the font declaration above is in the\n`pubspec.yaml` of a package named `my_package` which the app depends on.\nThen creating the TextStyle is done as follows:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway', package: 'my_package')\n```\n\nIf the package internally uses the font it defines, it should still specify\nthe `package` argument when creating the text style as in the example above.\n\nA package can also provide font files without declaring a font in its\n`pubspec.yaml`. These files should then be in the `lib/` folder of the\npackage. The font files will not automatically be bundled in the app, instead\nthe app can use these selectively when declaring a font. Suppose a package\nnamed `my_package` has:\n\n```\nlib/fonts/Raleway-Medium.ttf\n```\n\nThen the app can declare a font like in the example below:\n\n```yaml\nflutter:\n fonts:\n - family: Raleway\n fonts:\n - asset: assets/fonts/Raleway-Regular.ttf\n - asset: packages/my_package/fonts/Raleway-Medium.ttf\n weight: 500\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nIn this case, since the app locally defines the font, the TextStyle is\ncreated without the `package` argument:\n\n```dart\nconst TextStyle(fontFamily: 'Raleway')\n```\n\n### Custom Font Fallback\n\nA custom [fontFamilyFallback] list can be provided. The list should be an\nordered list of strings of font family names in the order they will be attempted.\n\nThe fonts in [fontFamilyFallback] will be used only if the requested glyph is\nnot present in the [fontFamily].\n\nThe fallback order is:\n\n * [fontFamily]\n * [fontFamilyFallback] in order of first to last.\n\nThe glyph used will always be the first matching version in fallback order.\n\nThe [fontFamilyFallback] property is commonly used to specify different font\nfamilies for multilingual text spans as well as separate fonts for glyphs such\nas emojis.\n\nIn the following example, any glyphs not present in the font `Raleway` will be attempted\nto be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`:\n\n```dart\nconst TextStyle(\n fontFamily: 'Raleway',\n fontFamilyFallback: <String>[\n 'Noto Sans CJK SC',\n 'Noto Color Emoji',\n ],\n)\n```\n\nIf all custom fallback font families are exhausted and no match was found\nor no custom fallback was provided, the platform font fallback will be used.\n\n### Inconsistent platform fonts\n\nSince Flutter's font discovery for default fonts depends on the fonts present\non the device, it is not safe to assume all default fonts will be available or\nconsistent across devices.\n\nA known example of this is that Samsung devices ship with a CJK font that has\nsmaller line spacing than the Android default. This results in Samsung devices\ndisplaying more tightly spaced text than on other Android devices when no\ncustom font is specified.\n\nTo avoid this, a custom font should be specified if absolute font consistency\nis required for your application.\n\nSee also:\n\n * [Text], the widget for showing text in a single style.\n * [DefaultTextStyle], the widget that specifies the default text styles for\n [Text] widgets, configured using a [TextStyle].\n * [RichText], the widget for showing a paragraph of mix-style text.\n * [TextSpan], the class that wraps a [TextStyle] for the purposes of\n passing it to a [RichText].\n * [TextStyle](https://api.flutter.dev/flutter/dart-ui/TextStyle-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StadiumBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border that fits a stadium-shaped border (a box with semicircles on the ends)\nwithin the rectangle of the widget it is applied to.\n\nTypically used with [ShapeDecoration] to draw a stadium border.\n\nIf the rectangle is taller than it is wide, then the semicircles will be on the\ntop and bottom, and on the left and right otherwise.\n\nSee also:\n\n * [BorderSide], which is used to describe the border of the stadium.", "detail": "", "kind": 7, "label": "StadiumBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestResult", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The result of performing a hit test.", "detail": "", "kind": 7, "label": "HitTestResult" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxConstraints", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderBox] layout.\n\nA [Size] respects a [BoxConstraints] if, and only if, all of the following\nrelations hold:\n\n* [minWidth] <= [Size.width] <= [maxWidth]\n* [minHeight] <= [Size.height] <= [maxHeight]\n\nThe constraints themselves must satisfy these relations:\n\n* 0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]\n* 0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]\n\n[double.infinity] is a legal value for each constraint.\n\n## The box layout model\n\nRender objects in the Flutter framework are laid out by a one-pass layout\nmodel which walks down the render tree passing constraints, then walks back\nup the render tree passing concrete geometry.\n\nFor boxes, the constraints are [BoxConstraints], which, as described herein,\nconsist of four numbers: a minimum width [minWidth], a maximum width\n[maxWidth], a minimum height [minHeight], and a maximum height [maxHeight].\n\nThe geometry for boxes consists of a [Size], which must satisfy the\nconstraints described above.\n\nEach [RenderBox] (the objects that provide the layout models for box\nwidgets) receives [BoxConstraints] from its parent, then lays out each of\nits children, then picks a [Size] that satisfies the [BoxConstraints].\n\nRender objects position their children independently of laying them out.\nFrequently, the parent will use the children's sizes to determine their\nposition. A child does not know its position and will not necessarily be\nlaid out again, or repainted, if its position changes.\n\n## Terminology\n\nWhen the minimum constraints and the maximum constraint in an axis are the\nsame, that axis is _tightly_ constrained. See: [new\nBoxConstraints.tightFor], [new BoxConstraints.tightForFinite], [tighten],\n[hasTightWidth], [hasTightHeight], [isTight].\n\nAn axis with a minimum constraint of 0.0 is _loose_ (regardless of the\nmaximum constraint; if it is also 0.0, then the axis is simultaneously tight\nand loose!). See: [new BoxConstraints.loose], [loosen].\n\nAn axis whose maximum constraint is not infinite is _bounded_. See:\n[hasBoundedWidth], [hasBoundedHeight].\n\nAn axis whose maximum constraint is infinite is _unbounded_. An axis is\n_expanding_ if it is tightly infinite (its minimum and maximum constraints\nare both infinite). See: [new BoxConstraints.expand].\n\nAn axis whose _minimum_ constraint is infinite is just said to be _infinite_\n(since by definition the maximum constraint must also be infinite in that\ncase). See: [hasInfiniteWidth], [hasInfiniteHeight].\n\nA size is _constrained_ when it satisfies a [BoxConstraints] description.\nSee: [constrain], [constrainWidth], [constrainHeight],\n[constrainDimensions], [constrainSizeAndAttemptToPreserveAspectRatio],\n[isSatisfiedBy].", "detail": "", "kind": 7, "label": "BoxConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerRenderObjectMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Generic mixin for render objects with a list of children.\n\nProvides a child model for a render object subclass that has a doubly-linked\nlist of children.", "detail": "", "kind": 7, "label": "ContainerRenderObjectMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugOverflowIndicatorMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An mixin indicator that is drawn when a [RenderObject] overflows its\ncontainer.\n\nThis is used by some RenderObjects that are containers to show where, and by\nhow much, their children overflow their containers. These indicators are\ntypically only shown in a debug build (where the call to\n[paintOverflowIndicator] is surrounded by an assert).\n\nThis class will also print a debug message to the console when the container\noverflows. It will print on the first occurrence, and once after each time that\n[reassemble] is called.\n\n\n```dart\nclass MyRenderObject extends RenderAligningShiftedBox with DebugOverflowIndicatorMixin {\n MyRenderObject({\n AlignmentGeometry alignment,\n TextDirection textDirection,\n RenderBox child,\n }) : super.mixin(alignment, textDirection, child);\n\n Rect _containerRect;\n Rect _childRect;\n\n @override\n void performLayout() {\n // ...\n final BoxParentData childParentData = child.parentData;\n _containerRect = Offset.zero & size;\n _childRect = childParentData.offset & child.size;\n }\n\n @override\n void paint(PaintingContext context, Offset offset) {\n // Do normal painting here...\n // ...\n\n assert(() {\n paintOverflowIndicator(context, offset, _containerRect, _childRect);\n return true;\n }());\n }\n}\n```\n\nSee also:\n\n * [RenderUnconstrainedBox] and [RenderFlex] for examples of classes that use this indicator mixin.", "detail": "", "kind": 7, "label": "DebugOverflowIndicatorMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAndroidView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object for an Android view.\n\nRequires Android API level 20 or greater.\n\n[RenderAndroidView] is responsible for sizing, displaying and passing touch events to an\nAndroid [View](https://developer.android.com/reference/android/view/View).\n\nThe render object's layout behavior is to fill all available space, the parent of this object must\nprovide bounded layout constraints.\n\nThe render object participates in Flutter's [GestureArena]s, and dispatches touch events to the\nplatform view iff it won the arena. Specific gestures that should be dispatched to the platform\nview can be specified with factories in the `gestureRecognizers` constructor parameter or\nby calling `updateGestureRecognizers`. If the set of gesture recognizers is empty, the gesture\nwill be dispatched to the platform view iff it was not claimed by any other gesture recognizer.\n\nSee also:\n\n * [AndroidView] which is a widget that is used to show an Android view.\n * [PlatformViewsService] which is a service for controlling platform views.", "detail": "", "kind": 7, "label": "RenderAndroidView" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two alignments.\n\nThis class specializes the interpolation of [Tween<Alignment>] to be\nappropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentGeometryTween], which interpolates between two\n [AlignmentGeometry] objects.", "detail": "", "kind": 7, "label": "AlignmentTween" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderErrorBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object used as a placeholder when an error occurs.\n\nThe box will be painted in the color given by the\n[RenderErrorBox.backgroundColor] static property.\n\nA message can be provided. To simplify the class and thus help reduce the\nlikelihood of this class itself being the source of errors, the message\ncannot be changed once the object has been created. If provided, the text\nwill be painted on top of the background, using the styles given by the\n[RenderErrorBox.textStyle] and [RenderErrorBox.paragraphStyle] static\nproperties.\n\nAgain to help simplify the class, this box tries to be 100000.0 pixels wide\nand high, to approximate being infinitely high but without using infinities.", "detail": "", "kind": 7, "label": "RenderErrorBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSemanticsGestureHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Listens for the specified gestures from the semantics server (e.g.\nan accessibility tool).", "detail": "", "kind": 7, "label": "RenderSemanticsGestureHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Binding for the painting library.\n\nHooks into the cache eviction logic to clear the image cache.\n\nRequires the [ServicesBinding] to be mixed in earlier.", "detail": "", "kind": 7, "label": "PaintingBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderListBody", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays its children sequentially along a given axis, forcing them to the\ndimensions of the parent in the other axis.\n\nThis layout algorithm arranges its children linearly along the main axis\n(either horizontally or vertically). In the cross axis, children are\nstretched to match the box's cross-axis extent. In the main axis, children\nare given unlimited space and the box expands its main axis to contain all\nits children. Because [RenderListBody] boxes expand in the main axis, they\nmust be given unlimited space in the main axis, typically by being contained\nin a viewport with a scrolling direction that matches the box's main axis.", "detail": "", "kind": 7, "label": "RenderListBody" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of radii for each corner of a rectangle, but with the\ncorners specified in a manner dependent on the writing direction.\n\nThis can be used to specify a corner radius on the leading or trailing edge\nof a box, so that it flips to the other side when the text alignment flips\n(e.g. being on the top right in English text but the top left in Arabic\ntext).\n\nSee also:\n\n * [BorderRadius], a variant that uses physical labels (`topLeft` and\n `topRight` instead of `topStart` and `topEnd`).", "detail": "", "kind": 7, "label": "BorderRadiusDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueGetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that are to report a value on demand.\n\nSee also:\n\n * [ValueSetter], the setter equivalent of this signature.\n * [AsyncValueGetter], an asynchronous version of this signature.", "detail": "() → T", "kind": 7, "label": "ValueGetter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderShaderMask", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a mask generated by a [Shader] to its child.\n\nFor example, [RenderShaderMask] can be used to gradually fade out the edge\nof a child by using a [new ui.Gradient.linear] mask.", "detail": "", "kind": 7, "label": "RenderShaderMask" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFillViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains multiple box children that each fill the viewport.\n\n[RenderSliverFillViewport] places its children in a linear array along the\nmain axis. Each child is sized to fill the viewport, both in the main and\ncross axis. A [viewportFraction] factor can be provided to size the children\nto a multiple of the viewport's main axis dimension (typically a fraction\nless than 1.0).\n\nSee also:\n\n * [RenderSliverFillRemaining], which sizes the children based on the\n remaining space rather than the viewport itself.\n * [RenderSliverFixedExtentList], which has a configurable [itemExtent].\n * [RenderSliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "RenderSliverFillViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderConstrainedOverflowBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that imposes different constraints on its child than it gets\nfrom its parent, possibly allowing the child to overflow the parent.\n\nA render overflow box proxies most functions in the render box protocol to\nits child, except that when laying out its child, it passes constraints\nbased on the minWidth, maxWidth, minHeight, and maxHeight fields instead of\njust passing the parent's constraints in. Specifically, it overrides any of\nthe equivalent fields on the constraints given by the parent with the\nconstraints given by these fields for each such field that is not null. It\nthen sizes itself based on the parent's constraints' maxWidth and maxHeight,\nignoring the child's dimensions.\n\nFor example, if you wanted a box to always render 50 pixels high, regardless\nof where it was rendered, you would wrap it in a\nRenderConstrainedOverflowBox with minHeight and maxHeight set to 50.0.\nGenerally speaking, to avoid confusing behavior around hit testing, a\nRenderConstrainedOverflowBox should usually be wrapped in a RenderClipRect.\n\nThe child is positioned according to [alignment]. To position a smaller\nchild inside a larger parent, use [RenderPositionedBox] and\n[RenderConstrainedBox] rather than RenderConstrainedOverflowBox.\n\nSee also:\n\n * [RenderUnconstrainedBox] for a render object that allows its children\n to render themselves unconstrained, expands to fit them, and considers\n overflow to be an error.\n * [RenderSizedOverflowBox], a render object that is a specific size but\n passes its original constraints through to its child, which it allows to\n overflow.", "detail": "", "kind": 7, "label": "RenderConstrainedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pointer has stopped making contact with the device.", "detail": "", "kind": 7, "label": "PointerUpEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RendererBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the render tree and the Flutter engine.", "detail": "", "kind": 7, "label": "RendererBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPointerListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Calls callbacks in response to pointer events.\n\nIf it has a child, defers to the child for sizing behavior.\n\nIf it does not have a child, grows to fit the parent-provided constraints.\n\nThe [onPointerEnter], [onPointerHover], and [onPointerExit] events are only\nrelevant to and fired by pointers that can hover (e.g. mouse pointers, but\nnot most touch pointers).", "detail": "", "kind": 7, "label": "RenderPointerListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAspectRatio", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Attempts to size the child to a specific aspect ratio.\n\nThe render object first tries the largest width permitted by the layout\nconstraints. The height of the render object is determined by applying the\ngiven aspect ratio to the width, expressed as a ratio of width to height.\n\nFor example, a 16:9 width:height aspect ratio would have a value of\n16.0/9.0. If the maximum width is infinite, the initial width is determined\nby applying the aspect ratio to the maximum height.\n\nNow consider a second example, this time with an aspect ratio of 2.0 and\nlayout constraints that require the width to be between 0.0 and 100.0 and\nthe height to be between 0.0 and 100.0. We'll select a width of 100.0 (the\nbiggest allowed) and a height of 50.0 (to match the aspect ratio).\n\nIn that same situation, if the aspect ratio is 0.5, we'll also select a\nwidth of 100.0 (still the biggest allowed) and we'll attempt to use a height\nof 200.0. Unfortunately, that violates the constraints because the child can\nbe at most 100.0 pixels tall. The render object will then take that value\nand apply the aspect ratio again to obtain a width of 50.0. That width is\npermitted by the constraints and the child receives a width of 50.0 and a\nheight of 100.0. If the width were not permitted, the render object would\ncontinue iterating through the constraints. If the render object does not\nfind a feasible size after consulting each constraint, the render object\nwill eventually select a size for the child that meets the layout\nconstraints but fails to meet the aspect ratio constraints.", "detail": "", "kind": 7, "label": "RenderAspectRatio" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterErrorDetailsForRendering", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Variant of [FlutterErrorDetails] with extra fields for the rendering\nlibrary.", "detail": "", "kind": 7, "label": "FlutterErrorDetailsForRendering" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverScrollingPersistentHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with a [RenderBox] child which scrolls normally, except that when\nit hits the leading edge (typically the top) of the viewport, it shrinks to\na minimum size before continuing to scroll.\n\nThis sliver makes no effort to avoid overlapping other content.", "detail": "", "kind": 7, "label": "RenderSliverScrollingPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerUpEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerUpEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerUpEvent event) → void", "kind": 7, "label": "PointerUpEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderObjectVisitor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called for each [RenderObject].\n\nUsed by [RenderObject.visitChildren] and [RenderObject.visitChildrenForSemantics].", "detail": "(RenderObject child) → void", "kind": 7, "label": "RenderObjectVisitor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIndexedStack", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements the same layout algorithm as RenderStack but only paints the child\nspecified by index.\n\nAlthough only one child is displayed, the cost of the layout algorithm is\nstill O(N), like an ordinary stack.", "detail": "", "kind": 7, "label": "RenderIndexedStack" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PipelineOwner", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pipeline owner manages the rendering pipeline.\n\nThe pipeline owner provides an interface for driving the rendering pipeline\nand stores the state about which render objects have requested to be visited\nin each stage of the pipeline. To flush the pipeline, call the following\nfunctions in order:\n\n1. [flushLayout] updates any render objects that need to compute their\n layout. During this phase, the size and position of each render\n object is calculated. Render objects might dirty their painting or\n compositing state during this phase.\n2. [flushCompositingBits] updates any render objects that have dirty\n compositing bits. During this phase, each render object learns whether\n any of its children require compositing. This information is used during\n the painting phase when selecting how to implement visual effects such as\n clipping. If a render object has a composited child, its needs to use a\n [Layer] to create the clip in order for the clip to apply to the\n composited child (which will be painted into its own [Layer]).\n3. [flushPaint] visits any render objects that need to paint. During this\n phase, render objects get a chance to record painting commands into\n [PictureLayer]s and construct other composited [Layer]s.\n4. Finally, if semantics are enabled, [flushSemantics] will compile the\n semantics for the render objects. This semantic information is used by\n assistive technology to improve the accessibility of the render tree.\n\nThe [RendererBinding] holds the pipeline owner for the render objects that\nare visible on screen. You can create other pipeline owners to manage\noff-screen objects, which can flush their pipelines independently of the\non-screen render objects.", "detail": "", "kind": 7, "label": "PipelineOwner" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for shape outlines.\n\nThis class handles how to add multiple borders together. Subclasses define\nvarious shapes, like circles ([CircleBorder]), rounded rectangles\n([RoundedRectangleBorder]), continuous rectangles\n([ContinuousRectangleBorder]), or beveled rectangles\n([BeveledRectangleBorder]).\n\nSee also:\n\n * [ShapeDecoration], which can be used with [DecoratedBox] to show a shape.\n * [Material] (and many other widgets in the Material library), which takes\n a [ShapeBorder] to define its shape.\n * [NotchedShape], which describes a shape with a hole in it.", "detail": "", "kind": 7, "label": "ShapeBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UpdateLiveRegionEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers a polite announcement of a live region.\n\nThis requires that the semantics node has already been marked as a live\nregion. On Android, TalkBack will make a verbal announcement, as long as\nthe label of the semantics node has changed since the last live region\nupdate. iOS does not currently support this event.\n\nSee also:\n\n * [SemanticsFlag.liveRegion], for a description of live regions.", "detail": "", "kind": 7, "label": "UpdateLiveRegionEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinearGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D linear gradient.\n\nThis class is used by [BoxDecoration] to represent linear gradients. This\nabstracts out the arguments to the [new ui.Gradient.linear] constructor from\nthe `dart:ui` library.\n\nA gradient has two anchor points, [begin] and [end]. The [begin] point\ncorresponds to 0.0, and the [end] point corresponds to 1.0. These points are\nexpressed in fractions, so that the same gradient can be reused with varying\nsized boxes without changing the parameters. (This contrasts with [new\nui.Gradient.linear], whose arguments are expressed in logical pixels.)\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the vector from start to end, between\n0.0 and 1.0, for each color. If it is null, a uniform distribution is\nassumed.\n\nThe region of the canvas before [begin] and after [end] is colored according\nto [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [LinearGradient] to paint on a canvas directly, see [createShader].\n\n\nThis sample draws a picture that looks like vertical window shades by having\na [Container] display a [BoxDecoration] with a [LinearGradient].\n\n```dart\nContainer(\n decoration: BoxDecoration(\n gradient: LinearGradient(\n begin: Alignment.topLeft,\n end: Alignment(0.8, 0.0), // 10% of the width, so there are ten blinds.\n colors: [const Color(0xFFFFFFEE), const Color(0xFF999999)], // whitish to gray\n tileMode: TileMode.repeated, // repeats the gradient over the canvas\n ),\n ),\n)\n```\n\nSee also:\n\n * [RadialGradient], which displays a gradient in concentric circles, and\n has an example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [LinearGradient] in its\n [BoxDecoration.gradient] property.", "detail": "", "kind": 7, "label": "LinearGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How a box should be inscribed into another box.\n\nSee also [applyBoxFit], which applies the sizing semantics of these values\n(though not the alignment semantics).", "detail": "", "kind": 13, "label": "BoxFit" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAligningShiftedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Abstract class for one-child-layout render boxes that use a\n[AlignmentGeometry] to align their children.", "detail": "", "kind": 7, "label": "RenderAligningShiftedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OpacityLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that makes its children partially transparent.\n\nWhen debugging, setting [debugDisableOpacityLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "OpacityLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderStack].", "detail": "", "kind": 7, "label": "StackParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Identifies an image without committing to the precise final asset. This\nallows a set of images to be identified and for the precise image to later\nbe resolved based on the environment, e.g. the device pixel ratio.\n\nTo obtain an [ImageStream] from an [ImageProvider], call [resolve],\npassing it an [ImageConfiguration] object.\n\n[ImageProvider] uses the global [imageCache] to cache images.\n\nThe type argument `T` is the type of the object used to represent a resolved\nconfiguration. This is also the type used for the key in the image cache. It\nshould be immutable and implement the [==] operator and the [hashCode]\ngetter. Subclasses should subclass a variant of [ImageProvider] with an\nexplicit `T` type argument.\n\nThe type argument does not have to be specified when using the type as an\nargument (where any image provider is acceptable).\n\nThe following image formats are supported: {@macro flutter.dart:ui.imageFormats}\n\n\nThe following shows the code required to write a widget that fully conforms\nto the [ImageProvider] and [Widget] protocols. (It is essentially a\nbare-bones version of the [widgets.Image] widget.)\n\n```dart\nclass MyImage extends StatefulWidget {\n const MyImage({\n Key key,\n @required this.imageProvider,\n }) : assert(imageProvider != null),\n super(key: key);\n\n final ImageProvider imageProvider;\n\n @override\n _MyImageState createState() => _MyImageState();\n}\n\nclass _MyImageState extends State<MyImage> {\n ImageStream _imageStream;\n ImageInfo _imageInfo;\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n // We call _getImage here because createLocalImageConfiguration() needs to\n // be called again if the dependencies changed, in case the changes relate\n // to the DefaultAssetBundle, MediaQuery, etc, which that method uses.\n _getImage();\n }\n\n @override\n void didUpdateWidget(MyImage oldWidget) {\n super.didUpdateWidget(oldWidget);\n if (widget.imageProvider != oldWidget.imageProvider)\n _getImage();\n }\n\n void _getImage() {\n final ImageStream oldImageStream = _imageStream;\n _imageStream = widget.imageProvider.resolve(createLocalImageConfiguration(context));\n if (_imageStream.key != oldImageStream?.key) {\n // If the keys are the same, then we got the same image back, and so we don't\n // need to update the listeners. If the key changed, though, we must make sure\n // to switch our listeners to the new image stream.\n oldImageStream?.removeListener(_updateImage);\n _imageStream.addListener(_updateImage);\n }\n }\n\n void _updateImage(ImageInfo imageInfo, bool synchronousCall) {\n setState(() {\n // Trigger a build whenever the image changes.\n _imageInfo = imageInfo;\n });\n }\n\n @override\n void dispose() {\n _imageStream.removeListener(_updateImage);\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return RawImage(\n image: _imageInfo?.image, // this is a dart:ui Image object\n scale: _imageInfo?.scale ?? 1.0,\n );\n }\n}\n```", "detail": "", "kind": 7, "label": "ImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapCrossAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Who [Wrap] should align children within a run in the cross axis.", "detail": "", "kind": 13, "label": "WrapCrossAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFixedExtentList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children with the same main axis extent in\na linear array.\n\n[RenderSliverFixedExtentList] places its children in a linear array along\nthe main axis starting at offset zero and without gaps. Each child is forced\nto have the [itemExtent] in the main axis and the\n[SliverConstraints.crossAxisExtent] in the cross axis.\n\n[RenderSliverFixedExtentList] is more efficient than [RenderSliverList]\nbecause [RenderSliverFixedExtentList] does not need to perform layout on its\nchildren to obtain their extent in the main axis.\n\nSee also:\n\n * [RenderSliverList], which does not require its children to have the same\n extent in the main axis.\n * [RenderSliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [RenderSliverFillRemaining], which determines the [itemExtent] based on\n [SliverConstraints.remainingPaintExtent].", "detail": "", "kind": 7, "label": "RenderSliverFixedExtentList" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FollowerLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a transformation matrix to its children such\nthat they are positioned to match a [LeaderLayer].\n\nIf any of the ancestors of this layer have a degenerate matrix (e.g. scaling\nby zero), then the [FollowerLayer] will not be able to transform its child\nto the coordinate space of the [LeaderLayer].\n\nA [linkedOffset] property can be provided to further offset the child layer\nfrom the leader layer, for example if the child is to follow the linked\nlayer at a distance rather than directly overlapping it.", "detail": "", "kind": 7, "label": "FollowerLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MatrixUtils", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Utility functions for working with matrices.", "detail": "", "kind": 7, "label": "MatrixUtils" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntrinsicColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column according to the intrinsic dimensions of all the\ncells in that column.\n\nThis is a very expensive way to size a column.\n\nA flex value can be provided. If specified (and non-null), the\ncolumn will participate in the distribution of remaining space\nonce all the non-flexible columns have been sized.", "detail": "", "kind": 7, "label": "IntrinsicColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VerticalDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which boxes flow vertically.\n\nThis is used by the flex algorithm (e.g. [Column]) to decide in which\ndirection to draw boxes.\n\nThis is also used to disambiguate `start` and `end` values (e.g.\n[MainAxisAlignment.start] or [CrossAxisAlignment.end]).\n\nSee also:\n\n * [TextDirection], which controls the same thing but horizontally.", "detail": "", "kind": 13, "label": "VerticalDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsHandle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A reference to the semantics tree.\n\nThe framework maintains the semantics tree (used for accessibility and\nindexing) only when there is at least one client holding an open\n[SemanticsHandle].\n\nThe framework notifies the client that it has updated the semantics tree by\ncalling the [listener] callback. When the client no longer needs the\nsemantics tree, the client can call [dispose] on the [SemanticsHandle],\nwhich stops these callbacks and closes the [SemanticsHandle]. When all the\noutstanding [SemanticsHandle] objects are closed, the framework stops\nupdating the semantics tree.\n\nTo obtain a [SemanticsHandle], call [PipelineOwner.ensureSemantics] on the\n[PipelineOwner] for the render tree from which you wish to read semantics.\nYou can obtain the [PipelineOwner] using the [RenderObject.owner] property.", "detail": "", "kind": 7, "label": "SemanticsHandle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFractionallySizedOverflowBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes its child to a fraction of the total available space.\n\nFor both its width and height, this render object imposes a tight\nconstraint on its child that is a multiple (typically less than 1.0) of the\nmaximum constraint it received from its parent on that axis. If the factor\nfor a given axis is null, then the constraints from the parent are just\npassed through instead.\n\nIt then tries to size itself to the size of its child. Where this is not\npossible (e.g. if the constraints from the parent are themselves tight), the\nchild is aligned according to [alignment].", "detail": "", "kind": 7, "label": "RenderFractionallySizedOverflowBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TransformProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which handles [Matrix4] that represent transforms.", "detail": "", "kind": 7, "label": "TransformProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderIntrinsicHeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes its child to the child's intrinsic height.\n\nThis class is useful, for example, when unlimited height is available and\nyou would like a child that would otherwise attempt to expand infinitely to\ninstead size itself to a more reasonable height.\n\nThis class is relatively expensive, because it adds a speculative layout\npass before the final layout phase. Avoid using it where possible. In the\nworst case, this render object can result in a layout that is O(N²) in the\ndepth of the tree.", "detail": "", "kind": 7, "label": "RenderIntrinsicHeight" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint Flutter's logo.", "detail": "", "kind": 7, "label": "FlutterLogoDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridRegularTileLayout", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [SliverGridLayout] that uses equally sized and spaced tiles.\n\nRather that providing a grid with a [SliverGridLayout] directly, you instead\nprovide the grid a [SliverGridDelegate], which can compute a\n[SliverGridLayout] given the current [SliverConstraints].\n\nThis layout is used by [SliverGridDelegateWithFixedCrossAxisCount] and\n[SliverGridDelegateWithMaxCrossAxisExtent].\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which uses this layout.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which uses this layout.\n * [SliverGridLayout], which represents an arbitrary tile layout.\n * [SliverGridGeometry], which represents the size and position of a single\n tile in a grid.\n * [SliverGridDelegate.getLayout], which returns this object to describe the\n delegate's layout.\n * [RenderSliverGrid], which uses this class during its\n [RenderSliverGrid.performLayout] method.", "detail": "", "kind": 7, "label": "SliverGridRegularTileLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsHintOverrides", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides hint values which override the default hints on supported\nplatforms.\n\nOn iOS, these values are always ignored.", "detail": "", "kind": 7, "label": "SemanticsHintOverrides" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerParentDataMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data to support a doubly-linked list of children.", "detail": "", "kind": 7, "label": "ContainerParentDataMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderLimitedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Constrains the child's [BoxConstraints.maxWidth] and\n[BoxConstraints.maxHeight] if they're otherwise unconstrained.\n\nThis has the effect of giving the child a natural dimension in unbounded\nenvironments. For example, by providing a [maxHeight] to a widget that\nnormally tries to be as big as possible, the widget will normally size\nitself to fit its parent, but when placed in a vertical list, it will take\non the given height.\n\nThis is useful when composing widgets that normally try to match their\nparents' size, so that they behave reasonably in lists (which are\nunbounded).", "detail": "", "kind": 7, "label": "RenderLimitedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides, the lateral sides of which\nflip over based on the reading direction.\n\nThe lateral sides are called [start] and [end]. When painted in\nleft-to-right environments, the [start] side will be painted on the left and\nthe [end] side on the right; in right-to-left environments, it is the\nreverse. The other two sides are [top] and [bottom].\n\nThe sides are represented by [BorderSide] objects.\n\nIf the [start] and [end] sides are the same, then it is slightly more\nefficient to use a [Border] object rather than a [BorderDirectional] object.\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "BorderDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderCustomPaint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Provides a canvas on which to draw during the paint phase.\n\nWhen asked to paint, [RenderCustomPaint] first asks its [painter] to paint\non the current canvas, then it paints its child, and then, after painting\nits child, it asks its [foregroundPainter] to paint. The coordinate system of\nthe canvas matches the coordinate system of the [CustomPaint] object. The\npainters are expected to paint within a rectangle starting at the origin and\nencompassing a region of the given size. (If the painters paint outside\nthose bounds, there might be insufficient memory allocated to rasterize the\npainting commands and the resulting behavior is undefined.)\n\nPainters are implemented by subclassing or implementing [CustomPainter].\n\nBecause custom paint calls its painters during paint, you cannot mark the\ntree as needing a new layout during the callback (the layout for this frame\nhas already happened).\n\nCustom painters normally size themselves to their child. If they do not have\na child, they attempt to size themselves to the [preferredSize], which\ndefaults to [Size.zero].\n\nSee also:\n\n * [CustomPainter], the class that custom painter delegates should extend.\n * [Canvas], the API provided to custom painter delegates.", "detail": "", "kind": 7, "label": "RenderCustomPaint" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFlow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements the flow layout algorithm.\n\nFlow layouts are optimized for repositioning children using transformation\nmatrices.\n\nThe flow container is sized independently from the children by the\n[FlowDelegate.getSize] function of the delegate. The children are then sized\nindependently given the constraints from the\n[FlowDelegate.getConstraintsForChild] function.\n\nRather than positioning the children during layout, the children are\npositioned using transformation matrices during the paint phase using the\nmatrices from the [FlowDelegate.paintChildren] function. The children can be\nrepositioned efficiently by simply repainting the flow.\n\nThe most efficient way to trigger a repaint of the flow is to supply a\nrepaint argument to the constructor of the [FlowDelegate]. The flow will\nlisten to this animation and repaint whenever the animation ticks, avoiding\nboth the build and layout phases of the pipeline.\n\nSee also:\n\n * [FlowDelegate]\n * [RenderStack]", "detail": "", "kind": 7, "label": "RenderFlow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageErrorListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for reporting errors when resolving images.\n\nUsed by [ImageStream] and [precacheImage] to report errors.", "detail": "(dynamic exception, StackTrace stackTrace) → void", "kind": 7, "label": "ImageErrorListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Layer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer.\n\nDuring painting, the render tree generates a tree of composited layers that\nare uploaded into the engine and displayed by the compositor. This class is\nthe base class for all composited layers.\n\nMost layers can have their properties mutated, and layers can be moved to\ndifferent parents. The scene must be explicitly recomposited after such\nchanges are made; the layer tree does not maintain its own dirty state.\n\nTo composite the tree, create a [SceneBuilder] object, pass it to the\nroot [Layer] object's [addToScene] method, and then call\n[SceneBuilder.build] to obtain a [Scene]. A [Scene] can then be painted\nusing [Window.render].\n\nSee also:\n\n * [RenderView.compositeFrame], which implements this recomposition protocol\n for painting [RenderObject] trees on the display.", "detail": "", "kind": 7, "label": "Layer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], having determined the exact image to\nuse based on the context.\n\nGiven a main asset and a set of variants, AssetImage chooses the most\nappropriate asset for the current context, based on the device pixel ratio\nand size given in the configuration passed to [resolve].\n\nTo show a specific image from a bundle without any asset resolution, use an\n[AssetBundleImageProvider].\n\n## Naming assets for matching with different pixel densities\n\nMain assets are presumed to match a nominal pixel ratio of 1.0. To specify\nassets targeting different pixel ratios, place the variant assets in\nthe application bundle under subdirectories named in the form \"Nx\", where\nN is the nominal device pixel ratio for that asset.\n\nFor example, suppose an application wants to use an icon named\n\"heart.png\". This icon has representations at 1.0 (the main icon), as well\nas 1.5 and 2.0 pixel ratios (variants). The asset bundle should then contain\nthe following assets:\n\n```\nheart.png\n1.5x/heart.png\n2.0x/heart.png\n```\n\nOn a device with a 1.0 device pixel ratio, the image chosen would be\nheart.png; on a device with a 1.3 device pixel ratio, the image chosen\nwould be 1.5x/heart.png.\n\nThe directory level of the asset does not matter as long as the variants are\nat the equivalent level; that is, the following is also a valid bundle\nstructure:\n\n```\nicons/heart.png\nicons/1.5x/heart.png\nicons/2.0x/heart.png\n```\n\nassets/icons/3.0x/heart.png would be a valid variant of\nassets/icons/heart.png.\n\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider the structure\nabove. First, the `pubspec.yaml` of the project should specify its assets in\nthe `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image, use\n```dart\nAssetImage('icons/heart.png')\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by [AssetImage]\n when used without a scale.", "detail": "", "kind": 7, "label": "AssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFittedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scales and positions its child within itself according to [fit].", "detail": "", "kind": 7, "label": "RenderFittedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Axis", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The two cardinal directions in two dimensions.\n\nThe axis is always relative to the current coordinate space. This means, for\nexample, that a [horizontal] axis might actually be diagonally from top\nright to bottom left, due to some local [Transform] applied to the scene.\n\nSee also:\n\n * [AxisDirection], which is a directional version of this enum (with values\n light left and right, rather than just horizontal).\n * [TextDirection], which disambiguates between left-to-right horizontal\n content and right-to-left horizontal content.", "detail": "", "kind": 13, "label": "Axis" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The input from the pointer is no longer directed towards this receiver.", "detail": "", "kind": 7, "label": "PointerCancelEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BeveledRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with flattened or \"beveled\" corners.\n\nThe line segments that connect the rectangle's four sides will\nbegin and at locations offset by the corresponding border radius,\nbut not farther than the side's center. If all the border radii\nexceed the sides' half widths/heights the resulting shape is\ndiamond made by connecting the centers of the sides.", "detail": "", "kind": 7, "label": "BeveledRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegateWithMaxCrossAxisExtent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Creates grid layouts with tiles that each have a maximum cross-axis extent.\n\nThis delegate will select a cross-axis extent for the tiles that is as\nlarge as possible subject to the following conditions:\n\n - The extent evenly divides the cross-axis extent of the grid.\n - The extent is at most [maxCrossAxisExtent].\n\nFor example, if the grid is vertical, the grid is 500.0 pixels wide, and\n[maxCrossAxisExtent] is 150.0, this delegate will create a grid with 4\ncolumns that are 125.0 pixels wide.\n\nThis delegate creates grids with equally sized and spaced tiles.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegate], which creates arbitrary layouts.\n * [GridView], which can use this delegate to control the layout of its\n tiles.\n * [SliverGrid], which can use this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which can use this delegate to control the layout of\n its tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegateWithMaxCrossAxisExtent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CircularNotchedRectangle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle with a smooth circular notch.\n\nSee also:\n\n * [CircleBorder], a [ShapeBorder] that describes a circle.", "detail": "", "kind": 7, "label": "CircularNotchedRectangle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderFlow].\n\nThe [offset] property is ignored by [RenderFlow] and is always set to\n[Offset.zero]. Children of a [RenderFlow] are positioned using a\ntransformation matrix, which is private to the [RenderFlow]. To set the\nmatrix, use the [FlowPaintingContext.paintChild] function from an override\nof the [FlowDelegate.paintChildren] function.", "detail": "", "kind": 7, "label": "FlowParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TapSemanticEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers tap semantic feedback.\n\nCurrently only honored on Android. Triggers a tap specific sound when\nTalkBack is enabled.", "detail": "", "kind": 7, "label": "TapSemanticEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnnotatedRegionLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer which annotates its children with a value.\n\nThese values can be retrieved using [Layer.find] with a given [Offset]. If\na [Size] is provided to this layer, then find will check if the provided\noffset is within the bounds of the layer.", "detail": "", "kind": 7, "label": "AnnotatedRegionLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches the given URL from the network, associating it with the given scale.\n\nThe image will be cached regardless of cache headers from the server.\n\nSee also:\n\n * [Image.network] for a shorthand of an [Image] widget backed by [NetworkImage].", "detail": "", "kind": 7, "label": "NetworkImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DecorationImagePainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The painter for a [DecorationImage].\n\nTo obtain a painter, call [DecorationImage.createPainter].\n\nTo paint, call [paint]. The `onChanged` callback passed to\n[DecorationImage.createPainter] will be called if the image needs to paint\nagain (e.g. because it is animated or because it had not yet loaded the\nfirst time the [paint] method was called).\n\nThis object should be disposed using the [dispose] method when it is no\nlonger needed.", "detail": "", "kind": 7, "label": "DecorationImagePainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextureLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that maps a backend texture to a rectangle.\n\nBackend textures are images that can be applied (mapped) to an area of the\nFlutter view. They are created, managed, and updated using a\nplatform-specific texture registry. This is typically done by a plugin\nthat integrates with host platform video player, camera, or OpenGL APIs,\nor similar image sources.\n\nA texture layer refers to its backend texture using an integer ID. Texture\nIDs are obtained from the texture registry and are scoped to the Flutter\nview. Texture IDs may be reused after deregistration, at the discretion\nof the registry. The use of texture IDs currently unknown to the registry\nwill silently result in a blank rectangle.\n\nOnce inserted into the layer tree, texture layers are repainted autonomously\nas dictated by the backend (e.g. on arrival of a video frame). Such\nrepainting generally does not involve executing Dart code.\n\nTexture layers are always leaves in the layer tree.\n\nSee also:\n\n * <https://docs.flutter.io/javadoc/io/flutter/view/TextureRegistry.html>\n for how to create and manage backend textures on Android.\n * <https://docs.flutter.io/objcdoc/Protocols/FlutterTextureRegistry.html>\n for how to create and manage backend textures on iOS.", "detail": "", "kind": 7, "label": "TextureLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainterSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties describing information drawn in a rectangle contained by\nthe [Canvas] used by a [CustomPaint].\n\nThis information is used, for example, by assistive technologies to improve\nthe accessibility of applications.\n\nImplement [CustomPainter.semanticsBuilder] to build the semantic\ndescription of the whole picture drawn by a [CustomPaint], rather that one\nparticular rectangle.\n\nSee also:\n\n * [SemanticsNode], which is created using the properties of this class.\n * [CustomPainter], which creates instances of this class.", "detail": "", "kind": 7, "label": "CustomPainterSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property describing a [double] [value] with an optional [unit] of measurement.\n\nNumeric formatting is optimized for debug message readability.", "detail": "", "kind": 7, "label": "DoubleProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CaretChangedHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback that reports when the caret location changes.\n\nUsed by [RenderEditable.onCaretChanged].", "detail": "(Rect caretRect) → void", "kind": 7, "label": "CaretChangedHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderUnconstrainedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Renders a box, imposing no constraints on its child, allowing the child to\nrender at its \"natural\" size.\n\nThis allows a child to render at the size it would render if it were alone\non an infinite canvas with no constraints. This box will then attempt to\nadopt the same size, within the limits of its own constraints. If it ends\nup with a different size, it will align the child based on [alignment].\nIf the box cannot expand enough to accommodate the entire child, the\nchild will be clipped.\n\nIn debug mode, if the child overflows the box, a warning will be printed on\nthe console, and black and yellow striped areas will appear where the\noverflow occurs.\n\nSee also:\n\n * [RenderConstrainedBox], which renders a box which imposes constraints\n on its child.\n * [RenderConstrainedOverflowBox], which renders a box that imposes different\n constraints on its child than it gets from its parent, possibly allowing\n the child to overflow the parent.\n * [RenderSizedOverflowBox], a render object that is a specific size but\n passes its original constraints through to its child, which it allows to\n overflow.", "detail": "", "kind": 7, "label": "RenderUnconstrainedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBackdropFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a filter to the existing painted content and then paints [child].\n\nThis effect is relatively expensive, especially if the filter is non-local,\nsuch as a blur.", "detail": "", "kind": 7, "label": "RenderBackdropFilter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Matrix4", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "4D Matrix.\nValues are stored in column major order.", "detail": "", "kind": 7, "label": "Matrix4" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSemanticsAnnotations", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Add annotations to the [SemanticsNode] for this subtree.", "detail": "", "kind": 7, "label": "RenderSemanticsAnnotations" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridLayout", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The size and position of all the tiles in a [RenderSliverGrid].\n\nRather that providing a grid with a [SliverGridLayout] directly, you instead\nprovide the grid a [SliverGridDelegate], which can compute a\n[SliverGridLayout] given the current [SliverConstraints].\n\nThe tiles can be placed arbitrarily, but it is more efficient to place tiles\nin roughly in order by scroll offset because grids reify a contiguous\nsequence of children.\n\nSee also:\n\n * [SliverGridRegularTileLayout], which represents a layout that uses\n equally sized and spaced tiles.\n * [SliverGridGeometry], which represents the size and position of a single\n tile in a grid.\n * [SliverGridDelegate.getLayout], which returns this object to describe the\n delegate's layout.\n * [RenderSliverGrid], which uses this class during its\n [RenderSliverGrid.performLayout] method.", "detail": "", "kind": 7, "label": "SliverGridLayout" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterLogoStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Possible ways to draw Flutter's logo.", "detail": "", "kind": 13, "label": "FlutterLogoStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverMultiBoxAdaptorParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by [RenderSliverMultiBoxAdaptor].", "detail": "", "kind": 7, "label": "SliverMultiBoxAdaptorParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFlex", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays its children in a one-dimensional array.\n\n## Layout algorithm\n\n_This section describes how the framework causes [RenderFlex] to position\nits children._\n_See [BoxConstraints] for an introduction to box layout models._\n\nLayout for a [RenderFlex] proceeds in six steps:\n\n1. Layout each child a null or zero flex factor with unbounded main axis\n constraints and the incoming cross axis constraints. If the\n [crossAxisAlignment] is [CrossAxisAlignment.stretch], instead use tight\n cross axis constraints that match the incoming max extent in the cross\n axis.\n2. Divide the remaining main axis space among the children with non-zero\n flex factors according to their flex factor. For example, a child with a\n flex factor of 2.0 will receive twice the amount of main axis space as a\n child with a flex factor of 1.0.\n3. Layout each of the remaining children with the same cross axis\n constraints as in step 1, but instead of using unbounded main axis\n constraints, use max axis constraints based on the amount of space\n allocated in step 2. Children with [Flexible.fit] properties that are\n [FlexFit.tight] are given tight constraints (i.e., forced to fill the\n allocated space), and children with [Flexible.fit] properties that are\n [FlexFit.loose] are given loose constraints (i.e., not forced to fill the\n allocated space).\n4. The cross axis extent of the [RenderFlex] is the maximum cross axis\n extent of the children (which will always satisfy the incoming\n constraints).\n5. The main axis extent of the [RenderFlex] is determined by the\n [mainAxisSize] property. If the [mainAxisSize] property is\n [MainAxisSize.max], then the main axis extent of the [RenderFlex] is the\n max extent of the incoming main axis constraints. If the [mainAxisSize]\n property is [MainAxisSize.min], then the main axis extent of the [Flex]\n is the sum of the main axis extents of the children (subject to the\n incoming constraints).\n6. Determine the position for each child according to the\n [mainAxisAlignment] and the [crossAxisAlignment]. For example, if the\n [mainAxisAlignment] is [MainAxisAlignment.spaceBetween], any main axis\n space that has not been allocated to children is divided evenly and\n placed between the children.\n\nSee also:\n\n * [Flex], the widget equivalent.\n * [Row] and [Column], direction-specific variants of [Flex].", "detail": "", "kind": 7, "label": "RenderFlex" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPhysicalContainerParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for slivers that have multiple children and that position their\nchildren using absolute coordinates.", "detail": "", "kind": 7, "label": "SliverPhysicalContainerParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CrossAxisAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the cross axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "CrossAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerSignalEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerSignalEvent event) → void", "kind": 7, "label": "PointerSignalEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBuilderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of the function returned by [CustomPainter.semanticsBuilder].\n\nBuilds semantics information describing the picture drawn by a\n[CustomPainter]. Each [CustomPainterSemantics] in the returned list is\nconverted into a [SemanticsNode] by copying its properties.\n\nThe returned list must not be mutated after this function completes. To\nchange the semantic information, the function must return a new list\ninstead.", "detail": "(Size size) → List<CustomPainterSemantics>", "kind": 7, "label": "SemanticsBuilderCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Constraints", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract set of layout constraints.\n\nConcrete layout models (such as box) will create concrete subclasses to\ncommunicate layout constraints between parents and children.\n\n## Writing a Constraints subclass\n\nWhen creating a new [RenderObject] subclass with a new layout protocol, one\nwill usually need to create a new [Constraints] subclass to express the\ninput to the layout algorithms.\n\nA [Constraints] subclass should be immutable (all fields final). There are\nseveral members to implement, in addition to whatever fields, constructors,\nand helper methods one may find useful for a particular layout protocol:\n\n* The [isTight] getter, which should return true if the object represents a\n case where the [RenderObject] class has no choice for how to lay itself\n out. For example, [BoxConstraints] returns true for [isTight] when both\n the minimum and maximum widths and the minimum and maximum heights are\n equal.\n\n* The [isNormalized] getter, which should return true if the object\n represents its data in its canonical form. Sometimes, it is possible for\n fields to be redundant with each other, such that several different\n representations have the same implications. For example, a\n [BoxConstraints] instance with its minimum width greater than its maximum\n width is equivalent to one where the maximum width is set to that minimum\n width (`2<w<1` is equivalent to `2<w<2`, since minimum constraints have\n priority). This getter is used by the default implementation of\n [debugAssertIsValid].\n\n* The [debugAssertIsValid] method, which should assert if there's anything\n wrong with the constraints object. (We use this approach rather than\n asserting in constructors so that our constructors can be `const` and so\n that it is possible to create invalid constraints temporarily while\n building valid ones.) See the implementation of\n [BoxConstraints.debugAssertIsValid] for an example of the detailed checks\n that can be made.\n\n* The [==] operator and the [hashCode] getter, so that constraints can be\n compared for equality. If a render object is given constraints that are\n equal, then the rendering library will avoid laying the object out again\n if it is not dirty.\n\n* The [toString] method, which should describe the constraints so that they\n appear in a usefully readable form in the output of [debugDumpRenderTree].", "detail": "", "kind": 7, "label": "Constraints" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipPathLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composite layer that clips its children using a path.\n\nWhen debugging, setting [debugDisableClipLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "ClipPathLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderViewportBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for render objects that are bigger on the inside.\n\nThis render object provides the shared code for render objects that host\n[RenderSliver] render objects inside a [RenderBox]. The viewport establishes\nan [axisDirection], which orients the sliver's coordinate system, which is\nbased on scroll offsets rather than Cartesian coordinates.\n\nThe viewport also listens to an [offset], which determines the\n[SliverConstraints.scrollOffset] input to the sliver layout protocol.\n\nSubclasses typically override [performLayout] and call\n[layoutChildSequence], perhaps multiple times.\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which allows a [RenderBox] object to be\n placed inside a [RenderSliver] (the opposite of this class).", "detail": "", "kind": 7, "label": "RenderViewportBase" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks reporting that an image is available.\n\nUsed by [ImageStream].\n\nThe `synchronousCall` argument is true if the listener is being invoked\nduring the call to `addListener`. This can be useful if, for example,\n[ImageStream.addListener] is invoked during a frame, so that a new rendering\nframe is requested if the call was asynchronous (after the current frame)\nand no rendering frame is requested if the call was synchronous (within the\nsame stack frame as the call to [ImageStream.addListener]).", "detail": "(ImageInfo image, bool synchronousCall) → void", "kind": 7, "label": "ImageListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProfilePaintCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [debugOnProfilePaint] implementations.", "detail": "(RenderObject renderObject) → void", "kind": 7, "label": "ProfilePaintCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How much space should be occupied in the main axis.\n\nDuring a flex layout, available space along the main axis is allocated to\nchildren. After allocating space, there might be some remaining free space.\nThis value controls whether to maximize or minimize the amount of free\nspace, subject to the incoming layout constraints.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded] and [Flexible], the widgets that controls a flex widgets'\n children's flex.\n * [RenderFlex], the flex render object.\n * [MainAxisAlignment], which controls how the free space is distributed.", "detail": "", "kind": 13, "label": "MainAxisSize" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxShadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shadow cast by a box.\n\nInherits from [Shadow]\n\n[BoxShadow] can cast non-rectangular shadows if the box is non-rectangular\n(e.g., has a border radius or a circular shape).\n\nThis class is similar to CSS box-shadow.\n\nSee also:\n\n * [Canvas.drawShadow], which is a more efficient way to draw shadows.\n * [Shadow], which is the parent class that lacks [spreadRadius].", "detail": "", "kind": 7, "label": "BoxShadow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An int valued property with an optional unit the value is measured in.\n\nExamples of units include 'px' and 'ms'.", "detail": "", "kind": 7, "label": "IntProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The layout constraints for the root render object.", "detail": "", "kind": 7, "label": "ViewConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlayOption", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The options that control whether the performance overlay displays certain\naspects of the compositor.", "detail": "", "kind": 13, "label": "PerformanceOverlayOption" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticsNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines diagnostics data for a [value].\n\n[DiagnosticsNode] provides a high quality multi-line string dump via\n[toStringDeep]. The core members are the [name], [toDescription],\n[getProperties], [value], and [getChildren]. All other members exist\ntypically to provide hints for how [toStringDeep] and debugging tools should\nformat output.", "detail": "", "kind": 7, "label": "DiagnosticsNode" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShaderMaskLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that applies a shader to its children.", "detail": "", "kind": 7, "label": "ShaderMaskLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverPhysicalParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by parents of slivers that position their\nchildren using absolute coordinates.\n\nFor example, used by [RenderViewport].\n\nThis data structure is optimized for fast painting, at the cost of requiring\nadditional work during layout when the children change their offsets. It is\nbest used by parents that expect to have few children, especially if those\nchildren will themselves be very tall relative to the parent.", "detail": "", "kind": 7, "label": "SliverPhysicalParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for box borders that can paint as rectangles, circles, or rounded\nrectangles.\n\nThis class is extended by [Border] and [BorderDirectional] to provide\nconcrete versions of four-sided borders using different conventions for\nspecifying the sides.\n\nThe only API difference that this class introduces over [ShapeBorder] is\nthat its [paint] method takes additional arguments.\n\nSee also:\n\n * [BorderSide], which is used to describe each side of the box.\n * [RoundedRectangleBorder], another way of describing a box's border.\n * [CircleBorder], another way of describing a circle border.\n * [BoxDecoration], which uses a [BoxBorder] to describe its borders.", "detail": "", "kind": 7, "label": "BoxBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object in a 2D Cartesian coordinate system.\n\nThe [size] of each box is expressed as a width and a height. Each box has\nits own coordinate system in which its upper left corner is placed at (0,\n0). The lower right corner of the box is therefore at (width, height). The\nbox contains all the points including the upper left corner and extending\nto, but not including, the lower right corner.\n\nBox layout is performed by passing a [BoxConstraints] object down the tree.\nThe box constraints establish a min and max value for the child's width and\nheight. In determining its size, the child must respect the constraints\ngiven to it by its parent.\n\nThis protocol is sufficient for expressing a number of common box layout\ndata flows. For example, to implement a width-in-height-out data flow, call\nyour child's [layout] function with a set of box constraints with a tight\nwidth value (and pass true for parentUsesSize). After the child determines\nits height, use the child's height to determine your size.\n\n## Writing a RenderBox subclass\n\nOne would implement a new [RenderBox] subclass to describe a new layout\nmodel, new paint model, new hit-testing model, or new semantics model, while\nremaining in the Cartesian space defined by the [RenderBox] protocol.\n\nTo create a new protocol, consider subclassing [RenderObject] instead.\n\n### Constructors and properties of a new RenderBox subclass\n\nThe constructor will typically take a named argument for each property of\nthe class. The value is then passed to a private field of the class and the\nconstructor asserts its correctness (e.g. if it should not be null, it\nasserts it's not null).\n\nProperties have the form of a getter/setter/field group like the following:\n\n```dart\nAxisDirection get axis => _axis;\nAxisDirection _axis;\nset axis(AxisDirection value) {\n assert(value != null); // same check as in the constructor\n if (value == _axis)\n return;\n _axis = value;\n markNeedsLayout();\n}\n```\n\nThe setter will typically finish with either a call to [markNeedsLayout], if\nthe layout uses this property, or [markNeedsPaint], if only the painter\nfunction does. (No need to call both, [markNeedsLayout] implies\n[markNeedsPaint].)\n\nConsider layout and paint to be expensive; be conservative about calling\n[markNeedsLayout] or [markNeedsPaint]. They should only be called if the\nlayout (or paint, respectively) has actually changed.\n\n### Children\n\nIf a render object is a leaf, that is, it cannot have any children, then\nignore this section. (Examples of leaf render objects are [RenderImage] and\n[RenderParagraph].)\n\nFor render objects with children, there are four possible scenarios:\n\n* A single [RenderBox] child. In this scenario, consider inheriting from\n [RenderProxyBox] (if the render object sizes itself to match the child) or\n [RenderShiftedBox] (if the child will be smaller than the box and the box\n will align the child inside itself).\n\n* A single child, but it isn't a [RenderBox]. Use the\n [RenderObjectWithChildMixin] mixin.\n\n* A single list of children. Use the [ContainerRenderObjectMixin] mixin.\n\n* A more complicated child model.\n\n#### Using RenderProxyBox\n\nBy default, a [RenderProxyBox] render object sizes itself to fit its child, or\nto be as small as possible if there is no child; it passes all hit testing\nand painting on to the child, and intrinsic dimensions and baseline\nmeasurements similarly are proxied to the child.\n\nA subclass of [RenderProxyBox] just needs to override the parts of the\n[RenderBox] protocol that matter. For example, [RenderOpacity] just\noverrides the paint method (and [alwaysNeedsCompositing] to reflect what the\npaint method does, and the [visitChildrenForSemantics] method so that the\nchild is hidden from accessibility tools when it's invisible), and adds an\n[RenderOpacity.opacity] field.\n\n[RenderProxyBox] assumes that the child is the size of the parent and\npositioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.\n\nSee\n[proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)\nfor examples of inheriting from [RenderProxyBox].\n\n#### Using RenderShiftedBox\n\nBy default, a [RenderShiftedBox] acts much like a [RenderProxyBox] but\nwithout assuming that the child is positioned at 0,0 (the actual position\nrecorded in the child's [parentData] field is used), and without providing a\ndefault layout algorithm.\n\nSee\n[shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)\nfor examples of inheriting from [RenderShiftedBox].\n\n#### Kinds of children and child-specific data\n\nA [RenderBox] doesn't have to have [RenderBox] children. One can use another\nsubclass of [RenderObject] for a [RenderBox]'s children. See the discussion\nat [RenderObject].\n\nChildren can have additional data owned by the parent but stored on the\nchild using the [parentData] field. The class used for that data must\ninherit from [ParentData]. The [setupParentData] method is used to\ninitialize the [parentData] field of a child when the child is attached.\n\nBy convention, [RenderBox] objects that have [RenderBox] children use the\n[BoxParentData] class, which has a [BoxParentData.offset] field to store the\nposition of the child relative to the parent. ([RenderProxyBox] does not\nneed this offset and therefore is an exception to this rule.)\n\n#### Using RenderObjectWithChildMixin\n\nIf a render object has a single child but it isn't a [RenderBox], then the\n[RenderObjectWithChildMixin] class, which is a mixin that will handle the\nboilerplate of managing a child, will be useful.\n\nIt's a generic class with one type argument, the type of the child. For\nexample, if you are building a `RenderFoo` class which takes a single\n`RenderBar` child, you would use the mixin as follows:\n\n```dart\nclass RenderFoo extends RenderBox\n with RenderObjectWithChildMixin<RenderBar> {\n // ...\n}\n```\n\nSince the `RenderFoo` class itself is still a [RenderBox] in this case, you\nstill have to implement the [RenderBox] layout algorithm, as well as\nfeatures like intrinsics and baselines, painting, and hit testing.\n\n#### Using ContainerRenderObjectMixin\n\nIf a render box can have multiple children, then the\n[ContainerRenderObjectMixin] mixin can be used to handle the boilerplate. It\nuses a linked list to model the children in a manner that is easy to mutate\ndynamically and that can be walked efficiently. Random access is not\nefficient in this model; if you need random access to the children consider\nthe next section on more complicated child models.\n\nThe [ContainerRenderObjectMixin] class has two type arguments. The first is\nthe type of the child objects. The second is the type for their\n[parentData]. The class used for [parentData] must itself have the\n[ContainerParentDataMixin] class mixed into it; this is where\n[ContainerRenderObjectMixin] stores the linked list. A [ParentData] class\ncan extend [ContainerBoxParentData]; this is essentially\n[BoxParentData] mixed with [ContainerParentDataMixin]. For example, if a\n`RenderFoo` class wanted to have a linked list of [RenderBox] children, one\nmight create a `FooParentData` class as follows:\n\n```dart\nclass FooParentData extends ContainerBoxParentData<RenderBox> {\n // (any fields you might need for these children)\n}\n```\n\nWhen using [ContainerRenderObjectMixin] in a [RenderBox], consider mixing in\n[RenderBoxContainerDefaultsMixin], which provides a collection of utility\nmethods that implement common parts of the [RenderBox] protocol (such as\npainting the children).\n\nThe declaration of the `RenderFoo` class itself would thus look like this:\n\n```dart\nclass RenderFoo extends RenderBox with\n ContainerRenderObjectMixin<RenderBox, FooParentData>,\n RenderBoxContainerDefaultsMixin<RenderBox, FooParentData> {\n // ...\n}\n```\n\nWhen walking the children (e.g. during layout), the following pattern is\ncommonly used (in this case assuming that the children are all [RenderBox]\nobjects and that this render object uses `FooParentData` objects for its\nchildren's [parentData] fields):\n\n```dart\nRenderBox child = firstChild;\nwhile (child != null) {\n final FooParentData childParentData = child.parentData;\n // ...operate on child and childParentData...\n assert(child.parentData == childParentData);\n child = childParentData.nextSibling;\n}\n```\n\n#### More complicated child models\n\nRender objects can have more complicated models, for example a map of\nchildren keyed on an enum, or a 2D grid of efficiently randomly-accessible\nchildren, or multiple lists of children, etc. If a render object has a model\nthat can't be handled by the mixins above, it must implement the\n[RenderObject] child protocol, as follows:\n\n* Any time a child is removed, call [dropChild] with the child.\n\n* Any time a child is added, call [adoptChild] with the child.\n\n* Implement the [attach] method such that it calls [attach] on each child.\n\n* Implement the [detach] method such that it calls [detach] on each child.\n\n* Implement the [redepthChildren] method such that it calls [redepthChild]\n on each child.\n\n* Implement the [visitChildren] method such that it calls its argument for\n each child, typically in paint order (back-most to front-most).\n\n* Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]\n for each child.\n\nImplementing these seven bullet points is essentially all that the two\naforementioned mixins do.\n\n### Layout\n\n[RenderBox] classes implement a layout algorithm. They have a set of\nconstraints provided to them, and they size themselves based on those\nconstraints and whatever other inputs they may have (for example, their\nchildren or properties).\n\nWhen implementing a [RenderBox] subclass, one must make a choice. Does it\nsize itself exclusively based on the constraints, or does it use any other\ninformation in sizing itself? An example of sizing purely based on the\nconstraints would be growing to fit the parent.\n\nSizing purely based on the constraints allows the system to make some\nsignificant optimizations. Classes that use this approach should override\n[sizedByParent] to return true, and then override [performResize] to set the\n[size] using nothing but the constraints, e.g.:\n\n```dart\n@override\nbool get sizedByParent => true;\n\n@override\nvoid performResize() {\n size = constraints.smallest;\n}\n```\n\nOtherwise, the size is set in the [performLayout] function.\n\nThe [performLayout] function is where render boxes decide, if they are not\n[sizedByParent], what [size] they should be, and also where they decide\nwhere their children should be.\n\n#### Layout of RenderBox children\n\nThe [performLayout] function should call the [layout] function of each (box)\nchild, passing it a [BoxConstraints] object describing the constraints\nwithin which the child can render. Passing tight constraints (see\n[BoxConstraints.isTight]) to the child will allow the rendering library to\napply some optimizations, as it knows that if the constraints are tight, the\nchild's dimensions cannot change even if the layout of the child itself\nchanges.\n\nIf the [performLayout] function will use the child's size to affect other\naspects of the layout, for example if the render box sizes itself around the\nchild, or positions several children based on the size of those children,\nthen it must specify the `parentUsesSize` argument to the child's [layout]\nfunction, setting it to true.\n\nThis flag turns off some optimizations; algorithms that do not rely on the\nchildren's sizes will be more efficient. (In particular, relying on the\nchild's [size] means that if the child is marked dirty for layout, the\nparent will probably also be marked dirty for layout, unless the\n[constraints] given by the parent to the child were tight constraints.)\n\nFor [RenderBox] classes that do not inherit from [RenderProxyBox], once they\nhave laid out their children, should also position them, by setting the\n[BoxParentData.offset] field of each child's [parentData] object.\n\n#### Layout of non-RenderBox children\n\nThe children of a [RenderBox] do not have to be [RenderBox]es themselves. If\nthey use another protocol (as discussed at [RenderObject]), then instead of\n[BoxConstraints], the parent would pass in the appropriate [Constraints]\nsubclass, and instead of reading the child's size, the parent would read\nwhatever the output of [layout] is for that layout protocol. The\n`parentUsesSize` flag is still used to indicate whether the parent is going\nto read that output, and optimizations still kick in if the child has tight\nconstraints (as defined by [Constraints.isTight]).\n\n### Painting\n\nTo describe how a render box paints, implement the [paint] method. It is\ngiven a [PaintingContext] object and an [Offset]. The painting context\nprovides methods to affect the layer tree as well as a\n[PaintingContext.canvas] which can be used to add drawing commands. The\ncanvas object should not be cached across calls to the [PaintingContext]'s\nmethods; every time a method on [PaintingContext] is called, there is a\nchance that the canvas will change identity. The offset specifies the\nposition of the top left corner of the box in the coordinate system of the\n[PaintingContext.canvas].\n\nTo draw text on a canvas, use a [TextPainter].\n\nTo draw an image to a canvas, use the [paintImage] method.\n\nA [RenderBox] that uses methods on [PaintingContext] that introduce new\nlayers should override the [alwaysNeedsCompositing] getter and set it to\ntrue. If the object sometimes does and sometimes does not, it can have that\ngetter return true in some cases and false in others. In that case, whenever\nthe return value would change, call [markNeedsCompositingBitsUpdate]. (This\nis done automatically when a child is added or removed, so you don't have to\ncall it explicitly if the [alwaysNeedsCompositing] getter only changes value\nbased on the presence or absence of children.)\n\nAnytime anything changes on the object that would cause the [paint] method\nto paint something different (but would not cause the layout to change),\nthe object should call [markNeedsPaint].\n\n#### Painting children\n\nThe [paint] method's `context` argument has a [PaintingContext.paintChild]\nmethod, which should be called for each child that is to be painted. It\nshould be given a reference to the child, and an [Offset] giving the\nposition of the child relative to the parent.\n\nIf the [paint] method applies a transform to the painting context before\npainting children (or generally applies an additional offset beyond the\noffset it was itself given as an argument), then the [applyPaintTransform]\nmethod should also be overridden. That method must adjust the matrix that it\nis given in the same manner as it transformed the painting context and\noffset before painting the given child. This is used by the [globalToLocal]\nand [localToGlobal] methods.\n\n#### Hit Tests\n\nHit testing for render boxes is implemented by the [hitTest] method. The\ndefault implementation of this method defers to [hitTestSelf] and\n[hitTestChildren]. When implementing hit testing, you can either override\nthese latter two methods, or ignore them and just override [hitTest].\n\nThe [hitTest] method itself is given an [Offset], and must return true if the\nobject or one of its children has absorbed the hit (preventing objects below\nthis one from being hit), or false if the hit can continue to other objects\nbelow this one.\n\nFor each child [RenderBox], the [hitTest] method on the child should be\ncalled with the same [HitTestResult] argument and with the point transformed\ninto the child's coordinate space (in the same manner that the\n[applyPaintTransform] method would). The default implementation defers to\n[hitTestChildren] to call the children. [RenderBoxContainerDefaultsMixin]\nprovides a [RenderBoxContainerDefaultsMixin.defaultHitTestChildren] method\nthat does this assuming that the children are axis-aligned, not transformed,\nand positioned according to the [BoxParentData.offset] field of the\n[parentData]; more elaborate boxes can override [hitTestChildren]\naccordingly.\n\nIf the object is hit, then it should also add itself to the [HitTestResult]\nobject that is given as an argument to the [hitTest] method, using\n[HitTestResult.add]. The default implementation defers to [hitTestSelf] to\ndetermine if the box is hit. If the object adds itself before the children\ncan add themselves, then it will be as if the object was above the children.\nIf it adds itself after the children, then it will be as if it was below the\nchildren. Entries added to the [HitTestResult] object should use the\n[BoxHitTestEntry] class. The entries are subsequently walked by the system\nin the order they were added, and for each entry, the target's [handleEvent]\nmethod is called, passing in the [HitTestEntry] object.\n\nHit testing cannot rely on painting having happened.\n\n### Semantics\n\nFor a render box to be accessible, implement the\n[describeApproximatePaintClip] and [visitChildrenForSemantics] methods, and\nthe [semanticsAnnotator] getter. The default implementations are sufficient\nfor objects that only affect layout, but nodes that represent interactive\ncomponents or information (diagrams, text, images, etc) should provide more\ncomplete implementations. For more information, see the documentation for\nthese members.\n\n### Intrinsics and Baselines\n\nThe layout, painting, hit testing, and semantics protocols are common to all\nrender objects. [RenderBox] objects must implement two additional protocols:\nintrinsic sizing and baseline measurements.\n\nThere are four methods to implement for intrinsic sizing, to compute the\nminimum and maximum intrinsic width and height of the box. The documentation\nfor these methods discusses the protocol in detail:\n[computeMinIntrinsicWidth], [computeMaxIntrinsicWidth],\n[computeMinIntrinsicHeight], [computeMaxIntrinsicHeight].\n\nIn addition, if the box has any children, it must implement\n[computeDistanceToActualBaseline]. [RenderProxyBox] provides a simple\nimplementation that forwards to the child; [RenderShiftedBox] provides an\nimplementation that offsets the child's baseline information by the position\nof the child relative to the parent. If you do not inherited from either of\nthese classes, however, you must implement the algorithm yourself.", "detail": "", "kind": 7, "label": "RenderBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ExactAssetImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Fetches an image from an [AssetBundle], associating it with the given scale.\n\nThis implementation requires an explicit final [assetName] and [scale] on\nconstruction, and ignores the device pixel ratio and size in the\nconfiguration passed into [resolve]. For a resolution-aware variant that\nuses the configuration to pick an appropriate image based on the device\npixel ratio and size, see [AssetImage].\n\n## Fetching assets\n\nWhen fetching an image provided by the app itself, use the [assetName]\nargument to name the asset to choose. For instance, consider a directory\n`icons` with an image `heart.png`. First, the [pubspec.yaml] of the project\nshould specify its assets in the `flutter` section:\n\n```yaml\nflutter:\n assets:\n - icons/heart.png\n```\n\nThen, to fetch the image and associate it with scale `1.5`, use\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5)\n```\n\n## Assets in packages\n\nTo fetch an asset from a package, the [package] argument must be provided.\nFor instance, suppose the structure above is inside a package called\n`my_icons`. Then to fetch the image, use:\n\n```dart\nAssetImage('icons/heart.png', scale: 1.5, package: 'my_icons')\n```\n\nAssets used by the package itself should also be fetched using the [package]\nargument as above.\n\nIf the desired asset is specified in the `pubspec.yaml` of the package, it\nis bundled automatically with the app. In particular, assets used by the\npackage itself must be specified in its `pubspec.yaml`.\n\nA package can also choose to have assets in its 'lib/' folder that are not\nspecified in its `pubspec.yaml`. In this case for those images to be\nbundled, the app has to specify which ones to include. For instance a\npackage named `fancy_backgrounds` could have:\n\n```\nlib/backgrounds/background1.png\nlib/backgrounds/background2.png\nlib/backgrounds/background3.png\n```\n\nTo include, say the first image, the `pubspec.yaml` of the app should specify\nit in the `assets` section:\n\n```yaml\n assets:\n - packages/fancy_backgrounds/backgrounds/background1.png\n```\n\nThe `lib/` is implied, so it should not be included in the asset path.\n\nSee also:\n\n * [Image.asset] for a shorthand of an [Image] widget backed by\n [ExactAssetImage] when using a scale.", "detail": "", "kind": 7, "label": "ExactAssetImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FittedSizes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The pair of sizes returned by [applyBoxFit].", "detail": "", "kind": 7, "label": "FittedSizes" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for data associated with a [RenderObject] by its parent.\n\nSome render objects wish to store data on their children, such as their\ninput parameters to the parent's layout algorithm or their position relative\nto other children.", "detail": "", "kind": 7, "label": "ParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [File] object as an image, associating it with the given\nscale.\n\nSee also:\n\n * [Image.file] for a shorthand of an [Image] widget backed by [FileImage].", "detail": "", "kind": 7, "label": "FileImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorSwatch", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color that has a small table of related colors called a \"swatch\".\n\nThe table is indexed by values of type `T`.\n\nSee also:\n\n * [MaterialColor] and [MaterialAccentColor], which define material design\n primary and accent color swatches.\n * [material.Colors], which defines all of the standard material design\n colors.", "detail": "", "kind": 7, "label": "ColorSwatch" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ValueSetter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for callbacks that report that a value has been set.\n\nThis is the same signature as [ValueChanged], but is used when the\ncallback is called even if the underlying value has not changed.\nFor example, service extensions use this callback because they\ncall the callback whenever the extension is called with a\nvalue, regardless of whether the given value is new or not.\n\nSee also:\n\n * [ValueGetter], the getter equivalent of this signature.\n * [AsyncValueSetter], an asynchronous version of this signature.", "detail": "(T value) → void", "kind": 7, "label": "ValueSetter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for those that manage the loading of [dart:ui.Image] objects for\n[ImageStream]s.\n\n[ImageStreamListener] objects are rarely constructed directly. Generally, an\n[ImageProvider] subclass will return an [ImageStream] and automatically\nconfigure it with the right [ImageStreamCompleter] when possible.", "detail": "", "kind": 7, "label": "ImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CustomPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The interface used by [CustomPaint] (in the widgets library) and\n[RenderCustomPaint] (in the rendering library).\n\nTo implement a custom painter, either subclass or implement this interface\nto define your custom paint delegate. [CustomPaint] subclasses must\nimplement the [paint] and [shouldRepaint] methods, and may optionally also\nimplement the [hitTest] and [shouldRebuildSemantics] methods, and the\n[semanticsBuilder] getter.\n\nThe [paint] method is called whenever the custom object needs to be repainted.\n\nThe [shouldRepaint] method is called when a new instance of the class\nis provided, to check if the new instance actually represents different\ninformation.\n\n\nThe most efficient way to trigger a repaint is to either:\n\n* Extend this class and supply a `repaint` argument to the constructor of\n the [CustomPainter], where that object notifies its listeners when it is\n time to repaint.\n* Extend [Listenable] (e.g. via [ChangeNotifier]) and implement\n [CustomPainter], so that the object itself provides the notifications\n directly.\n\nIn either case, the [CustomPaint] widget or [RenderCustomPaint]\nrender object will listen to the [Listenable] and repaint whenever the\nanimation ticks, avoiding both the build and layout phases of the pipeline.\n\nThe [hitTest] method is called when the user interacts with the underlying\nrender object, to determine if the user hit the object or missed it.\n\nThe [semanticsBuilder] is called whenever the custom object needs to rebuild\nits semantics information.\n\nThe [shouldRebuildSemantics] method is called when a new instance of the\nclass is provided, to check if the new instance contains different\ninformation that affects the semantics tree.\n\n\nThis sample extends the same code shown for [RadialGradient] to create a\ncustom painter that paints a sky.\n\n```dart\nclass Sky extends CustomPainter {\n @override\n void paint(Canvas canvas, Size size) {\n var rect = Offset.zero & size;\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6),\n radius: 0.2,\n colors: [const Color(0xFFFFFF00), const Color(0xFF0099FF)],\n stops: [0.4, 1.0],\n );\n canvas.drawRect(\n rect,\n Paint()..shader = gradient.createShader(rect),\n );\n }\n\n @override\n SemanticsBuilderCallback get semanticsBuilder {\n return (Size size) {\n // Annotate a rectangle containing the picture of the sun\n // with the label \"Sun\". When text to speech feature is enabled on the\n // device, a user will be able to locate the sun on this picture by\n // touch.\n var rect = Offset.zero & size;\n var width = size.shortestSide * 0.4;\n rect = const Alignment(0.8, -0.9).inscribe(Size(width, width), rect);\n return [\n CustomPainterSemantics(\n rect: rect,\n properties: SemanticsProperties(\n label: 'Sun',\n textDirection: TextDirection.ltr,\n ),\n ),\n ];\n };\n }\n\n // Since this Sky painter has no fields, it always paints\n // the same thing and semantics information is the same.\n // Therefore we return false here. If we had fields (set\n // from the constructor) then we would return true if any\n // of them differed from the same fields on the oldDelegate.\n @override\n bool shouldRepaint(Sky oldDelegate) => false;\n @override\n bool shouldRebuildSemantics(Sky oldDelegate) => false;\n}\n```\n\nSee also:\n\n * [Canvas], the class that a custom painter uses to paint.\n * [CustomPaint], the widget that uses [CustomPainter], and whose sample\n code shows how to use the above `Sky` class.\n * [RadialGradient], whose sample code section shows a different take\n on the sample code above.", "detail": "", "kind": 7, "label": "CustomPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDownEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerDownEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerDownEvent event) → void", "kind": 7, "label": "PointerDownEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionPoint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Represents the coordinates of the point in a selection, and the text\ndirection at that point, relative to top left of the [RenderEditable] that\nholds the selection.", "detail": "", "kind": 7, "label": "TextSelectionPoint" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D gradient.\n\nThis is an interface that allows [LinearGradient], [RadialGradient], and\n[SweepGradient] classes to be used interchangeably in [BoxDecoration]s.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/dart-ui/Gradient-class.html), the class in the [dart:ui] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaxColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the maximum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width or\n100px, whichever is bigger, you could use:\n\n const MaxColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MaxColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DefaultShaderWarmUp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Default way of warming up Skia shader compilations.\n\nThe draw operations being warmed up here are decided according to Flutter\nengineers' observation and experience based on the apps and the performance\nissues seen so far.", "detail": "", "kind": 7, "label": "DefaultShaderWarmUp" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the placement of a child in a [RenderSliverGrid].\n\nSee also:\n\n * [SliverGridLayout], which represents the geometry of all the tiles in a\n grid.\n * [SliverGridLayout.getGeometryForChildIndex], which returns this object\n to describe the child's placement.\n * [RenderSliverGrid], which uses this class during its\n [RenderSliverGrid.performLayout] method.", "detail": "", "kind": 7, "label": "SliverGridGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The glue between the semantics layer and the Flutter engine.", "detail": "", "kind": 7, "label": "SemanticsBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAbstractViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for render objects that are bigger on the inside.\n\nSome render objects, such as [RenderViewport], present a portion of their\ncontent, which can be controlled by a [ViewportOffset]. This interface lets\nthe framework recognize such render objects and interact with them without\nhaving specific knowledge of all the various types of viewports.", "detail": "", "kind": 7, "label": "RenderAbstractViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlowPaintingContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A context in which a [FlowDelegate] paints.\n\nProvides information about the current size of the container and the\nchildren and a mechanism for painting children.\n\nSee also:\n\n * [FlowDelegate]\n * [Flow]\n * [RenderFlow]", "detail": "", "kind": 7, "label": "FlowPaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPositionedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Positions its child using an [AlignmentGeometry].\n\nFor example, to align a box at the bottom right, you would pass this box a\ntight constraint that is bigger than the child's natural size,\nwith an alignment of [Alignment.bottomRight].\n\nBy default, sizes to be as big as possible in both axes. If either axis is\nunconstrained, then in that direction it will be sized to fit the child's\ndimensions. Using widthFactor and heightFactor you can force this latter\nbehavior in all cases.", "detail": "", "kind": 7, "label": "RenderPositionedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderCustomMultiChildLayoutBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defers the layout of multiple children to a delegate.\n\nThe delegate can determine the layout constraints for each child and can\ndecide where to position each child. The delegate can also determine the\nsize of the parent, but the size of the parent cannot depend on the sizes of\nthe children.", "detail": "", "kind": 7, "label": "RenderCustomMultiChildLayoutBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetSelectionHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [SemanticsAction.setSelection] handlers to change the\ntext selection (or re-position the cursor) to `selection`.", "detail": "(TextSelection selection) → void", "kind": 7, "label": "SetSelectionHandler" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LongPressSemanticsEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event which triggers long press semantic feedback.\n\nCurrently only honored on Android. Triggers a long-press specific sound\nwhen TalkBack is enabled.", "detail": "", "kind": 7, "label": "LongPressSemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WrapAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How [Wrap] should align objects.\n\nUsed both to align children within a run in the main axis as well as to\nalign the runs themselves in the cross axis.", "detail": "", "kind": 13, "label": "WrapAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A shape with a notch in its outline.\n\nTypically used as the outline of a 'host' widget to make a notch that\naccommodates a 'guest' widget. e.g the [BottomAppBar] may have a notch to\naccommodate the [FloatingActionButton].\n\nSee also:\n\n * [ShapeBorder], which defines a shaped border without a dynamic notch.\n * [AutomaticNotchedShape], an adapter from [ShapeBorder] to [NotchedShape].", "detail": "", "kind": 7, "label": "NotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RelativeRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable 2D, axis-aligned, floating-point rectangle whose coordinates\nare given relative to another rectangle's edges, known as the container.\nSince the dimensions of the rectangle are relative to those of the\ncontainer, this class has no width and height members. To determine the\nwidth or height of the rectangle, convert it to a [Rect] using [toRect()]\n(passing the container's own Rect), and then examine that object.\n\nThe fields [left], [right], [bottom], and [top] must not be null.", "detail": "", "kind": 7, "label": "RelativeRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property which encloses its string [value] in quotes.\n\nSee also:\n\n * [MessageProperty], which is a better fit for showing a message\n instead of describing a property with a string value.", "detail": "", "kind": 7, "label": "StringProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ViewportOffset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Which part of the content inside the viewport should be visible.\n\nThe [pixels] value determines the scroll offset that the viewport uses to\nselect which part of its content to display. As the user scrolls the\nviewport, this value changes, which changes the content that is displayed.\n\nThis object is a [Listenable] that notifies its listeners when [pixels]\nchanges.\n\nSee also:\n\n * [ScrollPosition], which is a commonly used concrete subclass.\n * [RenderViewportBase], which is a render object that uses viewport\n offsets.", "detail": "", "kind": 7, "label": "ViewportOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFillRemaining", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains a single box child that fills the remaining space in\nthe viewport.\n\n[RenderSliverFillRemaining] sizes its child to fill the viewport in the\ncross axis and to fill the remaining space in the viewport in the main axis.\n\nTypically this will be the last sliver in a viewport, since (by definition)\nthere is never any room for anything beyond this sliver.\n\nSee also:\n\n * [RenderSliverFillViewport], which sizes its children based on the\n size of the viewport, regardless of what else is in the scroll view.\n * [RenderSliverList], which shows a list of variable-sized children in a\n viewport.", "detail": "", "kind": 7, "label": "RenderSliverFillRemaining" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverLogicalContainerParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for slivers that have multiple children and that position their\nchildren using layout offsets.", "detail": "", "kind": 7, "label": "SliverLogicalContainerParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverFixedExtentBoxAdaptor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that contains multiple box children that have the same extent in\nthe main axis.\n\n[RenderSliverFixedExtentBoxAdaptor] places its children in a linear array\nalong the main axis. Each child is forced to have the [itemExtent] in the\nmain axis and the [SliverConstraints.crossAxisExtent] in the cross axis.\n\nSubclasses should override [itemExtent] to control the size of the children\nin the main axis. For a concrete subclass with a configurable [itemExtent],\nsee [RenderSliverFixedExtentList].\n\n[RenderSliverFixedExtentBoxAdaptor] is more efficient than\n[RenderSliverList] because [RenderSliverFixedExtentBoxAdaptor] does not need\nto perform layout on its children to obtain their extent in the main axis.\n\nSee also:\n\n * [RenderSliverFixedExtentList], which has a configurable [itemExtent].\n * [RenderSliverFillViewport], which determines the [itemExtent] based on\n [SliverConstraints.viewportMainAxisExtent].\n * [RenderSliverFillRemaining], which determines the [itemExtent] based on\n [SliverConstraints.remainingPaintExtent].\n * [RenderSliverList], which does not require its children to have the same\n extent in the main axis.", "detail": "", "kind": 7, "label": "RenderSliverFixedExtentBoxAdaptor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderAnimatedSize", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that animates its size to its child's size over a given\n[duration] and with a given [curve]. If the child's size itself animates\n(i.e. if it changes size two frames in a row, as opposed to abruptly\nchanging size in one frame then remaining that size in subsequent frames),\nthis render object sizes itself to fit the child instead of animating\nitself.\n\nWhen the child overflows the current animated size of this render object, it\nis clipped.", "detail": "", "kind": 7, "label": "RenderAnimatedSize" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that paints a [TextSpan] tree into a [Canvas].\n\nTo use a [TextPainter], follow these steps:\n\n1. Create a [TextSpan] tree and pass it to the [TextPainter]\n constructor.\n\n2. Call [layout] to prepare the paragraph.\n\n3. Call [paint] as often as desired to paint the paragraph.\n\nIf the width of the area into which the text is being painted\nchanges, return to step 2. If the text to be painted changes,\nreturn to step 1.\n\nThe default text style is white. To change the color of the text,\npass a [TextStyle] object to the [TextSpan] in `text`.", "detail": "", "kind": 7, "label": "TextPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverMultiBoxAdaptor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver with multiple box children.\n\n[RenderSliverMultiBoxAdaptor] is a base class for slivers that have multiple\nbox children. The children are managed by a [RenderSliverBoxChildManager],\nwhich lets subclasses create children lazily during layout. Typically\nsubclasses will create only those children that are actually needed to fill\nthe [SliverConstraints.remainingPaintExtent].\n\nThe contract for adding and removing children from this render object is\nmore strict than for normal render objects:\n\n* Children can be removed except during a layout pass if they have already\n been laid out during that layout pass.\n* Children cannot be added except during a call to [childManager], and\n then only if there is no child corresponding to that index (or the child\n child corresponding to that index was first removed).\n\nSee also:\n\n * [RenderSliverToBoxAdapter], which has a single box child.\n * [RenderSliverList], which places its children in a linear\n array.\n * [RenderSliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.\n * [RenderSliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "RenderSliverMultiBoxAdaptor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverBoxChildManager", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate used by [RenderSliverMultiBoxAdaptor] to manage its children.\n\n[RenderSliverMultiBoxAdaptor] objects reify their children lazily to avoid\nspending resources on children that are not visible in the viewport. This\ndelegate lets these objects create and remove children as well as estimate\nthe total scroll offset extent occupied by the full child list.", "detail": "", "kind": 7, "label": "RenderSliverBoxChildManager" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderTransform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a transformation before painting its child.", "detail": "", "kind": 7, "label": "RenderTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OffsetLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A layer that is displayed at an offset from its parent layer.\n\nOffset layers are key to efficient repainting because they are created by\nrepaint boundaries in the [RenderObject] tree (see\n[RenderObject.isRepaintBoundary]). When a render object that is a repaint\nboundary is asked to paint at given offset in a [PaintingContext], the\nrender object first checks whether it needs to repaint itself. If not, it\nreuses its existing [OffsetLayer] (and its entire subtree) by mutating its\n[offset] property, cutting off the paint walk.", "detail": "", "kind": 7, "label": "OffsetLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Border specification for [Table] widgets.\n\nThis is like [Border], with the addition of two sides: the inner horizontal\nborders between rows and the inner vertical borders between columns.\n\nThe sides are represented by [BorderSide] objects.", "detail": "", "kind": 7, "label": "TableBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsets", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions.\n\nTypically used for an offset from each of the four sides of a box. For\nexample, the padding inside a box can be represented using this class.\n\nThe [EdgeInsets] class specifies offsets in terms of visual edges, left,\ntop, right, and bottom. These values are not affected by the\n[TextDirection]. To support both left-to-right and right-to-left layouts,\nconsider using [EdgeInsetsDirectional], which is expressed in terms of\n_start_, top, _end_, and bottom, where start and end are resolved in terms\nof a [TextDirection] (typically obtained from the ambient [Directionality]).\n\n\nHere are some examples of how to create [EdgeInsets] instances:\n\nTypical eight-pixel margin on all sides:\n\n```dart\nconst EdgeInsets.all(8.0)\n```\n\nEight pixel margin above and below, no horizontal margins:\n\n```dart\nconst EdgeInsets.symmetric(vertical: 8.0)\n```\n\nLeft margin indent of 40 pixels:\n\n```dart\nconst EdgeInsets.only(left: 40.0)\n```\n\nSee also:\n\n * [Padding], a widget that accepts [EdgeInsets] to describe its margins.\n * [EdgeInsetsDirectional], which (for properties and arguments that accept\n the type [EdgeInsetsGeometry]) allows the horizontal insets to be\n specified in a [TextDirection]-aware manner.", "detail": "", "kind": 7, "label": "EdgeInsets" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Describes the semantic information associated with the owning\n[RenderObject].\n\nThe information provided in the configuration is used to generate the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderShiftedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Abstract class for one-child-layout render boxes that provide control over\nthe child's position.", "detail": "", "kind": 7, "label": "RenderShiftedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SelectionChangedCause", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Indicates what triggered the change in selected text (including changes to\nthe cursor location).", "detail": "", "kind": 13, "label": "SelectionChangedCause" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Controls the layout of tiles in a grid.\n\nGiven the current constraints on the grid, a [SliverGridDelegate] computes\nthe layout for the tiles in the grid. The tiles can be placed arbitrarily,\nbut it is more efficient to place tiles in roughly in order by scroll offset\nbecause grids reify a contiguous sequence of children.\n\nSee also:\n\n * [SliverGridDelegateWithFixedCrossAxisCount], which creates a layout with\n a fixed number of tiles in the cross axis.\n * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with\n tiles that have a maximum cross-axis extent.\n * [GridView], which uses this delegate to control the layout of its tiles.\n * [SliverGrid], which uses this delegate to control the layout of its\n tiles.\n * [RenderSliverGrid], which uses this delegate to control the layout of its\n tiles.", "detail": "", "kind": 7, "label": "SliverGridDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The root of the render tree.\n\nThe view represents the total output surface of the render tree and handles\nbootstrapping the rendering pipeline. The view has a unique child\n[RenderBox], which is required to fill the entire output surface.", "detail": "", "kind": 7, "label": "RenderView" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerMoveEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerMoveEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerMoveEvent event) → void", "kind": 7, "label": "PointerMoveEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingHeaderSnapConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Specifies how a floating header is to be \"snapped\" (animated) into or out\nof view.\n\nSee also:\n\n * [RenderSliverFloatingPersistentHeader.maybeStartSnapAnimation] and\n [RenderSliverFloatingPersistentHeader.maybeStopSnapAnimation], which\n start or stop the floating header's animation.\n * [SliverAppBar], which creates a header that can be pinned, floating,\n and snapped into view via the corresponding parameters.", "detail": "", "kind": 7, "label": "FloatingHeaderSnapConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LeaderLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that can be followed by a [FollowerLayer].\n\nThis layer collapses the accumulated offset into a transform and passes\n[Offset.zero] to its child layers in the [addToScene]/[addChildrenToScene]\nmethods, so that [applyTransform] will work reliably.", "detail": "", "kind": 7, "label": "LeaderLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TableCellVerticalAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Vertical alignment options for cells in [RenderTable] objects.\n\nThis is specified using [TableCellParentData] objects on the\n[RenderObject.parentData] of the children of the [RenderTable].", "detail": "", "kind": 13, "label": "TableCellVerticalAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Overflow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Whether overflowing children should be clipped, or their overflow be\nvisible.", "detail": "", "kind": 13, "label": "Overflow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContinuousRectangleBorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A rectangular border with smooth continuous transitions between the straight\nsides and the rounded corners.\n\n```dart\nWidget build(BuildContext context) {\n return Material(\n shape: ContinuousRectangleBorder(\n borderRadius: BorderRadius.circular(28.0),\n ),\n );\n}\n```\n\nSee also:\n\n* [RoundedRectangleBorder] Which creates rectangles with rounded corners,\n however its straight sides change into a rounded corner with a circular\n radius in a step function instead of gradually like the\n [ContinuousRectangleBorder].", "detail": "", "kind": 7, "label": "ContinuousRectangleBorder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerCancelEventListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listening to [PointerCancelEvent] events.\n\nUsed by [Listener] and [RenderPointerListener].", "detail": "(PointerCancelEvent event) → void", "kind": 7, "label": "PointerCancelEventListener" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipOval", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using an oval.\n\nBy default, inscribes an axis-aligned oval into its layout dimensions and\nprevents its child from painting outside that oval, but the size and\nlocation of the clip oval can be customized using a custom [clipper].", "detail": "", "kind": 7, "label": "RenderClipOval" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSVColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [value].\n\nAn [HSVColor] is represented in a parameter space that's based on human\nperception of color in pigments (e.g. paint and printer's ink). The\nrepresentation is useful for some color computations (e.g. rotating the hue\nthrough the colors), because interpolation and picking of\ncolors as red, green, and blue channels doesn't always produce intuitive\nresults.\n\nThe HSV color space models the way that different pigments are perceived\nwhen mixed. The hue describes which pigment is used, the saturation\ndescribes which shade of the pigment, and the value resembles mixing the\npigment with different amounts of black or white pigment.\n\nSee also:\n\n * [HSLColor], a color that uses a color space based on human perception of\n colored light.\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSVColor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderWrap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays its children in multiple horizontal or vertical runs.\n\nA [RenderWrap] lays out each child and attempts to place the child adjacent\nto the previous child in the main axis, given by [direction], leaving\n[spacing] space in between. If there is not enough space to fit the child,\n[RenderWrap] creates a new _run_ adjacent to the existing children in the\ncross axis.\n\nAfter all the children have been allocated to runs, the children within the\nruns are positioned according to the [alignment] in the main axis and\naccording to the [crossAxisAlignment] in the cross axis.\n\nThe runs themselves are then positioned in the cross axis according to the\n[runSpacing] and [runAlignment].", "detail": "", "kind": 7, "label": "RenderWrap" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverPadding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Inset a [RenderSliver], applying padding on each side.\n\nA [RenderSliverPadding] object wraps the [SliverGeometry.layoutExtent] of\nits child. Any incoming [SliverConstraints.overlap] is ignored and not\npassed on to the child.\n\nApplying padding to anything but the most mundane sliver is likely to have\nundesired effects. For example, wrapping a\n[RenderSliverPinnedPersistentHeader] will cause the app bar to overlap\nearlier slivers (contrary to the normal behavior of pinned app bars), and\nwhile the app bar is pinned, the padding will scroll away.", "detail": "", "kind": 7, "label": "RenderSliverPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderClipRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Clips its child using a rectangle.\n\nBy default, [RenderClipRect] prevents its child from painting outside its\nbounds, but the size and location of the clip rect can be customized using a\ncustom [clipper].", "detail": "", "kind": 7, "label": "RenderClipRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column to a fraction of the table's constraints' maxWidth.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FractionColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderFlex].", "detail": "", "kind": 7, "label": "FlexParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticLevel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various priority levels used to filter which diagnostics are shown and\nomitted.\n\nTrees of Flutter diagnostics can be very large so filtering the diagnostics\nshown matters. Typically filtering to only show diagnostics with at least\nlevel [debug] is appropriate.", "detail": "", "kind": 13, "label": "DiagnosticLevel" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverGridParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by [RenderSliverGrid].", "detail": "", "kind": 7, "label": "SliverGridParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalModelLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that uses a physical model to producing lighting effects.\n\nFor example, the layer casts a shadow according to its geometry and the\nrelative position of lights and other physically modelled objects in the\nscene.\n\nWhen debugging, setting [debugDisablePhysicalShapeLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "PhysicalModelLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlignmentGeometryTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two [AlignmentGeometry].\n\nThis class specializes the interpolation of [Tween<AlignmentGeometry>]\nto be appropriate for alignments.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between two [Alignment] objects.", "detail": "", "kind": 7, "label": "AlignmentGeometryTween" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An offset that's expressed as a fraction of a [Size].\n\n`FractionalOffset(1.0, 0.0)` represents the top right of the [Size].\n\n`FractionalOffset(0.0, 1.0)` represents the bottom left of the [Size].\n\n`FractionalOffset(0.5, 2.0)` represents a point half way across the [Size],\nbelow the bottom of the rectangle by the height of the [Size].\n\nThe [FractionalOffset] class specifies offsets in terms of a distance from\nthe top left, regardless of the [TextDirection].\n\n## Design discussion\n\n[FractionalOffset] and [Alignment] are two different representations of the\nsame information: the location within a rectangle relative to the size of\nthe rectangle. The difference between the two classes is in the coordinate\nsystem they use to represent the location.\n\n[FractionalOffset] uses a coordinate system with an origin in the top-left\ncorner of the rectangle whereas [Alignment] uses a coordinate system with an\norigin in the center of the rectangle.\n\nHistorically, [FractionalOffset] predates [Alignment]. When we attempted to\nmake a version of [FractionalOffset] that adapted to the [TextDirection], we\nran into difficulty because placing the origin in the top-left corner\nintroduced a left-to-right bias that was hard to remove.\n\nBy placing the origin in the center, [Alignment] and [AlignmentDirectional]\nare able to use the same origin, which means we can use a linear function to\nresolve an [AlignmentDirectional] into an [Alignment] in both\n[TextDirection.rtl] and [TextDirection.ltr].\n\n[Alignment] is better for most purposes than [FractionalOffset] and should\nbe used instead of [FractionalOffset]. We continue to implement\n[FractionalOffset] to support code that predates [Alignment].\n\nSee also:\n\n * [Alignment], which uses a coordinate system based on the center of the\n rectangle instead of the top left corner of the rectangle.", "detail": "", "kind": 7, "label": "FractionalOffset" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to size the non-positioned children of a [Stack].\n\nThis enum is used with [Stack.fit] and [RenderStack.fit] to control\nhow the [BoxConstraints] passed from the stack's parent to the stack's child\nare adjusted.\n\nSee also:\n\n * [Stack], the widget that uses this.\n * [RenderStack], the render object that implements the stack algorithm.", "detail": "", "kind": 13, "label": "StackFit" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Decoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A description of a box decoration (a decoration applied to a [Rect]).\n\nThis class presents the abstract interface for all decorations.\nSee [BoxDecoration] for a concrete example.\n\nTo actually paint a [Decoration], use the [createBoxPainter]\nmethod to obtain a [BoxPainter]. [Decoration] objects can be\nshared between boxes; [BoxPainter] objects can cache resources to\nmake painting on a particular surface faster.", "detail": "", "kind": 7, "label": "Decoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HSLColor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A color represented using [alpha], [hue], [saturation], and [lightness].\n\nAn [HSLColor] is represented in a parameter space that's based up human\nperception of colored light. The representation is useful for some color\ncomputations (e.g., combining colors of light), because interpolation and\npicking of colors as red, green, and blue channels doesn't always produce\nintuitive results.\n\nHSL is a perceptual color model, placing fully saturated colors around a\ncircle (conceptually) at a lightness of ​0.5, with a lightness of 0.0 being\ncompletely black, and a lightness of 1.0 being completely white. As the\nlightness increases or decreases from 0.5, the apparent saturation decreases\nproportionally (even though the [saturation] parameter hasn't changed).\n\nSee also:\n\n * [HSVColor], a color that uses a color space based on human perception of\n pigments (e.g. paint and printer's ink).\n * [HSV and HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) Wikipedia\n article, which this implementation is based upon.", "detail": "", "kind": 7, "label": "HSLColor" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListWheelChildManager", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate used by [RenderListWheelViewport] to manage its children.\n\n[RenderListWheelViewport] during layout will ask the delegate to create\nchildren that are visible in the viewport and remove those that are not.", "detail": "", "kind": 7, "label": "ListWheelChildManager" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsDirectional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable set of offsets in each of the four cardinal directions, but\nwhose horizontal components are dependent on the writing direction.\n\nThis can be used to indicate padding from the left in [TextDirection.ltr]\ntext and padding from the right in [TextDirection.rtl] text without having\nto be aware of the current text direction.\n\nSee also:\n\n * [EdgeInsets], a variant that uses physical labels (left and right instead\n of start and end).", "detail": "", "kind": 7, "label": "EdgeInsetsDirectional" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderParagraph", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that displays a paragraph of text", "detail": "", "kind": 7, "label": "RenderParagraph" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AutomaticNotchedShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [NotchedShape] created from [ShapeBorder]s.\n\nTwo shapes can be provided. The [host] is the shape of the widget that\nuses the [NotchedShape] (typically a [BottomAppBar]). The [guest] is\nsubtracted from the [host] to create the notch (typically to make room\nfor a [FloatingActionButton]).", "detail": "", "kind": 7, "label": "AutomaticNotchedShape" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A layer that shows an embedded [UIView](https://developer.apple.com/documentation/uikit/uiview)\non iOS.", "detail": "", "kind": 7, "label": "PlatformViewLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContainerLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer that has a list of children.\n\nA [ContainerLayer] instance merely takes a list of children and inserts them\ninto the composited rendering in order. There are subclasses of\n[ContainerLayer] which apply more elaborate effects in the process.", "detail": "", "kind": 7, "label": "ContainerLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column by taking a part of the remaining space once all\nthe other columns have been laid out.\n\nFor example, if two columns have a [FlexColumnWidth], then half the\nspace will go to one and half the space will go to the other.\n\nThis is a cheap way to size a column.", "detail": "", "kind": 7, "label": "FlexColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderFractionalTranslation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Applies a translation transformation before painting its child.\n\nThe translation is expressed as an [Offset] scaled to the child's size. For\nexample, an [Offset] with a `dx` of 0.25 will result in a horizontal\ntranslation of one quarter the width of the child.\n\nHit tests will only be detected inside the bounds of the\n[RenderFractionalTranslation], even if the contents are offset such that\nthey overflow.", "detail": "", "kind": 7, "label": "RenderFractionalTranslation" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ShapeDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint an arbitrary shape.\n\nThe [ShapeDecoration] class provides a way to draw a [ShapeBorder],\noptionally filling it with a color or a gradient, optionally painting an\nimage into it, and optionally casting a shadow.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw a white rectangle with a 24-pixel multicolor outline, with the text\n\"RGB\" inside it:\n\n```dart\nContainer(\n decoration: ShapeDecoration(\n color: Colors.white,\n shape: Border.all(\n color: Colors.red,\n width: 8.0,\n ) + Border.all(\n color: Colors.green,\n width: 8.0,\n ) + Border.all(\n color: Colors.blue,\n width: 8.0,\n ),\n ),\n child: const Text('RGB', textAlign: TextAlign.center),\n)\n```\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [ShapeDecoration] objects.\n * [BoxDecoration], a similar [Decoration] that is optimized for rectangles\n specifically.\n * [ShapeBorder], the base class for the objects that are used in the\n [shape] property.", "detail": "", "kind": 7, "label": "ShapeDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MinColumnWidth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Sizes the column such that it is the size that is the minimum of\ntwo column width specifications.\n\nFor example, to have a column be 10% of the container width but\nnever bigger than 100px, you could use:\n\n const MinColumnWidth(const FixedColumnWidth(100.0), FractionColumnWidth(0.1))\n\nBoth specifications are evaluated, so if either specification is\nexpensive, so is this.", "detail": "", "kind": 7, "label": "MinColumnWidth" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRRectLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composite layer that clips its children using a rounded rectangle.\n\nWhen debugging, setting [debugDisableClipLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "ClipRRectLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for touch, stylus, or mouse events.\n\nPointer events operate in the coordinate space of the screen, scaled to\nlogical pixels. Logical pixels approximate a grid with about 38 pixels per\ncentimeter, or 96 pixels per inch.\n\nThis allows gestures to be recognized independent of the precise hardware\ncharacteristics of the device. In particular, features such as touch slop\n(see [kTouchSlop]) can be defined in terms of roughly physical lengths so\nthat the user can shift their finger by the same distance on a high-density\ndisplay as on a low-resolution device.\n\nFor similar reasons, pointer events are not affected by any transforms in\nthe rendering layer. This means that deltas may need to be scaled before\nbeing applied to movement within the rendering. For example, if a scrolling\nlist is shown scaled by 2x, the pointer deltas will have to be scaled by the\ninverse amount if the list is to appear to scroll with the user's finger.\n\nSee also:\n\n * [Window.devicePixelRatio], which defines the device's current resolution.", "detail": "", "kind": 7, "label": "PointerEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverPersistentHeader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A base class for slivers that have a [RenderBox] child which scrolls\nnormally, except that when it hits the leading edge (typically the top) of\nthe viewport, it shrinks to a minimum size ([minExtent]).\n\nThis class primarily provides helpers for managing the child, in particular:\n\n * [layoutChild], which applies min and max extents and a scroll offset to\n lay out the child. This is normally called from [performLayout].\n\n * [childExtent], to convert the child's box layout dimensions to the sliver\n geometry model.\n\n * hit testing, painting, and other details of the sliver protocol.\n\nSubclasses must implement [performLayout], [minExtent], and [maxExtent], and\ntypically also will implement [updateChild].", "detail": "", "kind": 7, "label": "RenderSliverPersistentHeader" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeepAliveParentDataMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data structure used by [RenderSliverWithKeepAliveMixin].", "detail": "", "kind": 7, "label": "KeepAliveParentDataMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DiagnosticPropertiesBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Builder to accumulate properties and configuration used to assemble a\n[DiagnosticsNode] from a [Diagnosticable] object.", "detail": "", "kind": 7, "label": "DiagnosticPropertiesBuilder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverSingleBoxAdapter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An abstract class for [RenderSliver]s that contains a single [RenderBox].\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which extends this class to size the child\n according to its preferred size.\n * [RenderSliverFillRemaining], which extends this class to size the child\n to fill the remaining space in the viewport.", "detail": "", "kind": 7, "label": "RenderSliverSingleBoxAdapter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageRepeat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to paint any portions of a box not covered by an image.", "detail": "", "kind": 13, "label": "ImageRepeat" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PerformanceOverlayLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A layer that indicates to the compositor that it should display\ncertain performance statistics within it.\n\nPerformance overlay layers are always leaves in the layer tree.", "detail": "", "kind": 7, "label": "PerformanceOverlayLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderViewport", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A render object that is bigger on the inside.\n\n[RenderViewport] is the visual workhorse of the scrolling machinery. It\ndisplays a subset of its children according to its own dimensions and the\ngiven [offset]. As the offset varies, different children are visible through\nthe viewport.\n\n[RenderViewport] hosts a bidirectional list of slivers, anchored on a\n[center] sliver, which is placed at the zero scroll offset. The center\nwidget is displayed in the viewport according to the [anchor] property.\n\nSlivers that are earlier in the child list than [center] are displayed in\nreverse order in the reverse [axisDirection] starting from the [center]. For\nexample, if the [axisDirection] is [AxisDirection.down], the first sliver\nbefore [center] is placed above the [center]. The slivers that are later in\nthe child list than [center] are placed in order in the [axisDirection]. For\nexample, in the preceding scenario, the first sliver after [center] is\nplaced below the [center].\n\n[RenderViewport] cannot contain [RenderBox] children directly. Instead, use\na [RenderSliverList], [RenderSliverFixedExtentList], [RenderSliverGrid], or\na [RenderSliverToBoxAdapter], for example.\n\nSee also:\n\n * [RenderSliver], which explains more about the Sliver protocol.\n * [RenderBox], which explains more about the Box protocol.\n * [RenderSliverToBoxAdapter], which allows a [RenderBox] object to be\n placed inside a [RenderSliver] (the opposite of this class).\n * [RenderShrinkWrappingViewport], a variant of [RenderViewport] that\n shrink-wraps its contents along the main axis.", "detail": "", "kind": 7, "label": "RenderViewport" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderMergeSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Causes the semantics of all descendants to be merged into this\nnode such that the entire subtree becomes a single leaf in the\nsemantics tree.\n\nUseful for combining the semantics of multiple render objects that\nform part of a single conceptual widget, e.g. a checkbox, a label,\nand the gesture detector that goes with them.", "detail": "", "kind": 7, "label": "RenderMergeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderPadding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Insets its child by the given padding.\n\nWhen passing layout constraints to its child, padding shrinks the\nconstraints by the given padding, causing the child to layout at a smaller\nsize. Padding then sizes itself to its child's size, inflated by the\npadding, effectively creating empty space around the child.", "detail": "", "kind": 7, "label": "RenderPadding" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Border", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A border of a box, comprised of four sides: top, right, bottom, left.\n\nThe sides are represented by [BorderSide] objects.\n\n\nAll four borders the same, two-pixel wide solid white:\n\n```dart\nBorder.all(width: 2.0, color: const Color(0xFFFFFFFF))\n```\n\nThe border for a material design divider:\n\n```dart\nBorder(bottom: BorderSide(color: Theme.of(context).dividerColor))\n```\n\nA 1990s-era \"OK\" button:\n\n```dart\nContainer(\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFFFFFFF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF000000)),\n ),\n ),\n child: Container(\n padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 2.0),\n decoration: const BoxDecoration(\n border: Border(\n top: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n left: BorderSide(width: 1.0, color: Color(0xFFFFDFDFDF)),\n right: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n bottom: BorderSide(width: 1.0, color: Color(0xFFFF7F7F7F)),\n ),\n color: Color(0xFFBFBFBF),\n ),\n child: const Text(\n 'OK',\n textAlign: TextAlign.center,\n style: TextStyle(color: Color(0xFF000000))\n ),\n ),\n)\n```\n\nSee also:\n\n * [BoxDecoration], which uses this class to describe its edge decoration.\n * [BorderSide], which is used to describe each side of the box.\n * [Theme], from the material layer, which can be queried to obtain appropriate colors\n to use for borders in a material app, as shown in the \"divider\" sample above.", "detail": "", "kind": 7, "label": "Border" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SliverConstraints", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Immutable layout constraints for [RenderSliver] layout.\n\nThe [SliverConstraints] describe the current scroll state of the viewport\nfrom the point of view of the sliver receiving the constraints. For example,\na [scrollOffset] of zero means that the leading edge of the sliver is\nvisible in the viewport, not that the viewport itself has a zero scroll\noffset.", "detail": "", "kind": 7, "label": "SliverConstraints" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ScrollDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The direction of a scroll, relative to the positive scroll offset axis given\nby an [AxisDirection] and a [GrowthDirection].\n\nThis contrasts to [GrowthDirection] in that it has a third value, [idle],\nfor the case where no scroll is occurring.\n\nThis is used by [RenderSliverFloatingPersistentHeader] to only expand when\nthe user is scrolling in the same direction as the detected scroll offset\nchange.", "detail": "", "kind": 13, "label": "ScrollDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderRadiusGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [BorderRadius] that allows for text-direction aware resolution.\n\nA property or argument of this type accepts classes created either with [new\nBorderRadius.only] and its variants, or [new BorderRadiusDirectional.only]\nand its variants.\n\nTo convert a [BorderRadiusGeometry] object of indeterminate type into a\n[BorderRadius] object, call the [resolve] method.", "detail": "", "kind": 7, "label": "BorderRadiusGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextOverflow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How overflowing text should be handled.", "detail": "", "kind": 13, "label": "TextOverflow" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OneFrameImageStreamCompleter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those\nwith only one frame).", "detail": "", "kind": 7, "label": "OneFrameImageStreamCompleter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBlockSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Causes the semantics of all earlier render objects below the same semantic\nboundary to be dropped.\n\nThis is useful in a stack where an opaque mask should prevent interactions\nwith the render objects painted below the mask.", "detail": "", "kind": 7, "label": "RenderBlockSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderBoxContainerDefaultsMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that provides useful default behaviors for boxes with children\nmanaged by the [ContainerRenderObjectMixin] mixin.\n\nBy convention, this class doesn't override any members of the superclass.\nInstead, it provides helpful functions that subclasses can call as\nappropriate.", "detail": "", "kind": 7, "label": "RenderBoxContainerDefaultsMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A subclass of [ImageProvider] that knows about [AssetBundle]s.\n\nThis factors out the common logic of [AssetBundle]-based [ImageProvider]\nclasses, simplifying what subclasses must implement to just [obtainKey].", "detail": "", "kind": 7, "label": "AssetBundleImageProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBodyParentData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Parent data for use with [RenderListBody].", "detail": "", "kind": 7, "label": "ListBodyParentData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxPainter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A stateful class that can paint a particular [Decoration].\n\n[BoxPainter] objects can cache resources so that they can be used\nmultiple times.\n\nSome resources used by [BoxPainter] may load asynchronously. When this\nhappens, the [onChanged] callback will be invoked. To stop this callback\nfrom being called after the painter has been discarded, call [dispose].", "detail": "", "kind": 7, "label": "BoxPainter" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DebugSemanticsDumpOrder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Used by [debugDumpSemanticsTree] to specify the order in which child nodes\nare printed.", "detail": "", "kind": 13, "label": "DebugSemanticsDumpOrder" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultiChildLayoutDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A delegate that controls the layout of multiple children.\n\nDelegates must be idempotent. Specifically, if two delegates are equal, then\nthey must produce the same layout. To change the layout, replace the\ndelegate with a different instance whose [shouldRelayout] returns true when\ngiven the previous instance.\n\nOverride [getSize] to control the overall size of the layout. The size of\nthe layout cannot depend on layout properties of the children.\n\nOverride [performLayout] to size and position the children. An\nimplementation of [performLayout] must call [layoutChild] exactly once for\neach child, but it may call [layoutChild] on children in an arbitrary order.\nTypically a delegate will use the size returned from [layoutChild] on one\nchild to determine the constraints for [performLayout] on another child or\nto determine the offset for [positionChild] for that child or another child.\n\nOverride [shouldRelayout] to determine when the layout of the children needs\nto be recomputed when the delegate changes.\n\nUsed with [CustomMultiChildLayout], the widget for the\n[RenderCustomMultiChildLayoutBox] render object.\n\nEach child must be wrapped in a [LayoutId] widget to assign the id that\nidentifies it to the delegate. The [LayoutId.id] needs to be unique among\nthe children that the [CustomMultiChildLayout] manages.\n\n\nBelow is an example implementation of [performLayout] that causes one widget\n(the follower) to be the same size as another (the leader):\n\n```dart\n// Define your own slot numbers, depending upon the id assigned by LayoutId.\n// Typical usage is to define an enum like the one below, and use those\n// values as the ids.\nenum _Slot {\n leader,\n follower,\n}\n\nclass FollowTheLeader extends MultiChildLayoutDelegate {\n @override\n void performLayout(Size size) {\n Size leaderSize = Size.zero;\n\n if (hasChild(_Slot.leader)) {\n leaderSize = layoutChild(_Slot.leader, BoxConstraints.loose(size));\n positionChild(_Slot.leader, Offset.zero);\n }\n\n if (hasChild(_Slot.follower)) {\n layoutChild(_Slot.follower, BoxConstraints.tight(leaderSize));\n positionChild(_Slot.follower, Offset(size.width - leaderSize.width,\n size.height - leaderSize.height));\n }\n }\n\n @override\n bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) => false;\n}\n```\n\nThe delegate gives the leader widget loose constraints, which means the\nchild determines what size to be (subject to fitting within the given size).\nThe delegate then remembers the size of that child and places it in the\nupper left corner.\n\nThe delegate then gives the follower widget tight constraints, forcing it to\nmatch the size of the leader widget. The delegate then places the follower\nwidget in the bottom right corner.\n\nThe leader and follower widget will paint in the order they appear in the\nchild list, regardless of the order in which [layoutChild] is called on\nthem.", "detail": "", "kind": 7, "label": "MultiChildLayoutDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A place to paint.\n\nRather than holding a canvas directly, [RenderObject]s paint using a painting\ncontext. The painting context has a [Canvas], which receives the\nindividual draw operations, and also has functions for painting child\nrender objects.\n\nWhen painting a child render object, the canvas held by the painting context\ncan change because the draw operations issued before and after painting the\nchild might be recorded in separate compositing layers. For this reason, do\nnot hold a reference to the canvas across operations that might paint\nchild render objects.\n\nNew [PaintingContext] objects are created automatically when using\n[PaintingContext.repaintCompositedChild] and [pushLayer].", "detail": "", "kind": 7, "label": "PaintingContext" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlagProperty", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Property where the description is either [ifTrue] or [ifFalse] depending on\nwhether [value] is true or false.\n\nUsing [FlagProperty] instead of [DiagnosticsProperty<bool>] can make\ndiagnostics display more polished. For example, given a property named\n`visible` that is typically true, the following code will return 'hidden'\nwhen `visible` is false and nothing when visible is true, in contrast to\n`visible: true` or `visible: false`.\n\n\n```dart\nFlagProperty(\n 'visible',\n value: true,\n ifFalse: 'hidden',\n)\n```\n\n[FlagProperty] should also be used instead of [DiagnosticsProperty<bool>]\nif showing the bool value would not clearly indicate the meaning of the\nproperty value.\n\n```dart\nFlagProperty(\n 'inherit',\n value: inherit,\n ifTrue: '<all styles inherited>',\n ifFalse: '<no style specified>',\n)\n```\n\nSee also:\n\n * [ObjectFlagProperty], which provides similar behavior describing whether\n a [value] is null.", "detail": "", "kind": 7, "label": "FlagProperty" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EdgeInsetsGeometry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for [EdgeInsets] that allows for text-direction aware\nresolution.\n\nA property or argument of this type accepts classes created either with [new\nEdgeInsets.fromLTRB] and its variants, or [new\nEdgeInsetsDirectional.fromSTEB] and its variants.\n\nTo convert an [EdgeInsetsGeometry] object of indeterminate type into a\n[EdgeInsets] object, call the [resolve] method.\n\nSee also:\n\n * [Padding], a widget that describes margins using [EdgeInsetsGeometry].", "detail": "", "kind": 7, "label": "EdgeInsetsGeometry" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An event sent by the application to notify interested listeners that\nsomething happened to the user interface (e.g. a view scrolled).\n\nThese events are usually interpreted by assistive technologies to give the\nuser additional clues about the current state of the UI.", "detail": "", "kind": 7, "label": "SemanticsEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BorderStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The style of line to draw for a [BorderSide] in a [Border].", "detail": "", "kind": 13, "label": "BorderStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundleImageKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Key for the image obtained by an [AssetImage] or [ExactAssetImage].\n\nThis is used to identify the precise resource in the [imageCache].", "detail": "", "kind": 7, "label": "AssetBundleImageKey" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MainAxisAlignment", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the children should be placed along the main axis in a flex layout.\n\nSee also:\n\n * [Column], [Row], and [Flex], the flex widgets.\n * [RenderFlex], the flex render object.", "detail": "", "kind": 13, "label": "MainAxisAlignment" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayerLink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that a [LeaderLayer] can register with.\n\nAn instance of this class should be provided as the [LeaderLayer.link] and\nthe [FollowerLayer.link] properties to cause the [FollowerLayer] to follow\nthe [LeaderLayer].\n\nSee also:\n\n * [CompositedTransformTarget], the widget that creates a [LeaderLayer].\n * [CompositedTransformFollower], the widget that creates a [FollowerLayer].\n * [RenderLeaderLayer] and [RenderFollowerLayer], the corresponding\n render objects.", "detail": "", "kind": 7, "label": "LayerLink" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HitTestBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How to behave during hit tests.", "detail": "", "kind": 13, "label": "HitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderDecoratedBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Paints a [Decoration] either before or after its child paints.", "detail": "", "kind": 7, "label": "RenderDecoratedBox" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsProperties", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Contains properties used by assistive technologies to make the application\nmore accessible.\n\nThe properties of this class are used to generate a [SemanticsNode]s in the\nsemantics tree.", "detail": "", "kind": 7, "label": "SemanticsProperties" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FractionalOffsetTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two fractional offsets.\n\nThis class specializes the interpolation of [Tween<FractionalOffset>] to be\nappropriate for fractional offsets.\n\nSee [Tween] for a discussion on how to use interpolation objects.\n\nSee also:\n\n * [AlignmentTween], which interpolates between to [Alignment] objects.", "detail": "", "kind": 7, "label": "FractionalOffsetTween" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderExcludeSemantics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Excludes this subtree from the semantic tree.\n\nWhen [excluding] is true, this render object (and its subtree) is excluded\nfrom the semantic tree.\n\nUseful e.g. for hiding text that is redundant with other text next\nto it (e.g. text included only for the visual effect).", "detail": "", "kind": 7, "label": "RenderExcludeSemantics" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RadialGradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A 2D radial gradient.\n\nThis class is used by [BoxDecoration] to represent radial gradients. This\nabstracts out the arguments to the [new ui.Gradient.radial] constructor from\nthe `dart:ui` library.\n\nA normal radial gradient has a [center] and a [radius]. The [center] point\ncorresponds to 0.0, and the ring at [radius] from the center corresponds\nto 1.0. These lengths are expressed in fractions, so that the same gradient\ncan be reused with varying sized boxes without changing the parameters.\n(This contrasts with [new ui.Gradient.radial], whose arguments are expressed\nin logical pixels.)\n\nIt is also possible to create a two-point (or focal pointed) radial gradient\n(which is sometimes referred to as a two point conic gradient, but is not the\nsame as a CSS conic gradient which corresponds to a [SweepGradient]). A [focal]\npoint and [focalRadius] can be specified similarly to [center] and [radius],\nwhich will make the rendered gradient appear to be pointed or directed in the\ndirection of the [focal] point. This is only important if [focal] and [center]\nare not equal or [focalRadius] > 0.0 (as this case is visually identical to a\nnormal radial gradient). One important case to avoid is having [focal] and\n[center] both resolve to [Offset.zero] when [focalRadius] > 0.0. In such a case,\na valid shader cannot be created by the framework.\n\nThe [colors] are described by a list of [Color] objects. There must be at\nleast two colors. The [stops] list, if specified, must have the same length\nas [colors]. It specifies fractions of the radius between 0.0 and 1.0,\ngiving concentric rings for each color stop. If it is null, a uniform\ndistribution is assumed.\n\nThe region of the canvas beyond [radius] from the [center] is colored\naccording to [tileMode].\n\nTypically this class is used with [BoxDecoration], which does the painting.\nTo use a [RadialGradient] to paint on a canvas directly, see [createShader].\n\n\nThis function draws a gradient that looks like a sun in a blue sky.\n\n```dart\nvoid paintSky(Canvas canvas, Rect rect) {\n var gradient = RadialGradient(\n center: const Alignment(0.7, -0.6), // near the top right\n radius: 0.2,\n colors: [\n const Color(0xFFFFFF00), // yellow sun\n const Color(0xFF0099FF), // blue sky\n ],\n stops: [0.4, 1.0],\n );\n // rect is the area we are painting over\n var paint = Paint()\n ..shader = gradient.createShader(rect);\n canvas.drawRect(rect, paint);\n}\n```\n\nSee also:\n\n * [LinearGradient], which displays a gradient in parallel lines, and has an\n example which shows a different way to use [Gradient] objects.\n * [SweepGradient], which displays a gradient in a sweeping arc around a\n center point.\n * [BoxDecoration], which can take a [RadialGradient] in its\n [BoxDecoration.gradient] property.\n * [CustomPainter], which shows how to use the above sample code in a custom\n painter.", "detail": "", "kind": 7, "label": "RadialGradient" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AxisDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A direction along either the horizontal or vertical [Axis].", "detail": "", "kind": 13, "label": "AxisDirection" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipRectLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composite layer that clips its children using a rectangle.\n\nWhen debugging, setting [debugDisableClipLayers] to true will cause this\nlayer to be skipped (directly replaced by its children). This can be helpful\nto track down the cause of performance problems.", "detail": "", "kind": 7, "label": "ClipRectLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsService", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Allows access to the platform's accessibility services.\n\nEvents sent by this service are handled by the platform-specific\naccessibility bridge in Flutter's engine.\n\nWhen possible, prefer using mechanisms like [Semantics] to implicitly\ntrigger announcements over using this event.", "detail": "", "kind": 7, "label": "SemanticsService" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlexFit", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "How the child is inscribed into the available space.\n\nSee also:\n\n * [RenderFlex], the flex render object.\n * [Column], [Row], and [Flex], the flex widgets.\n * [Expanded], the widget equivalent of [tight].\n * [Flexible], the widget equivalent of [loose].", "detail": "", "kind": 13, "label": "FlexFit" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Defines the strut, which sets the minimum height a line can be\nrelative to the baseline. Strut applies to all lines in the paragraph.\n\nStrut is a feature that allows minimum line heights to be set. The effect is as\nif a zero width space was included at the beginning of each line in the\nparagraph. This imaginary space is 'shaped' according the properties defined\nin this class. Flutter's strut is based on [typesetting strut](https://en.wikipedia.org/wiki/Strut_(typesetting))\nand CSS's [line-height](https://www.w3.org/TR/CSS2/visudet.html#line-height).\n\nNo lines may be shorter than the strut. The ascent and descent of the strut\nare calculated, and any laid out text that has a shorter ascent or descent than\nthe strut's ascent or descent will take the ascent and descent of the strut.\nText with ascents or descents larger than the strut's ascent or descent will lay\nout as normal and extend past the strut.\n\nStrut is defined independently from any text content or [TextStyle]s.\n\nThe vertical components of strut are as follows:\n\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n * `ascent * height`\n * `descent * height`\n * `leading * fontSize / 2` or half the font leading if `leading` is undefined (half leading)\n\nThe sum of these four values is the total height of the line.\n\nThe `ascent + descent` is equivalent to the [fontSize]. Ascent is the font's\nspacing above the baseline without leading and descent is the spacing below the\nbaseline without leading. Leading is split evenly between the top and bottom.\nThe values for `ascent` and `descent` are provided by the font named by\n[fontFamily]. If no [fontFamily] or [fontFamilyFallback] is provided, then the\nplatform's default family will be used.\n\nEach line's spacing above the baseline will be at least as tall as the half\nleading plus ascent. Each line's spacing below the baseline will be at least as\ntall as the half leading plus descent.\n\nSee also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/dart-ui/StrutStyle-class.html), the class in the [dart:ui] library.\n\n### Fields and their default values.\n\nOmitted or null properties will take the default values specified below:\n\n * [fontFamily]: the name of the font to use when calculating the strut\n (e.g., Roboto). No glyphs from the font will be drawn and the font will\n be used purely for metrics.\n\n * [fontFamilyFallback]: an ordered list of font family names that will be searched for when\n the font in [fontFamily] cannot be found. When all specified font families have been\n exhausted an no match was found, the default platform font will be used.\n\n * [fontSize]: the size of the ascent plus descent in logical pixels. This\n is also used as the basis of the custom leading calculation. This value\n cannot be negative.\n Default is 14 logical pixels.\n\n * [height]: the multiple of [fontSize] to multiply the ascent and descent by.\n The [height] will impact the spacing above and below the baseline differently\n depending on the ratios between the font's ascent and descent. This property is\n separate from the leading multiplier, which is controlled through [leading].\n Default is 1.0.\n\n * [leading]: the custom leading to apply to the strut as a multiple of [fontSize].\n Leading is additional spacing between lines. Half of the leading is added\n to the top and the other half to the bottom of the line height. This differs\n from [height] since the spacing is equally distributed above and below the\n baseline.\n Default is `null`, which will use the font-specified leading.\n\n * [fontWeight]: the typeface thickness to use when calculating the strut (e.g., bold).\n Default is [FontWeight.w400].\n\n * [fontStyle]: the typeface variant to use when calculating the strut (e.g., italic).\n Default is [FontStyle.normal].\n\n * [forceStrutHeight]: when true, all lines will be laid out with the height of the\n strut. All line and run-specific metrics will be ignored/overridden and only strut\n metrics will be used instead. This property guarantees uniform line spacing, however\n text in adjacent lines may overlap. This property should be enabled with caution as\n it bypasses a large portion of the vertical layout system.\n The default value is false.\n\n### Examples\n\nIn this simple case, the text will be rendered at font size 10, however, the vertical\nheight of each line will be the strut height (Roboto in font size 30 * 1.5) as the text\nitself is shorter than the strut.\n\n```dart\nconst Text(\n 'Hello, world!\\nSecond line!',\n style: TextStyle(\n fontSize: 10,\n fontFamily: 'Raleway',\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 30,\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to absorb the additional line height in the second line.\nThe strut [height] was defined as 1.5 (the default font size is 14), which\ncaused all lines to be laid out taller than without strut. This extra space\nwas able to accommodate the larger font size of `Second line!` without\ncausing the line height to change for the second line only. All lines in\nthis example are thus the same height (`14 * 1.5`).\n\n```dart\nconst Text.rich(\n TextSpan(\n text: 'First line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'Second line!\\n',\n style: TextStyle(\n fontSize: 16,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'Third line!\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n height: 1.5,\n ),\n),\n```\n\nHere, strut is used to enable strange and overlapping text to achieve unique\neffects. The `M`s in lines 2 and 3 are able to extend above their lines and\nfill empty space in lines above. The [forceStrutHeight] is enabled and functions\nas a 'grid' for the glyphs to draw on.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example.png)\n\n```dart\nconst Text.rich(\n TextSpan(\n text: '--------- ---------\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Roboto',\n ),\n children: <TextSpan>[\n TextSpan(\n text: '^^^M^^^\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n TextSpan(\n text: 'M------M\\n',\n style: TextStyle(\n fontSize: 30,\n fontFamily: 'Roboto',\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Roboto',\n fontSize: 14,\n height: 1,\n forceStrutHeight: true,\n ),\n),\n```\n\nThis example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'.\nBy locking the line heights to the metrics of the 14pt serif font, we are able\nto lay out a large 37pt 'T' on the second line to take up space on both the first\nand second lines.\n\n![The result of the example below.](https://flutter.github.io/assets-for-api-docs/assets/painting/strut_force_example_2.png)\n\n```dart\nText.rich(\n TextSpan(\n text: '  he candle flickered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n children: <TextSpan>[\n TextSpan(\n text: 'T',\n style: TextStyle(\n fontSize: 37,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'in the moonlight as\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'Dash the bird fluttered\\n',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n TextSpan(\n text: 'off into the distance.',\n style: TextStyle(\n fontSize: 14,\n fontFamily: 'Serif'\n ),\n ),\n ],\n ),\n strutStyle: StrutStyle(\n fontFamily: 'Serif',\n fontSize: 14,\n forceStrutHeight: true,\n ),\n),\n```\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSpan", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable span of text.\n\nA [TextSpan] object can be styled using its [style] property.\nThe style will be applied to the [text] and the [children].\n\nA [TextSpan] object can just have plain text, or it can have\nchildren [TextSpan] objects with their own styles that (possibly\nonly partially) override the [style] of this object. If a\n[TextSpan] has both [text] and [children], then the [text] is\ntreated as if it was an unstyled [TextSpan] at the start of the\n[children] list.\n\nTo paint a [TextSpan] on a [Canvas], use a [TextPainter]. To display a text\nspan in a widget, use a [RichText]. For text with a single style, consider\nusing the [Text] widget.\n\n\nThe text \"Hello world!\", in black:\n\n```dart\nTextSpan(\n text: 'Hello world!',\n style: TextStyle(color: Colors.black),\n)\n```\n\n_There is some more detailed sample code in the documentation for the\n[recognizer] property._\n\nSee also:\n\n * [Text], a widget for showing uniformly-styled text.\n * [RichText], a widget for finer control of text rendering.\n * [TextPainter], a class for painting [TextSpan] objects on a [Canvas].", "detail": "", "kind": 7, "label": "TextSpan" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a linear array along the main\naxis.\n\nEach child is forced to have the [SliverConstraints.crossAxisExtent] in the\ncross axis but determines its own main axis extent.\n\n[RenderSliverList] determines its scroll offset by \"dead reckoning\" because\nchildren outside the visible part of the sliver are not materialized, which\nmeans [RenderSliverList] cannot learn their main axis extent. Instead, newly\nmaterialized children are placed adjacent to existing children. If this dead\nreckoning results in a logical inconsistency (e.g., attempting to place the\nzeroth child at a scroll offset other than zero), the [RenderSliverList]\ngenerates a [SliverGeometry.scrollOffsetCorrection] to restore consistency.\n\nIf the children have a fixed extent in the main axis, consider using\n[RenderSliverFixedExtentList] rather than [RenderSliverList] because\n[RenderSliverFixedExtentList] does not need to perform layout on its\nchildren to obtain their extent in the main axis and is therefore more\nefficient.\n\nSee also:\n\n * [RenderSliverFixedExtentList], which is more efficient for children with\n the same extent in the main axis.\n * [RenderSliverGrid], which places its children in arbitrary positions.", "detail": "", "kind": 7, "label": "RenderSliverList" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InformationCollector", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [FlutterErrorDetails.informationCollector] callback\nand other callbacks that collect information into a string buffer.", "detail": "(StringBuffer information) → void", "kind": 7, "label": "InformationCollector" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsSortKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Base class for all sort keys for [Semantics] accessibility traversal order\nsorting.\n\nOnly keys of the same type and having matching [name]s are compared. If a\nlist of sibling [SemanticsNode]s contains keys that are not comparable with\neach other the list is first sorted using the default sorting algorithm.\nThen the nodes are broken down into groups by moving comparable nodes\ntowards the _earliest_ node in the group. Finally each group is sorted by\nsort key and the resulting list is made by concatenating the sorted groups\nback.\n\nFor example, let's take nodes (C, D, B, E, A, F). Let's assign node A key 1,\nnode B key 2, node C key 3. Let's also assume that the default sort order\nleaves the original list intact. Because nodes A, B, and C, have comparable\nsort key, they will form a group by pulling all nodes towards the earliest\nnode, which is C. The result is group (C, B, A). The remaining nodes D, E,\nF, form a second group with sort key being `null`. The first group is sorted\nusing their sort keys becoming (A, B, C). The second group is left as is\nbecause it does not specify sort keys. Then we concatenate the two groups -\n(A, B, C) and (D, E, F) - into the final (A, B, C, D, E, F).\n\nBecause of the complexity introduced by incomparable sort keys among sibling\nnodes, it is recommended to either use comparable keys for all nodes, or\nuse null for all of them, leaving the sort order to the default algorithm.\n\nSee Also:\n\n * [OrdinalSortKey] for a sort key that sorts using an ordinal.", "detail": "", "kind": 7, "label": "SemanticsSortKey" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderEditable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Displays some text in a scrollable container with a potentially blinking\ncursor and with gesture recognizers.\n\nThis is the renderer for an editable text field. It does not directly\nprovide affordances for editing the text, but it does handle text selection\nand manipulation of the text cursor.\n\nThe [text] is displayed, scrolled by the given [offset], aligned according\nto [textAlign]. The [maxLines] property controls whether the text displays\non one line or many. The [selection], if it is not collapsed, is painted in\nthe [selectionColor]. If it _is_ collapsed, then it represents the cursor\nposition. The cursor is shown while [showCursor] is true. It is painted in\nthe [cursorColor].\n\nIf, when the render object paints, the caret is found to have changed\nlocation, [onCaretChanged] is called.\n\nThe user may interact with the render object by tapping or long-pressing.\nWhen the user does so, the selection is updated, and [onSelectionChanged] is\ncalled.\n\nKeyboard handling, IME handling, scrolling, toggling the [showCursor] value\nto actually blink the cursor, and other features not mentioned above are the\nresponsibility of higher layers and not handled by this object.", "detail": "", "kind": 7, "label": "RenderEditable" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderProxyBoxWithHitTestBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A RenderProxyBox subclass that allows you to customize the\nhit-testing behavior.", "detail": "", "kind": 7, "label": "RenderProxyBoxWithHitTestBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageCache", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Class for the [imageCache] object.\n\nImplements a least-recently-used cache of up to 1000 images, and up to 100\nMB. The maximum size can be adjusted using [maximumSize] and\n[maximumSizeBytes]. Images that are actively in use (i.e. to which the\napplication is holding references, either via [ImageStream] objects,\n[ImageStreamCompleter] objects, [ImageInfo] objects, or raw [dart:ui.Image]\nobjects) may get evicted from the cache (and thus need to be refetched from\nthe network if they are referenced in the [putIfAbsent] method), but the raw\nbits are kept in memory for as long as the application is using them.\n\nThe [putIfAbsent] method is the main entry-point to the cache API. It\nreturns the previously cached [ImageStreamCompleter] for the given key, if\navailable; if not, it calls the given callback to obtain it first. In either\ncase, the key is moved to the \"most recently used\" position.\n\nGenerally this class is not used directly. The [ImageProvider] class and its\nsubclasses automatically handle the caching of images.", "detail": "", "kind": 7, "label": "ImageCache" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An immutable description of how to paint a box.\n\nThe [BoxDecoration] class provides a variety of ways to draw a box.\n\nThe box has a [border], a body, and may cast a [boxShadow].\n\nThe [shape] of the box can be a circle or a rectangle. If it is a rectangle,\nthen the [borderRadius] property controls the roundness of the corners.\n\nThe body of the box is painted in layers. The bottom-most layer is the\n[color], which fills the box. Above that is the [gradient], which also fills\nthe box. Finally there is the [image], the precise alignment of which is\ncontrolled by the [DecorationImage] class.\n\nThe [border] paints over the body; the [boxShadow], naturally, paints below it.\n\n\nThe following example uses the [Container] widget from the widgets layer to\ndraw an image with a border:\n\n```dart\nContainer(\n decoration: BoxDecoration(\n color: const Color(0xff7c94b6),\n image: DecorationImage(\n image: ExactAssetImage('images/flowers.jpeg'),\n fit: BoxFit.cover,\n ),\n border: Border.all(\n color: Colors.black,\n width: 8.0,\n ),\n ),\n)\n```\n\nThe [shape] or the [borderRadius] won't clip the children of the\ndecorated [Container]. If the clip is required, insert a clip widget\n(e.g., [ClipRect], [ClipRRect], [ClipPath]) as the child of the [Container].\nBe aware that clipping may be costly in terms of performance.\n\nSee also:\n\n * [DecoratedBox] and [Container], widgets that can be configured with\n [BoxDecoration] objects.\n * [CustomPaint], a widget that lets you draw arbitrary graphics.\n * [Decoration], the base class which lets you define other decorations.", "detail": "", "kind": 7, "label": "BoxDecoration" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderMetaData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Holds opaque meta data in the render tree.\n\nUseful for decorating the render tree with information that will be consumed\nlater. For example, you could store information in the render tree that will\nbe used when the user interacts with the render tree but has no visual\nimpact prior to the interaction.", "detail": "", "kind": 7, "label": "RenderMetaData" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PictureLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A composited layer containing a [Picture].\n\nPicture layers are always leaves in the layer tree.", "detail": "", "kind": 7, "label": "PictureLayer" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MemoryImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Decodes the given [Uint8List] buffer as an image, associating it with the\ngiven scale.\n\nThe provided [bytes] buffer should not be changed after it is provided\nto a [MemoryImage]. To provide an [ImageStream] that represents an image\nthat changes over time, consider creating a new subclass of [ImageProvider]\nwhose [load] method returns a subclass of [ImageStreamCompleter] that can\nhandle providing multiple images.\n\nSee also:\n\n * [Image.memory] for a shorthand of an [Image] widget backed by [MemoryImage].", "detail": "", "kind": 7, "label": "MemoryImage" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RenderSliverGrid", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sliver that places multiple box children in a two dimensional arrangement.\n\n[RenderSliverGrid] places its children in arbitrary positions determined by\n[gridDelegate]. Each child is forced to have the size specified by the\n[gridDelegate].\n\nSee also:\n\n * [RenderSliverList], which places its children in a linear\n array.\n * [RenderSliverFixedExtentList], which places its children in a linear\n array with a fixed extent in the main axis.", "detail": "", "kind": 7, "label": "RenderSliverGrid" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "package:flutter/rendering.dart", "libraryId": 71, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LayoutCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for a function that is called during layout.\n\nUsed by [RenderObject.invokeLayoutCallback].", "detail": "(T constraints) → void", "kind": 7, "label": "LayoutCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the callback passed to the [Ticker] class's constructor.\n\nThe argument is the time that the object had spent enabled so far\nat the time of the callback being called.", "detail": "(Duration elapsed) → void", "kind": 7, "label": "TickerCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SchedulingStrategy", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for the [SchedulerBinding.schedulingStrategy] callback. Called\nwhenever the system needs to decide whether a task at a given\npriority needs to be run.\n\nReturn true if a task with the given priority should be executed\nat this time, false otherwise.\n\nSee also [defaultSchedulingStrategy].", "detail": "({int priority, SchedulerBinding scheduler}) → bool", "kind": 7, "label": "SchedulingStrategy" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrameCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for frame-related callbacks from the scheduler.\n\nThe `timeStamp` is the number of milliseconds since the beginning of the\nscheduler's epoch. Use timeStamp to determine how far to advance animation\ntimelines so that all the animations in the system are synchronized to a\ncommon time base.", "detail": "(Duration timeStamp) → void", "kind": 7, "label": "FrameCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerProvider", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface implemented by classes that can vend [Ticker] objects.\n\nTickers can be used by any object that wants to be notified whenever a frame\ntriggers, but are most commonly used indirectly via an\n[AnimationController]. [AnimationController]s need a [TickerProvider] to\nobtain their [Ticker]. If you are creating an [AnimationController] from a\n[State], then you can use the [TickerProviderStateMixin] and\n[SingleTickerProviderStateMixin] classes to obtain a suitable\n[TickerProvider]. The widget test framework [WidgetTester] object can be\nused as a ticker provider in the context of tests. In other contexts, you\nwill have to either pass a [TickerProvider] from a higher level (e.g.\nindirectly from a [State] that mixes in [TickerProviderStateMixin]), or\ncreate a custom [TickerProvider] subclass.", "detail": "", "kind": 7, "label": "TickerProvider" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SchedulerBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Scheduler for running the following:\n\n* _Transient callbacks_, triggered by the system's [Window.onBeginFrame]\n callback, for synchronizing the application's behavior to the system's\n display. For example, [Ticker]s and [AnimationController]s trigger from\n these.\n\n* _Persistent callbacks_, triggered by the system's [Window.onDrawFrame]\n callback, for updating the system's display after transient callbacks have\n executed. For example, the rendering layer uses this to drive its\n rendering pipeline.\n\n* _Post-frame callbacks_, which are run after persistent callbacks, just\n before returning from the [Window.onDrawFrame] callback.\n\n* Non-rendering tasks, to be run between frames. These are given a\n priority and are executed in priority order according to a\n [schedulingStrategy].", "detail": "", "kind": 7, "label": "SchedulerBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TaskCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for [Scheduler.scheduleTask] callbacks.\n\nThe type argument `T` is the task's return value. Consider [void] if the\ntask does not return a value.", "detail": "() → T", "kind": 7, "label": "TaskCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Ticker", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Calls its callback once per animation frame.\n\nWhen created, a ticker is initially disabled. Call [start] to\nenable the ticker.\n\nA [Ticker] can be silenced by setting [muted] to true. While silenced, time\nstill elapses, and [start] and [stop] can still be called, but no callbacks\nare called.\n\nBy convention, the [start] and [stop] methods are used by the ticker's\nconsumer, and the [muted] property is controlled by the [TickerProvider]\nthat created the ticker.\n\nTickers are driven by the [SchedulerBinding]. See\n[SchedulerBinding.scheduleFrameCallback].", "detail": "", "kind": 7, "label": "Ticker" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SchedulerPhase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The various phases that a [SchedulerBinding] goes through during\n[SchedulerBinding.handleBeginFrame].\n\nThis is exposed by [SchedulerBinding.schedulerPhase].\n\nThe values of this enum are ordered in the same order as the phases occur,\nso their relative index values can be compared to each other.\n\nSee also the discussion at [WidgetsBinding.drawFrame].", "detail": "", "kind": 13, "label": "SchedulerPhase" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Priority", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A task priority, as passed to [SchedulerBinding.scheduleTask].", "detail": "", "kind": 7, "label": "Priority" }, { "data": { "autoImportDisplayUri": "package:flutter/scheduler.dart", "libraryId": 295, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animatable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object that can produce a value of type `T` given an [Animation<double>]\nas input.\n\nTypically, the values of the input animation are nominally in the range 0.0\nto 1.0. In principle, however, any value could be provided.\n\nThe main subclass of [Animatable] is [Tween].", "detail": "", "kind": 7, "label": "Animatable" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A controller for an animation.\n\nThis class lets you perform tasks such as:\n\n* Play an animation [forward] or in [reverse], or [stop] an animation.\n* Set the animation to a specific [value].\n* Define the [upperBound] and [lowerBound] values of an animation.\n* Create a [fling] animation effect using a physics simulation.\n\nBy default, an [AnimationController] linearly produces values that range\nfrom 0.0 to 1.0, during a given duration. The animation controller generates\na new value whenever the device running your app is ready to display a new\nframe (typically, this rate is around 60 values per second).\n\n## Ticker providers\n\nAn [AnimationController] needs a [TickerProvider], which is configured using\nthe `vsync` argument on the constructor.\n\nThe [TickerProvider] interface describes a factory for [Ticker] objects. A\n[Ticker] is an object that knows how to register itself with the\n[SchedulerBinding] and fires a callback every frame. The\n[AnimationController] class uses a [Ticker] to step through the animation\nthat it controls.\n\nIf an [AnimationController] is being created from a [State], then the State\ncan use the [TickerProviderStateMixin] and [SingleTickerProviderStateMixin]\nclasses to implement the [TickerProvider] interface. The\n[TickerProviderStateMixin] class always works for this purpose; the\n[SingleTickerProviderStateMixin] is slightly more efficient in the case of\nthe class only ever needing one [Ticker] (e.g. if the class creates only a\nsingle [AnimationController] during its entire lifetime).\n\nThe widget test framework [WidgetTester] object can be used as a ticker\nprovider in the context of tests. In other contexts, you will have to either\npass a [TickerProvider] from a higher level (e.g. indirectly from a [State]\nthat mixes in [TickerProviderStateMixin]), or create a custom\n[TickerProvider] subclass.\n\n## Life cycle\n\nAn [AnimationController] should be [dispose]d when it is no longer needed.\nThis reduces the likelihood of leaks. When used with a [StatefulWidget], it\nis common for an [AnimationController] to be created in the\n[State.initState] method and then disposed in the [State.dispose] method.\n\n## Using [Future]s with [AnimationController]\n\nThe methods that start animations return a [TickerFuture] object which\ncompletes when the animation completes successfully, and never throws an\nerror; if the animation is canceled, the future never completes. This object\nalso has a [TickerFuture.orCancel] property which returns a future that\ncompletes when the animation completes successfully, and completes with an\nerror when the animation is aborted.\n\nThis can be used to write code such as the `fadeOutAndUpdateState` method\nbelow.\n\n\nHere is a stateful [Foo] widget. Its [State] uses the\n[SingleTickerProviderStateMixin] to implement the necessary\n[TickerProvider], creating its controller in the [initState] method and\ndisposing of it in the [dispose] method. The duration of the controller is\nconfigured from a property in the [Foo] widget; as that changes, the\n[didUpdateWidget] method is used to update the controller.\n\n```dart\nclass Foo extends StatefulWidget {\n Foo({ Key key, this.duration }) : super(key: key);\n\n final Duration duration;\n\n @override\n _FooState createState() => _FooState();\n}\n\nclass _FooState extends State<Foo> with SingleTickerProviderStateMixin {\n AnimationController _controller;\n\n @override\n void initState() {\n super.initState();\n _controller = AnimationController(\n vsync: this, // the SingleTickerProviderStateMixin\n duration: widget.duration,\n );\n }\n\n @override\n void didUpdateWidget(Foo oldWidget) {\n super.didUpdateWidget(oldWidget);\n _controller.duration = widget.duration;\n }\n\n @override\n void dispose() {\n _controller.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context) {\n return Container(); // ...\n }\n}\n```\n\nThe following method (for a [State] subclass) drives two animation\ncontrollers using Dart's asynchronous syntax for awaiting [Future] objects:\n\n```dart\nFuture<void> fadeOutAndUpdateState() async {\n try {\n await fadeAnimationController.forward().orCancel;\n await sizeAnimationController.forward().orCancel;\n setState(() {\n dismissed = true;\n });\n } on TickerCanceled {\n // the animation got canceled, probably because we were disposed\n }\n}\n```\n\nThe assumption in the code above is that the animation controllers are being\ndisposed in the [State] subclass' override of the [State.dispose] method.\nSince disposing the controller cancels the animation (raising a\n[TickerCanceled] exception), the code here can skip verifying whether\n[State.mounted] is still true at each step. (Again, this assumes that the\ncontrollers are created in [State.initState] and disposed in\n[State.dispose], as described in the previous section.)\n\nSee also:\n\n * [Tween], the base class for converting an [AnimationController] to a\n range of values of other types.", "detail": "", "kind": 7, "label": "AnimationController" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticIn].\n", "detail": "", "kind": 7, "label": "ElasticInCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cubic", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A cubic polynomial mapping of the unit interval.\n\nThe [Curves] class contains some commonly used cubic curves:\n\n * [Curves.ease]\n * [Curves.easeIn]\n * [Curves.easeOut]\n * [Curves.easeInOut]\n\n\nThe [Cubic] class implements third-order Bézier curves.", "detail": "", "kind": 7, "label": "Cubic" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationBehavior", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Configures how an [AnimationController] behaves when animations are disabled.\n\nWhen [AccessibilityFeatures.disableAnimations] is true, the device is asking\nFlutter to reduce or disable animations as much as possible. To honor this,\nwe reduce the duration and the corresponding number of frames for animations.\nThis enum is used to allow certain [AnimationController]s to opt out of this\nbehavior.\n\nFor example, the [AnimationController] which controls the physics simulation\nfor a scrollable list will have [AnimationBehavior.preserve] so that when\na user attempts to scroll it does not jump to the end/beginning too quickly.", "detail": "", "kind": 13, "label": "AnimationBehavior" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A [Tween] that evaluates its [parent] in reverse.", "detail": "", "kind": 7, "label": "ReverseTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RectTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two rectangles.\n\nThis class specializes the interpolation of [Tween<Rect>] to use\n[Rect.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "RectTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curves", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A collection of common animation curves.\n\n\nSee also:\n\n * [Curve], the interface implemented by the constants available from the\n [Curves] class.", "detail": "", "kind": 7, "label": "Curves" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SizeTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two sizes.\n\nThis class specializes the interpolation of [Tween<Size>] to use\n[Size.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "SizeTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A linear interpolation between a beginning and ending value.\n\n[Tween] is useful if you want to interpolate across a range.\n\nTo use a [Tween] object with an animation, call the [Tween] object's\n[animate] method and pass it the [Animation] object that you want to\nmodify.\n\nYou can chain [Tween] objects together using the [chain] method, so that a\nsingle [Animation] object is configured by multiple [Tween] objects called\nin succession. This is different than calling the [animate] method twice,\nwhich results in two separate [Animation] objects, each configured with a\nsingle [Tween].\n\n\nSuppose `_controller` is an [AnimationController], and we want to create an\n[Animation<Offset>] that is controlled by that controller, and save it in\n`_animation`. Here are two possible ways of expressing this:\n\n```dart\n_animation = _controller.drive(\n Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n ),\n);\n```\n\n```dart\n_animation = Tween<Offset>(\n begin: const Offset(100.0, 50.0),\n end: const Offset(200.0, 300.0),\n).animate(_controller);\n```\n\nIn both cases, the `_animation` variable holds an object that, over the\nlifetime of the `_controller`'s animation, returns a value\n(`_animation.value`) that depicts a point along the line between the two\noffsets above. If we used a [MaterialPointArcTween] instead of a\n[Tween<Offset>] in the code above, the points would follow a pleasing curve\ninstead of a straight line, with no other changes necessary.\n\n## Performance optimizations\n\nTweens are mutable; specifically, their [begin] and [end] values can be\nchanged at runtime. An object created with [Animation.drive] using a [Tween]\nwill immediately honor changes to that underlying [Tween] (though the\nlisteners will only be triggered if the [Animation] is actively animating).\nThis can be used to change an animation on the fly without having to\nrecreate all the objects in the chain from the [AnimationController] to the\nfinal [Tween].\n\nIf a [Tween]'s values are never changed, however, a further optimization can\nbe applied: the object can be stored in a `static final` variable, so that\nthe exact same instance is used whenever the [Tween] is needed. This is\npreferable to creating an identical [Tween] afresh each time a [State.build]\nmethod is called, for example.\n\n## Types with special considerations\n\nClasses with [lerp] static methods typically have corresponding dedicated\n[Tween] subclasses that call that method. For example, [ColorTween] uses\n[Color.lerp] to implement the [ColorTween.lerp] method.\n\nTypes that define `+` and `-` operators to combine values (`T + T → T` and\n`T - T → T`) and an `*` operator to scale by multiplying with a double (`T *\ndouble → T`) can be directly used with `Tween<T>`.\n\nThis does not extend to any type with `+`, `-`, and `*` operators. In\nparticular, [int] does not satisfy this precise contract (`int * double`\nactually returns [num], not [int]). There are therefore two specific classes\nthat can be used to interpolate integers:\n\n * [IntTween], which is an approximation of a linear interpolation (using\n [double.round]).\n * [StepTween], which uses [double.floor] to ensure that the result is\n never greater than it would be using if a `Tween<double>`.\n\nThe relevant operators on [Size] also don't fulfill this contract, so\n[SizeTween] uses [Size.lerp].\n\nIn addition, some of the types that _do_ have suitable `+`, `-`, and `*`\noperators still have dedicated [Tween] subclasses that perform the\ninterpolation in a more specialized manner. One such class is\n[MaterialPointArcTween], which is mentioned above. The [AlignmentTween], and\n[AlignmentGeometryTween], and [FractionalOffsetTween] are another group of\n[Tween]s that use dedicated `lerp` methods instead of merely relying on the\noperators (in particular, this allows them to handle null values in a more\nuseful manner).", "detail": "", "kind": 7, "label": "Tween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerFuture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An object representing an ongoing [Ticker] sequence.\n\nThe [Ticker.start] method returns a [TickerFuture]. The [TickerFuture] will\ncomplete successfully if the [Ticker] is stopped using [Ticker.stop] with\nthe `canceled` argument set to false (the default).\n\nIf the [Ticker] is disposed without being stopped, or if it is stopped with\n`canceled` set to true, then this Future will never complete.\n\nThis class works like a normal [Future], but has an additional property,\n[orCancel], which returns a derivative [Future] that completes with an error\nif the [Ticker] that returned the [TickerFuture] was stopped with `canceled`\nset to true, or if it was disposed without being stopped.\n\nTo run a callback when either this future resolves or when the ticker is\ncanceled, use [whenCompleteOrCancel].", "detail": "", "kind": 7, "label": "TickerFuture" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurvedAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that applies a curve to another animation.\n\n[CurvedAnimation] is useful when you want to apply a non-linear [Curve] to\nan animation object, especially if you want different curves when the\nanimation is going forward vs when it is going backward.\n\nDepending on the given curve, the output of the [CurvedAnimation] could have\na wider range than its input. For example, elastic curves such as\n[Curves.elasticIn] will significantly overshoot or undershoot the default\nrange of 0.0 to 1.0.\n\nIf you want to apply a [Curve] to a [Tween], consider using [CurveTween].\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`.\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.ease,\n);\n```\n\nThis second code snippet shows how to apply a different curve in the forward\ndirection than in the reverse direction. This can't be done using a\n[CurveTween] (since [Tween]s are not aware of the animation direction when\nthey are applied).\n\n```dart\nfinal Animation<double> animation = CurvedAnimation(\n parent: controller,\n curve: Curves.easeIn,\n reverseCurve: Curves.easeOut,\n);\n```\n\nBy default, the [reverseCurve] matches the forward [curve].\n\nSee also:\n\n * [CurveTween], for an alternative way of expressing the first sample\n above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].\n * [Curve.flipped] and [FlippedCurve], which provide the reverse of a\n [Curve].", "detail": "", "kind": 7, "label": "CurvedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalListenersMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the [addListener]/[removeListener] protocol and notifies\nall the registered listeners when [notifyListeners] is called.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Animation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation with a value of type `T`.\n\nAn animation consists of a value (of type `T`) together with a status. The\nstatus indicates whether the animation is conceptually running from\nbeginning to end or from the end back to the beginning, although the actual\nvalue of the animation might not change monotonically (e.g., if the\nanimation uses a curve that bounces).\n\nAnimations also let other objects listen for changes to either their value\nor their status. These callbacks are called during the \"animation\" phase of\nthe pipeline, just prior to rebuilding widgets.\n\nTo create a new animation that you can run forward and backward, consider\nusing [AnimationController].\n\nSee also:\n\n * [Tween], which can be used to create [Animation] subclasses that\n convert `Animation<double>`s into other kinds of `Animation`s.", "detail": "", "kind": 7, "label": "Animation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that rounds.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then rounding the result to the nearest\ninteger.\n\nThis is the closest approximation to a linear tween that is possible with an\ninteger. Compare to [StepTween] and [Tween<double>].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "IntTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatus", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "The status of an animation", "detail": "", "kind": 13, "label": "AnimationStatus" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the minimum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SawTooth", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A sawtooth curve that repeats a given number of times over the unit interval.\n\nThe curve rises linearly from 0.0 to 1.0 and then falls discontinuously back\nto 0.0 each iteration.\n", "detail": "", "kind": 7, "label": "SawTooth" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Curve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An easing curve, i.e. a mapping of the unit interval to the unit interval.\n\nEasing curves are used to adjust the rate of change of an animation over\ntime, allowing them to speed up and slow down, rather than moving at a\nconstant rate.\n\nA curve must map t=0.0 to 0.0 and t=1.0 to 1.0.\n\nSee also:\n\n * [Curves], a collection of common animation easing curves.\n * [CurveTween], which can be used to apply a [Curve] to an [Animation].\n * [Canvas.drawArc], which draws an arc, and has nothing to do with easing\n curves.\n * [Animatable], for a more flexible interface that maps fractions to\n arbitrary values.", "detail": "", "kind": 7, "label": "Curve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMean", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation of [double]s that tracks the mean of two other animations.\n\nThe [status] of this animation is the status of the `right` animation if it is\nmoving, and the `left` animation otherwise.\n\nThe [value] of this animation is the [double] that represents the mean value\nof the values of the `left` and `right` animations.", "detail": "", "kind": 7, "label": "AnimationMean" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProxyAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is a proxy for another animation.\n\nA proxy animation is useful because the parent animation can be mutated. For\nexample, one object can create a proxy animation, hand the proxy to another\nobject, and then later change the animation from which the proxy receives\nits value.", "detail": "", "kind": 7, "label": "ProxyAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticOutCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that shrinks in magnitude while overshooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticOut].\n", "detail": "", "kind": 7, "label": "ElasticOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompoundAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interface for combining multiple Animations. Subclasses need only\nimplement the `value` getter to control how the child animations are\ncombined. Can be chained to combine more than 2 animations.\n\nFor example, to create an animation that is the sum of two others, subclass\nthis class and define `T get value = first.value + second.value;`\n\nBy default, the [status] of a [CompoundAnimation] is the status of the\n[next] animation if [next] is moving, and the status of the [first]\nanimation otherwise.", "detail": "", "kind": 7, "label": "CompoundAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StepTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two integers that floors.\n\nThis class specializes the interpolation of [Tween<int>] to be\nappropriate for integers by interpolating between the given begin\nand end values and then using [double.floor] to return the current\ninteger component, dropping the fractional component.\n\nThis results in a value that is never greater than the equivalent\nvalue from a linear double interpolation. Compare to [IntTween].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "StepTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEagerListenerMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that replaces the [didRegisterListener]/[didUnregisterListener] contract\nwith a dispose contract.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationEagerListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Threshold", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until it hits the threshold, then it jumps to 1.0.\n", "detail": "", "kind": 7, "label": "Threshold" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TrainHoppingAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "This animation starts by proxying one animation, but when the value of that\nanimation crosses the value of the second (either because the second is\ngoing in the opposite direction, or because the one overtakes the other),\nthe animation hops over to proxying the second animation.\n\nWhen the [TrainHoppingAnimation] starts proxying the second animation\ninstead of the first, the [onSwitchedTrain] callback is called.\n\nIf the two animations start at the same value, then the\n[TrainHoppingAnimation] immediately hops to the second animation, and the\n[onSwitchedTrain] callback is not called. If only one animation is provided\n(i.e. if the second is null), then the [TrainHoppingAnimation] just proxies\nthe first animation.\n\nSince this object must track the two animations even when it has no\nlisteners of its own, instead of shutting down when all its listeners are\nremoved, it exposes a [dispose()] method. Call this method to shut this\nobject down.", "detail": "", "kind": 7, "label": "TrainHoppingAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationWithParentMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Implements most of the [Animation] interface by deferring its behavior to a\ngiven [parent] Animation.\n\nTo implement an [Animation] that is driven by a parent, it is only necessary\nto mix in this class, implement [parent], and implement `T get value`.\n\nTo define a mapping from values in the range 0..1, consider subclassing\n[Tween] instead.", "detail": "", "kind": 7, "label": "AnimationWithParentMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Interval", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is 0.0 until [begin], then curved (according to [curve]) from\n0.0 at [begin] to 1.0 at [end], then remains 1.0 past [end].\n\nAn [Interval] can be used to delay an animation. For example, a six second\nanimation that uses an [Interval] with its [begin] set to 0.5 and its [end]\nset to 1.0 will essentially become a three-second animation that starts\nthree seconds later.\n", "detail": "", "kind": 7, "label": "Interval" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationStatusListener", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Signature for listeners attached using [Animation.addStatusListener].", "detail": "(AnimationStatus status) → void", "kind": 7, "label": "AnimationStatusListener" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequence", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Enables creating an [Animation] whose value is defined by a sequence of\n[Tween]s.\n\nEach [TweenSequenceItem] has a weight that defines its percentage of the\nanimation's duration. Each tween defines the animation's value during the\ninterval indicated by its weight.\n\nFor example, to define an animation that uses an easing curve to interpolate\nbetween 5.0 and 10.0 during the first 40% of the animation, remain at 10.0\nfor the next 20%, and then return to 10.0 for the final 40%:\n\n```dart\nfinal Animation<double> animation = TweenSequence(\n <TweenSequenceItem<double>>[\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 5.0, end: 10.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n TweenSequenceItem<double>(\n tween: ConstantTween<double>(10.0),\n weight: 20.0,\n ),\n TweenSequenceItem<double>(\n tween: Tween<double>(begin: 10.0, end: 5.0)\n .chain(CurveTween(curve: Curves.ease)),\n weight: 40.0,\n ),\n ],\n).animate(myAnimationController);\n```", "detail": "", "kind": 7, "label": "TweenSequence" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlippedCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A curve that is the reversed inversion of its given curve.\n\nThis curve evaluates the given curve in reverse (i.e., from 1.0 to 0.0 as t\nincreases from 0.0 to 1.0) and returns the inverse of the given curve's\nvalue (i.e., 1.0 minus the given curve's value).\n\nThis is the class used to implement the [flipped] getter on curves.\n\nThis is often useful with [CurvedAnimation.reverseCurve].\n\n\nSee also:\n\n * [Curve.flipped], which provides the [FlippedCurve] of a [Curve].\n * [ReverseAnimation], which reverses an [Animation] rather than a [Curve].\n * [CurvedAnimation], which can take a separate curve and reverse curve.", "detail": "", "kind": 7, "label": "FlippedCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConstantTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A tween with a constant value.", "detail": "", "kind": 7, "label": "ConstantTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AlwaysStoppedAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is always stopped at a given value.\n\nThe [status] is always [AnimationStatus.forward].", "detail": "", "kind": 7, "label": "AlwaysStoppedAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationMax", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that tracks the maximum of two other animations.\n\nThe [value] of this animation is the maximum of the values of\n[first] and [next].", "detail": "", "kind": 7, "label": "AnimationMax" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CurveTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Transforms the value of the given animation by the given curve.\n\nThis class differs from [CurvedAnimation] in that [CurvedAnimation] applies\na curve to an existing [Animation] object whereas [CurveTween] can be\nchained with another [Tween] prior to receiving the underlying [Animation].\n([CurvedAnimation] also has the additional ability of having different\ncurves when the animation is going forward vs when it is going backward,\nwhich can be useful in some scenarios.)\n\n\nThe following code snippet shows how you can apply a curve to a linear\nanimation produced by an [AnimationController] `controller`:\n\n```dart\nfinal Animation<double> animation = _controller.drive(\n CurveTween(curve: Curves.ease),\n);\n```\n\nSee also:\n\n * [CurvedAnimation], for an alternative way of expressing the sample above.\n * [AnimationController], for examples of creating and disposing of an\n [AnimationController].", "detail": "", "kind": 7, "label": "CurveTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLazyListenerMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that helps listen to another object only when this object has registered listeners.\n\nThis mixin provides implementations of [didRegisterListener] and [didUnregisterListener],\nand therefore can be used in conjunction with mixins that require these methods,\n[AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].", "detail": "", "kind": 7, "label": "AnimationLazyListenerMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationLocalStatusListenersMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mixin that implements the addStatusListener/removeStatusListener protocol\nand notifies all the registered listeners when notifyStatusListeners is\ncalled.\n\nThis mixin requires that the mixing class provide methods [didRegisterListener]\nand [didUnregisterListener]. Implementations of these methods can be obtained\nby mixing in another mixin from this library, such as [AnimationLazyListenerMixin].", "detail": "", "kind": 7, "label": "AnimationLocalStatusListenersMixin" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReverseAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An animation that is the reverse of another animation.\n\nIf the parent animation is running forward from 0.0 to 1.0, this animation\nis running in reverse from 1.0 to 0.0.\n\nUsing a [ReverseAnimation] is different from simply using a [Tween] with a\nbegin of 1.0 and an end of 0.0 because the tween does not change the status\nor direction of the animation.\n\nSee also:\n\n * [Curve.flipped] and [FlippedCurve], which provide a similar effect but on\n [Curve]s.\n * [CurvedAnimation], which can take separate curves for when the animation\n is going forward than for when it is going in reverse.", "detail": "", "kind": 7, "label": "ReverseAnimation" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ElasticInOutCurve", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An oscillating curve that grows and then shrinks in magnitude while\novershooting its bounds.\n\nAn instance of this class using the default period of 0.4 is available as\n[Curves.elasticInOut].\n", "detail": "", "kind": 7, "label": "ElasticInOutCurve" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorTween", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "An interpolation between two colors.\n\nThis class specializes the interpolation of [Tween<Color>] to use\n[Color.lerp].\n\nSee [Tween] for a discussion on how to use interpolation objects.", "detail": "", "kind": 7, "label": "ColorTween" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TickerCanceled", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "Exception thrown by [Ticker] objects on the [TickerFuture.orCancel] future\nwhen the ticker is canceled.", "detail": "", "kind": 7, "label": "TickerCanceled" }, { "data": { "autoImportDisplayUri": "package:flutter/animation.dart", "libraryId": 292, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TweenSequenceItem", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A simple holder for one element of a [TweenSequence].", "detail": "", "kind": 7, "label": "TweenSequenceItem" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HapticFeedback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Allows access to the haptic feedback interface on the device.\n\nThis API is intentionally terse since it calls default platform behavior. It\nis not suitable for precise control of the system's haptic feedback module.", "detail": "", "kind": 7, "label": "HapticFeedback" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UiKitViewController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls an iOS UIView.\n\nTypically created with [PlatformViewsService.initUiKitView].", "detail": "", "kind": 7, "label": "UiKitViewController" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] with UTF-8 encoded String messages.\n\nOn Android, messages will be represented using `java.util.String`.\nOn iOS, messages will be represented using `NSString`.", "detail": "", "kind": 7, "label": "StringCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewsRegistry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A registry responsible for generating unique identifier for platform views.\n\nA Flutter application has a single [PlatformViewsRegistry] which can be accesses\nthrough the [platformViewsRegistry] getter.\n\nSee also:\n\n * [PlatformView], a widget that shows a platform view.", "detail": "", "kind": 7, "label": "PlatformViewsRegistry" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An action the user has requested the text input control to perform.\n\nEach action represents a logical meaning, and also configures the soft\nkeyboard to display a certain kind of action button. The visual appearance\nof the action button might differ between versions of the same OS.\n\nDespite the logical meaning of each action, choosing a particular\n[TextInputAction] does not necessarily cause any specific behavior to\nhappen. It is up to the developer to ensure that the behavior that occurs\nwhen an action button is pressed is appropriate for the action button chosen.\n\nFor example: If the user presses the keyboard action button on iOS when it\nreads \"Emergency Call\", the result should not be a focus change to the next\nTextField. This behavior is not logically appropriate for a button that says\n\"Emergency Call\".\n\nSee [EditableText] for more information about customizing action button\nbehavior.\n\nMost [TextInputAction]s are supported equally by both Android and iOS.\nHowever, there is not a complete, direct mapping between Android's IME input\ntypes and iOS's keyboard return types. Therefore, some [TextInputAction]s\nare inappropriate for one of the platforms. If a developer chooses an\ninappropriate [TextInputAction] when running in debug mode, an error will be\nthrown. If the same thing is done in release mode, then instead of sending\nthe inappropriate value, Android will use \"unspecified\" on the platform\nside and iOS will use \"default\" on the platform side.\n\nSee also:\n\n * [TextInput], which configures the platform's keyboard setup.\n * [EditableText], which invokes callbacks when the action button is pressed.", "detail": "", "kind": 13, "label": "TextInputAction" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MethodCall", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An command object representing the invocation of a named method.", "detail": "", "kind": 7, "label": "MethodCall" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInput", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface to the system's text input control.", "detail": "", "kind": 7, "label": "TextInput" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LogicalKeyboardKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class with static values that describe the keys that are returned from\n[RawKeyEvent.logicalKey].\n\nThese represent *logical* keys, which are keys which are interpreted in the\ncontext of any modifiers, modes, or keyboard layouts which may be in effect.\n\nThis is contrast to [PhysicalKeyboardKey], which represents a physical key\nin a particular location on the keyboard, without regard for the modifier\nstate, mode, or keyboard layout.\n\nAs an example, if you wanted to implement an app where the \"Q\" key \"quit\"\nsomething, you'd want to look at the logical key to detect this, since you\nwould like to have it match the key with \"Q\" on it, instead of always\nlooking for \"the key next next to the TAB key\", since on a French keyboard,\nthe key next to the TAB key has an \"A\" on it.\n\nConversely, if you wanted a game where the key next to the CAPS LOCK (the\n\"A\" key on a QWERTY keyboard) moved the player to the left, you'd want to\nlook at the physical key to make sure that regardless of the character the\nkey produces, you got the key that is in that location on the keyboard.\n\nThis example shows how to detect if the user has selected the logical \"Q\"\nkey.\n\n```dart\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/services.dart';\n```\n\n```dart\n// The node used to request the keyboard focus.\nfinal FocusNode _focusNode = FocusNode();\n// The message to display.\nString _message;\n\n// Focus nodes need to be disposed.\n@override\nvoid dispose() {\n _focusNode.dispose();\n super.dispose();\n}\n\n// Handles the key events from the RawKeyboardListener and update the\n// _message.\nvoid _handleKeyEvent(RawKeyEvent event) {\n setState(() {\n if (event.logicalKey == LogicalKeyboardKey.keyQ) {\n _message = 'Pressed the \"Q\" key!';\n } else {\n if (kReleaseMode) {\n _message = 'Not a Q: Key label is \"${event.logicalKey.keyLabel ?? '<none>'}\"';\n } else {\n // This will only print useful information in debug mode.\n _message = 'Not a Q: Pressed ${event.logicalKey.debugName}';\n }\n }\n });\n}\n\n@override\nWidget build(BuildContext context) {\n final TextTheme textTheme = Theme.of(context).textTheme;\n return Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: DefaultTextStyle(\n style: textTheme.display1,\n child: RawKeyboardListener(\n focusNode: _focusNode,\n onKey: _handleKeyEvent,\n child: AnimatedBuilder(\n animation: _focusNode,\n builder: (BuildContext context, Widget child) {\n if (!_focusNode.hasFocus) {\n return GestureDetector(\n onTap: () {\n FocusScope.of(context).requestFocus(_focusNode);\n },\n child: Text('Tap to focus'),\n );\n }\n return Text(_message ?? 'Press a key');\n },\n ),\n ),\n ),\n );\n}\n```\nSee also:\n\n * [RawKeyEvent], the keyboard event object received by widgets that listen\n to keyboard events.\n * [RawKeyboardListener], a widget used to listen to and supply handlers for\n keyboard events.", "detail": "", "kind": 7, "label": "LogicalKeyboardKey" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemSoundType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A sound provided by the system.", "detail": "", "kind": 13, "label": "SystemSoundType" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataLinux", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for Linux.\n\nDifferent window toolkit implementations can map to different key codes. This class\nwill use the correct mapping depending on the [toolkit] provided.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataLinux" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BinaryCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] with unencoded binary messages represented using [ByteData].\n\nOn Android, messages will be represented using `java.nio.ByteBuffer`.\nOn iOS, messages will be represented using `NSData`.\n\nWhen sending outgoing messages from Android, be sure to use direct `ByteBuffer`\nas opposed to indirect. The `wrap()` API provides indirect buffers by default\nand you will get empty `ByteData` objects in Dart.", "detail": "", "kind": 7, "label": "BinaryCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidPointerProperties", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Properties of an Android pointer.\n\nA Dart version of Android's [MotionEvent.PointerProperties](https://developer.android.com/reference/android/view/MotionEvent.PointerProperties).", "detail": "", "kind": 7, "label": "AndroidPointerProperties" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ApplicationSwitcherDescription", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a description of the application that is pertinent to the\nembedder's application switcher (also known as \"recent tasks\") user\ninterface.\n\nUsed by [SystemChrome.setApplicationSwitcherDescription].", "detail": "", "kind": 7, "label": "ApplicationSwitcherDescription" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LengthLimitingTextInputFormatter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] that prevents the insertion of more characters\n(currently defined as Unicode scalar values) than allowed.\n\nSince this formatter only prevents new characters from being added to the\ntext, it preserves the existing [TextEditingValue.selection].\n\n * [maxLength], which discusses the precise meaning of \"number of\n characters\" and how it may differ from the intuitive meaning.", "detail": "", "kind": 7, "label": "LengthLimitingTextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Base class for platform-specific key event data.\n\nThis base class exists to have a common type to use for each of the\ntarget platform's key event data structures.\n\nSee also:\n\n * [RawKeyEventDataAndroid], a specialization for Android.\n * [RawKeyEventDataFuchsia], a specialization for Fuchsia.\n * [RawKeyDownEvent] and [RawKeyUpEvent], the classes that hold the\n reference to [RawKeyEventData] subclasses.\n * [RawKeyboard], which uses these interfaces to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventData" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidViewController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls an Android view.\n\nTypically created with [PlatformViewsService.initAndroidView].", "detail": "", "kind": 7, "label": "AndroidViewController" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelectionDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for manipulating the selection, to be used by the implementor\nof the toolbar widget.", "detail": "", "kind": 7, "label": "TextSelectionDelegate" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MissingPluginException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Thrown to indicate that a platform interaction failed to find a handling\nplugin.\n\nSee also:\n\n * [MethodChannel.invokeMethod], which completes the returned future\n with a [MissingPluginException], if no plugin handler for the method call\n was found.\n * [OptionalMethodChannel.invokeMethod], which completes the returned future\n with null, if no plugin handler for the method call was found.", "detail": "", "kind": 7, "label": "MissingPluginException" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkAssetBundle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [AssetBundle] that loads resources over the network.\n\nThis asset bundle does not cache any resources, though the underlying\nnetwork stack may implement some level of caching itself.", "detail": "", "kind": 7, "label": "NetworkAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputConfiguration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls the visual appearance of the text input control.\n\nMany [TextInputAction]s are common between Android and iOS. However, if an\n[inputAction] is provided that is not supported by the current\nplatform in debug mode, an error will be thrown when the corresponding\ntext input is attached. For example, providing iOS's \"emergencyCall\"\naction when running on an Android device will result in an error when in\ndebug mode. In release mode, incompatible [TextInputAction]s are replaced\neither with \"unspecified\" on Android, or \"default\" on iOS. Appropriate\n[inputAction]s can be chosen by checking the current platform and then\nselecting the appropriate action.\n\nSee also:\n\n * [TextInput.attach]\n * [TextInputAction]", "detail": "", "kind": 7, "label": "TextInputConfiguration" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipboardData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Data stored on the system clipboard.\n\nThe system clipboard can contain data of various media types. This data\nstructure currently supports only plain text data, in the [text] property.", "detail": "", "kind": 7, "label": "ClipboardData" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyHelper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Abstract class for window-specific key mappings.\n\nGiven that there might be multiple window toolkit implementations (GLFW,\nGTK, QT, etc), this creates a common interface for each of the\ndifferent toolkits.", "detail": "", "kind": 7, "label": "KeyHelper" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewCreatedCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Callback signature for when a platform view was created.\n\n`id` is the platform view's unique identifier.", "detail": "(int id) → void", "kind": 7, "label": "PlatformViewCreatedCallback" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WhitelistingTextInputFormatter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] that allows only the insertion of whitelisted\ncharacters patterns.\n\nSince this formatter only removes characters from the text, it attempts to\npreserve the existing [TextEditingValue.selection] to values it would now\nfall at with the removed characters.\n\nSee also:\n\n * [BlacklistingTextInputFormatter], which uses a blacklist instead of a\n whitelist.", "detail": "", "kind": 7, "label": "WhitelistingTextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CachingAssetBundle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [AssetBundle] that permanently caches string and structured resources\nthat have been fetched.\n\nStrings (for [loadString] and [loadStructuredData]) are decoded as UTF-8.\nData that is cached is cached for the lifetime of the asset bundle\n(typically the lifetime of the application).\n\nBinary resources (from [load]) are not cached.", "detail": "", "kind": 7, "label": "CachingAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GLFWKeyHelper", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Helper class that uses GLFW-specific key mappings.", "detail": "", "kind": 7, "label": "GLFWKeyHelper" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemUiOverlayStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a preference for the style of the system overlays.\n\nUsed by [SystemChrome.setSystemUIOverlayStyle].", "detail": "", "kind": 7, "label": "SystemUiOverlayStyle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FloatingCursorDragState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A floating cursor state the user has induced by force pressing an iOS\nkeyboard.", "detail": "", "kind": 13, "label": "FloatingCursorDragState" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformViewsService", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides access to the platform views service.\n\nThis service allows creating and controlling Android views.\n\nSee also: [PlatformView].", "detail": "", "kind": 7, "label": "PlatformViewsService" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemSound", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Provides access to the library of short system specific sounds for common\ntasks.", "detail": "", "kind": 7, "label": "SystemSound" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputConnection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for interacting with a text input control.\n\nSee also:\n\n * [TextInput.attach]", "detail": "", "kind": 7, "label": "TextInputConnection" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StandardMessageCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] using the Flutter standard binary encoding.\n\nSupported messages are acyclic values of these forms:\n\n * null\n * [bool]s\n * [num]s\n * [String]s\n * [Uint8List]s, [Int32List]s, [Int64List]s, [Float64List]s\n * [List]s of supported values\n * [Map]s from supported values to supported values\n\nDecoded values will use `List<dynamic>` and `Map<dynamic, dynamic>`\nirrespective of content.\n\nOn Android, messages are represented as follows:\n\n * null: null\n * [bool]\\: `java.lang.Boolean`\n * [int]\\: `java.lang.Integer` for values that are representable using 32-bit\n two's complement; `java.lang.Long` otherwise\n * [double]\\: `java.lang.Double`\n * [String]\\: `java.lang.String`\n * [Uint8List]\\: `byte[]`\n * [Int32List]\\: `int[]`\n * [Int64List]\\: `long[]`\n * [Float64List]\\: `double[]`\n * [List]\\: `java.util.ArrayList`\n * [Map]\\: `java.util.HashMap`\n\nOn iOS, messages are represented as follows:\n\n * null: nil\n * [bool]\\: `NSNumber numberWithBool:`\n * [int]\\: `NSNumber numberWithInt:` for values that are representable using\n 32-bit two's complement; `NSNumber numberWithLong:` otherwise\n * [double]\\: `NSNumber numberWithDouble:`\n * [String]\\: `NSString`\n * [Uint8List], [Int32List], [Int64List], [Float64List]\\:\n `FlutterStandardTypedData`\n * [List]\\: `NSArray`\n * [Map]\\: `NSDictionary`\n\nWhen sending a `java.math.BigInteger` from Java, it is converted into a\n[String] with the hexadecimal representation of the integer. (The value is\ntagged as being a big integer; subclasses of this class could be made to\nsupport it natively; see the discussion at [writeValue].) This codec does\nnot support sending big integers from Dart.\n\nThe codec is extensible by subclasses overriding [writeValue] and\n[readValueOfType].", "detail": "", "kind": 7, "label": "StandardMessageCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EventChannel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A named channel for communicating with platform plugins using event streams.\n\nStream setup requests are encoded into binary before being sent,\nand binary events and errors received are decoded into Dart values.\nThe [MethodCodec] used must be compatible with the one used by the platform\nplugin. This can be achieved by creating an `EventChannel` counterpart of\nthis channel on the platform side. The Dart type of events sent and received\nis `dynamic`, but only values supported by the specified [MethodCodec] can\nbe used.\n\nThe logical identity of the channel is given by its name. Identically named\nchannels will interfere with each other's communication.\n\nSee: <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "EventChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemUiOverlay", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a system overlay at a particular location.\n\nUsed by [SystemChrome.setEnabledSystemUIOverlays].", "detail": "", "kind": 13, "label": "SystemUiOverlay" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformAssetBundle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An [AssetBundle] that loads resources using platform messages.", "detail": "", "kind": 7, "label": "PlatformAssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ModifierKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An enum describing the type of modifier key that is being pressed.\n\nSee also:\n\n * [RawKeyEventData.isModifierPressed], which accepts this enum as an\n argument.", "detail": "", "kind": 13, "label": "ModifierKey" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextEditingValue", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current text, selection, and composing state for editing a run of text.", "detail": "", "kind": 7, "label": "TextEditingValue" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StandardMethodCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MethodCodec] using the Flutter standard binary encoding.\n\nThe standard codec is guaranteed to be compatible with the corresponding\nstandard codec for FlutterMethodChannels on the host platform. These parts\nof the Flutter SDK are evolved synchronously.\n\nValues supported as method arguments and result payloads are those supported\nby [StandardMessageCodec].", "detail": "", "kind": 7, "label": "StandardMethodCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MethodChannel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A named channel for communicating with platform plugins using asynchronous\nmethod calls.\n\nMethod calls are encoded into binary before being sent, and binary results\nreceived are decoded into Dart values. The [MethodCodec] used must be\ncompatible with the one used by the platform plugin. This can be achieved\nby creating a method channel counterpart of this channel on the\nplatform side. The Dart type of arguments and results is `dynamic`,\nbut only values supported by the specified [MethodCodec] can be used.\nThe use of unsupported values should be considered programming errors, and\nwill result in exceptions being thrown. The null value is supported\nfor all codecs.\n\nThe logical identity of the channel is given by its name. Identically named\nchannels will interfere with each other's communication.\n\nSee: <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "MethodChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataFuchsia", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for Fuchsia.\n\nThis object contains information about key events obtained from Fuchsia's\n`KeyData` interface.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataFuchsia" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MethodCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A codec for method calls and enveloped results.\n\nAll operations throw an exception, if conversion fails.\n\nSee also:\n\n * [MethodChannel], which use [MethodCodec]s for communication\n between Flutter and platform plugins.\n * [EventChannel], which use [MethodCodec]s for communication\n between Flutter and platform plugins.", "detail": "", "kind": 7, "label": "MethodCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontLoader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class that enables the dynamic loading of fonts at runtime.\n\nThe [FontLoader] class provides a builder pattern, where the caller builds\nup the assets that make up a font family, then calls [load] to load the\nentire font family into a running Flutter application.", "detail": "", "kind": 7, "label": "FontLoader" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BasicMessageChannel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A named channel for communicating with platform plugins using asynchronous\nmessage passing.\n\nMessages are encoded into binary before being sent, and binary messages\nreceived are decoded into Dart values. The [MessageCodec] used must be\ncompatible with the one used by the platform plugin. This can be achieved\nby creating a basic message channel counterpart of this channel on the\nplatform side. The Dart type of messages sent and received is [T],\nbut only the values supported by the specified [MessageCodec] can be used.\nThe use of unsupported values should be considered programming errors, and\nwill result in exceptions being thrown. The null message is supported\nfor all codecs.\n\nThe logical identity of the channel is given by its name. Identically named\nchannels will interfere with each other's communication.\n\nSee: <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "BasicMessageChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputFormatFunction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Function signature expected for creating custom [TextInputFormatter]\nshorthands via [TextInputFormatter.withFunction];", "detail": "(TextEditingValue oldValue, TextEditingValue newValue) → TextEditingValue", "kind": 7, "label": "TextInputFormatFunction" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextSelection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of text that represents a selection.", "detail": "", "kind": 7, "label": "TextSelection" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputClient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface to receive information from [TextInput].\n\nSee also:\n\n * [TextInput.attach]", "detail": "", "kind": 7, "label": "TextInputClient" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MessageCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A message encoding/decoding mechanism.\n\nBoth operations throw an exception, if conversion fails. Such situations\nshould be treated as programming errors.\n\nSee also:\n\n * [BasicMessageChannel], which use [MessageCodec]s for communication\n between Flutter and platform plugins.", "detail": "", "kind": 7, "label": "MessageCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "KeyboardSide", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An enum describing the side of the keyboard that a key is on, to allow\ndiscrimination between which key is pressed (e.g. the left or right SHIFT\nkey).\n\nSee also:\n\n * [RawKeyEventData.isModifierPressed], which accepts this enum as an\n argument.", "detail": "", "kind": 13, "label": "KeyboardSide" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServicesBinding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Listens for platform messages and directs them to [BinaryMessages].\n\nThe [ServicesBinding] also registers a [LicenseEntryCollector] that exposes\nthe licenses found in the `LICENSE` file stored at the root of the asset\nbundle, and implements the `ext.flutter.evict` service extension (see\n[evict]).", "detail": "", "kind": 7, "label": "ServicesBinding" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Defines the interface for raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which allows them to provide a high level\nof fidelity but a low level of portability.\n\nThe event also provides an abstraction for the [physicalKey] and the\n[logicalKey], describing the physical location of the key, and the logical\nmeaning of the key, respectively. These are more portable representations of\nthe key events, and should produce the same results regardless of platform.\n\nSee also:\n\n * [LogicalKeyboardKey], an object that describes the logical meaning of a\n key.\n * [PhysicalKeyboardKey], an object that describes the physical location of\n a key.\n * [RawKeyDownEvent], a specialization for events representing the user\n pressing a key.\n * [RawKeyUpEvent], a specialization for events representing the user\n releasing a key.\n * [RawKeyboard], which uses this interface to expose key data.\n * [RawKeyboardListener], a widget that listens for raw key events.", "detail": "", "kind": 7, "label": "RawKeyEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JSONMethodCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MethodCodec] with UTF-8 encoded JSON method calls and result envelopes.\n\nValues supported as method arguments and result payloads are those supported\nby [JSONMessageCodec].", "detail": "", "kind": 7, "label": "JSONMethodCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlacklistingTextInputFormatter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] that prevents the insertion of blacklisted\ncharacters patterns.\n\nInstances of blacklisted characters found in the new [TextEditingValue]s\nwill be replaced with the [replacementString] which defaults to the empty\nstring.\n\nSince this formatter only removes characters from the text, it attempts to\npreserve the existing [TextEditingValue.selection] to values it would now\nfall at with the removed characters.\n\nSee also:\n\n * [WhitelistingTextInputFormatter], which uses a whitelist instead of a\n blacklist.", "detail": "", "kind": 7, "label": "BlacklistingTextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Thrown to indicate that a platform interaction failed in the platform\nplugin.\n\nSee also:\n\n * [MethodCodec], which throws a [PlatformException], if a received result\n envelope represents an error.\n * [MethodChannel.invokeMethod], which completes the returned future\n with a [PlatformException], if invoking the platform plugin method\n results in an error envelope.\n * [EventChannel.receiveBroadcastStream], which emits\n [PlatformException]s as error events, whenever an event received from the\n platform plugin is wrapped in an error envelope.", "detail": "", "kind": 7, "label": "PlatformException" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemChannels", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform channels used by the Flutter system.", "detail": "", "kind": 7, "label": "SystemChannels" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeviceOrientation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Specifies a particular device orientation.\n\nTo determine which values correspond to which orientations, first position\nthe device in its default orientation (this is the orientation that the\nsystem first uses for its boot logo, or the orientation in which the\nhardware logos or markings are upright, or the orientation in which the\ncameras are at the top). If this is a portrait orientation, then this is\n[portraitUp]. Otherwise, it's [landscapeLeft]. As you rotate the device by\n90 degrees in a counter-clockwise direction around the axis that pierces the\nscreen, you step through each value in this enum in the order given.\n\nFor a device with a landscape default orientation, the orientation obtained\nby rotating the device 90 degrees clockwise from its default orientation is\n[portraitUp].\n\nUsed by [SystemChrome.setPreferredOrientations].", "detail": "", "kind": 13, "label": "DeviceOrientation" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssetBundle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A collection of resources used by the application.\n\nAsset bundles contain resources, such as images and strings, that can be\nused by an application. Access to these resources is asynchronous so that\nthey can be transparently loaded over a network (e.g., from a\n[NetworkAssetBundle]) or from the local file system without blocking the\napplication's user interface.\n\nApplications have a [rootBundle], which contains the resources that were\npackaged with the application when it was built. To add resources to the\n[rootBundle] for your application, add them to the `assets` subsection of\nthe `flutter` section of your application's `pubspec.yaml` manifest.\n\nFor example:\n\n```yaml\nname: my_awesome_application\nflutter:\n assets:\n - images/hamilton.jpeg\n - images/lafayette.jpeg\n```\n\nRather than accessing the [rootBundle] global static directly, consider\nobtaining the [AssetBundle] for the current [BuildContext] using\n[DefaultAssetBundle.of]. This layer of indirection lets ancestor widgets\nsubstitute a different [AssetBundle] (e.g., for testing or localization) at\nruntime rather than directly replying upon the [rootBundle] created at build\ntime. For convenience, the [WidgetsApp] or [MaterialApp] widget at the top\nof the widget hierarchy configures the [DefaultAssetBundle] to be the\n[rootBundle].\n\nSee also:\n\n * [DefaultAssetBundle]\n * [NetworkAssetBundle]\n * [rootBundle]", "detail": "", "kind": 7, "label": "AssetBundle" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataAndroid", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for Android.\n\nThis object contains information about key events obtained from Android's\n`KeyEvent` interface.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataAndroid" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemChrome", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls specific aspects of the operating system's graphical interface and\nhow it interacts with the application.", "detail": "", "kind": 7, "label": "SystemChrome" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextRange", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A range of characters in a string of text.", "detail": "", "kind": 7, "label": "TextRange" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JSONMessageCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[MessageCodec] with UTF-8 encoded JSON messages.\n\nSupported messages are acyclic values of these forms:\n\n * null\n * [bool]s\n * [num]s\n * [String]s\n * [List]s of supported values\n * [Map]s from strings to supported values\n\nOn Android, messages are decoded using the `org.json` library.\nOn iOS, messages are decoded using the `NSJSONSerialization` library.\nIn both cases, the use of top-level simple messages (null, [bool], [num],\nand [String]) is supported (by the Flutter SDK). The decoded value will be\nnull/nil for null, and identical to what would result from decoding a\nsingleton JSON array with a Boolean, number, or string value, and then\nextracting its single element.", "detail": "", "kind": 7, "label": "JSONMessageCodec" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A fixed-length, random-access sequence of bytes that also provides random\nand unaligned access to the fixed-width integers and floating point\nnumbers represented by those bytes.\n\n`ByteData` may be used to pack and unpack data from external sources\n(such as networks or files systems), and to process large quantities\nof numerical data more efficiently than would be possible\nwith ordinary [List] implementations.\n`ByteData` can save space, by eliminating the need for object headers,\nand time, by eliminating the need for data copies.\nFinally, `ByteData` may be used to intentionally reinterpret the bytes\nrepresenting one arithmetic type as another.\nFor example this code fragment determine what 32-bit signed integer\nis represented by the bytes of a 32-bit floating point number:\n\n var buffer = new Uint8List(8).buffer;\n var bdata = new ByteData.view(buffer);\n bdata.setFloat32(0, 3.04);\n int huh = bdata.getInt32(0);", "detail": "", "kind": 7, "label": "ByteData" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clipboard", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Utility methods for interacting with the system's clipboard.", "detail": "", "kind": 7, "label": "Clipboard" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidMotionEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A Dart version of Android's [MotionEvent](https://developer.android.com/reference/android/view/MotionEvent).", "detail": "", "kind": 7, "label": "AndroidMotionEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyEventDataMacOs", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Platform-specific key event data for macOS.\n\nThis object contains information about key events obtained from macOS's\n`NSEvent` interface.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyEventDataMacOs" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyboard", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An interface for listening to raw key events.\n\nRaw key events pass through as much information as possible from the\nunderlying platform's key events, which makes them provide a high level of\nfidelity but a low level of portability.\n\nA [RawKeyboard] is useful for listening to raw key events and hardware\nbuttons that are represented as keys. Typically used by games and other apps\nthat use keyboards for purposes other than text entry.\n\nSee also:\n\n * [RawKeyDownEvent] and [RawKeyUpEvent], the classes used to describe\n specific raw key events.\n * [RawKeyboardListener], a widget that listens for raw key events.\n * [SystemChannels.keyEvent], the low-level channel used for receiving\n events from the system.", "detail": "", "kind": 7, "label": "RawKeyboard" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyDownEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The user has pressed a key on the keyboard.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyDownEvent" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OptionalMethodChannel", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [MethodChannel] that ignores missing platform plugins.\n\nWhen [invokeMethod] fails to find the platform plugin, it returns null\ninstead of throwing an exception.", "detail": "", "kind": 7, "label": "OptionalMethodChannel" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawFloatingCursorPoint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The current state and position of the floating cursor.", "detail": "", "kind": 7, "label": "RawFloatingCursorPoint" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextCapitalization", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Configures how the platform keyboard will select an uppercase or\nlowercase keyboard.\n\nOnly supports text keyboards, other keyboard types will ignore this\nconfiguration. Capitalization is locale-aware.", "detail": "", "kind": 13, "label": "TextCapitalization" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PhysicalKeyboardKey", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A class with static values that describe the keys that are returned from\n[RawKeyEvent.physicalKey].\n\nThese represent *physical* keys, which are keys which represent a particular\nkey location on a QWERTY keyboard. It ignores any modifiers, modes, or\nkeyboard layouts which may be in effect. This is contrast to\n[LogicalKeyboardKey], which represents a logical key interpreted in the\ncontext of modifiers, modes, and/or keyboard layouts.\n\nAs an example, if you wanted a game where the key next to the CAPS LOCK (the\n\"A\" key on a QWERTY keyboard) moved the player to the left, you'd want to\nlook at the physical key to make sure that regardless of the character the\nkey produces, you got the key that is in that location on the keyboard.\n\nConversely, if you wanted to implement an app where the \"Q\" key \"quit\"\nsomething, you'd want to look at the logical key to detect this, since you\nwould like to have it match the key with \"Q\" on it, instead of always\nlooking for \"the key next next to the TAB key\", since on a French keyboard,\nthe key next to the TAB key has an \"A\" on it.\n\nThis example shows how to detect if the user has selected the physical key\nto the right of the CAPS LOCK key.\n\n```dart\nimport 'package:flutter/services.dart';\n```\n\n```dart\n// The node used to request the keyboard focus.\nfinal FocusNode _focusNode = FocusNode();\n// The message to display.\nString _message;\n\n// Focus nodes need to be disposed.\n@override\nvoid dispose() {\n _focusNode.dispose();\n super.dispose();\n}\n\n// Handles the key events from the RawKeyboardListener and update the\n// _message.\nvoid _handleKeyEvent(RawKeyEvent event) {\n setState(() {\n if (event.physicalKey == PhysicalKeyboardKey.keyA) {\n _message = 'Pressed the key next to CAPS LOCK!';\n } else {\n _message = 'Wrong key.';\n }\n });\n}\n\n@override\nWidget build(BuildContext context) {\n final TextTheme textTheme = Theme.of(context).textTheme;\n return Container(\n color: Colors.white,\n alignment: Alignment.center,\n child: DefaultTextStyle(\n style: textTheme.display1,\n child: RawKeyboardListener(\n focusNode: _focusNode,\n onKey: _handleKeyEvent,\n child: AnimatedBuilder(\n animation: _focusNode,\n builder: (BuildContext context, Widget child) {\n if (!_focusNode.hasFocus) {\n return GestureDetector(\n onTap: () {\n FocusScope.of(context).requestFocus(_focusNode);\n },\n child: Text('Tap to focus'),\n );\n }\n return Text(_message ?? 'Press a key');\n },\n ),\n ),\n ),\n );\n}\n```\n\nSee also:\n\n * [RawKeyEvent], the keyboard event object received by widgets that listen\n to keyboard events.\n * [RawKeyboardListener], a widget used to listen to and supply handlers for\n keyboard events.", "detail": "", "kind": 7, "label": "PhysicalKeyboardKey" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BinaryMessages", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Sends binary messages to and receives binary messages from platform plugins.\n\nSee also:\n\n * [BasicMessageChannel], which provides basic messaging services similar to\n `BinaryMessages`, but with pluggable message codecs in support of sending\n strings or semi-structured messages.\n * [MethodChannel], which provides platform communication using asynchronous\n method calls.\n * [EventChannel], which provides platform communication using event streams.\n * <https://flutter.dev/platform-channels/>", "detail": "", "kind": 7, "label": "BinaryMessages" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AndroidPointerCoords", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Position information for an Android pointer.\n\nA Dart version of Android's [MotionEvent.PointerCoords](https://developer.android.com/reference/android/view/MotionEvent.PointerCoords).", "detail": "", "kind": 7, "label": "AndroidPointerCoords" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputFormatter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A [TextInputFormatter] can be optionally injected into an [EditableText]\nto provide as-you-type validation and formatting of the text being edited.\n\nText modification should only be applied when text is being committed by the\nIME and not on text under composition (i.e., only when\n[TextEditingValue.composing] is collapsed).\n\nConcrete implementations [BlacklistingTextInputFormatter], which removes\nblacklisted characters upon edit commit, and\n[WhitelistingTextInputFormatter], which only allows entries of whitelisted\ncharacters, are provided.\n\nTo create custom formatters, extend the [TextInputFormatter] class and\nimplement the [formatEditUpdate] method.\n\nSee also:\n\n * [EditableText] on which the formatting apply.\n * [BlacklistingTextInputFormatter], a provided formatter for blacklisting\n characters.\n * [WhitelistingTextInputFormatter], a provided formatter for whitelisting\n characters.", "detail": "", "kind": 7, "label": "TextInputFormatter" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextInputType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The type of information for which to optimize the text input control.\n\nOn Android, behavior may vary across device and keyboard provider.\n\nThis class stays as close to [Enum] interface as possible, and allows\nfor additional flags for some input types. For example, numeric input\ncan specify whether it supports decimal numbers and/or signed numbers.", "detail": "", "kind": 7, "label": "TextInputType" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemNavigator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "Controls specific aspects of the system navigation stack.", "detail": "", "kind": 7, "label": "SystemNavigator" }, { "data": { "autoImportDisplayUri": "package:flutter/services.dart", "libraryId": 43, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawKeyUpEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The user has released a key on the keyboard.\n\nSee also:\n\n * [RawKeyboard], which uses this interface to expose key data.", "detail": "", "kind": 7, "label": "RawKeyUpEvent" }, { "data": { "autoImportDisplayUri": "package:http/browser_client.dart", "libraryId": 290, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BrowserClient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A `dart:html`-based HTTP client that runs in the browser and is backed by\nXMLHttpRequests.\n\nThis client inherits some of the limitations of XMLHttpRequest. It ignores\nthe [BaseRequest.contentLength], [BaseRequest.persistentConnection],\n[BaseRequest.followRedirects], and [BaseRequest.maxRedirects] fields. It is\nalso unable to stream requests or responses; a request will only be sent and\na response will only be returned once all the data is available.", "detail": "", "kind": 7, "label": "BrowserClient" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Request", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP request where the entire request body is known in advance.", "detail": "", "kind": 7, "label": "Request" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BaseClient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The abstract base class for an HTTP client. This is a mixin-style class;\nsubclasses only need to implement [send] and maybe [close], and then they\nget various convenience methods for free.", "detail": "", "kind": 7, "label": "BaseClient" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Client", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The interface for HTTP clients that take care of maintaining persistent\nconnections across multiple requests to the same server. If you only need to\nsend a single request, it's usually easier to use [head], [get], [post],\n[put], [patch], or [delete] instead.\n\nWhen creating an HTTP client class with additional functionality, you must\nextend [BaseClient] rather than [Client]. In most cases, you can wrap\nanother instance of [Client] and add functionality on top of that. This\nallows all classes implementing [Client] to be mutually composable.", "detail": "", "kind": 7, "label": "Client" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultipartFile", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A file to be uploaded as part of a [MultipartRequest]. This doesn't need to\ncorrespond to a physical file.", "detail": "", "kind": 7, "label": "MultipartFile" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BaseResponse", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base class for HTTP responses.\n\nSubclasses of [BaseResponse] are usually not constructed manually; instead,\nthey're returned by [BaseClient.send] or other HTTP client methods.", "detail": "", "kind": 7, "label": "BaseResponse" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Response", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP response where the entire response body is known in advance.", "detail": "", "kind": 7, "label": "Response" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamedRequest", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP request where the request body is sent asynchronously after the\nconnection has been established and the headers have been sent.\n\nWhen the request is sent via [BaseClient.send], only the headers and\nwhatever data has already been written to [StreamedRequest.stream] will be\nsent immediately. More data will be sent as soon as it's written to\n[StreamedRequest.sink], and when the sink is closed the request will end.", "detail": "", "kind": 7, "label": "StreamedRequest" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamedResponse", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An HTTP response where the response body is received asynchronously after\nthe headers have been received.", "detail": "", "kind": 7, "label": "StreamedResponse" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClientException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "An exception caused by an error in a pkg/http client.", "detail": "", "kind": 7, "label": "ClientException" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BaseRequest", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "The base class for HTTP requests.\n\nSubclasses of [BaseRequest] can be constructed manually and passed to\n[BaseClient.send], which allows the user to provide fine-grained control\nover the request properties. However, usually it's easier to use convenience\nmethods like [get] or [BaseClient.get].", "detail": "", "kind": 7, "label": "BaseRequest" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteStream", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A stream of chunks of bytes representing a single piece of data.", "detail": "", "kind": 7, "label": "ByteStream" }, { "data": { "autoImportDisplayUri": "package:http/http.dart", "libraryId": 277, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MultipartRequest", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "A `multipart/form-data` request. Such a request has both string [fields],\nwhich function as normal form fields, and (potentially streamed) binary\n[files].\n\nThis request automatically sets the Content-Type header to\n`multipart/form-data`. This value will override any value set by the user.\n\n var uri = Uri.parse(\"http://pub.dartlang.org/packages/create\");\n var request = new http.MultipartRequest(\"POST\", uri);\n request.fields['user'] = 'nweiz@google.com';\n request.files.add(new http.MultipartFile.fromFile(\n 'package',\n new File('build/package.tar.gz'),\n contentType: new MediaType('application', 'x-tar'));\n request.send().then((response) {\n if (response.statusCode == 200) print(\"Uploaded!\");\n });", "detail": "", "kind": 7, "label": "MultipartRequest" }, { "data": { "autoImportDisplayUri": "package:http/io_client.dart", "libraryId": 275, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOClient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A `dart:io`-based HTTP client.\n\nThis is the default client when running on the command line.", "detail": "", "kind": 7, "label": "IOClient" }, { "data": { "autoImportDisplayUri": "package:http/testing.dart", "libraryId": 273, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MockClient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "A mock HTTP client designed for use when testing code that uses\n[BaseClient]. This client allows you to define a handler callback for all\nrequests that are made through it so that you can mock a server without\nhaving to send real HTTP requests.", "detail": "", "kind": 7, "label": "MockClient" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterStroke", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorArtboard", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorArtboard" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorImage", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorImage" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterGradientFill", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterGradientFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterFill", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorShape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorShape" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActorNode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ActorNode" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorEllipse", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorEllipse" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterPath", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterPath" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterColorStroke", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterColorStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActor" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterPathPointsPath", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterPathPointsPath" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PropertyAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "PropertyAnimation" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterGradientStroke", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterGradientStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorTriangle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorTriangle" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterRadialStroke", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterRadialStroke" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterRadialFill", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterRadialFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AnimationEventArgs", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "AnimationEventArgs" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorRectangle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorRectangle" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActorClip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ActorClip" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ActorAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ActorAnimation" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ComponentAnimation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "ComponentAnimation" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorDrawable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorDrawable" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterColorFill", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterColorFill" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorPolygon", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorPolygon" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorStar", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorStar" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare.dart", "libraryId": 270, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlutterActorPath", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlutterActorPath" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_controller.dart", "libraryId": 268, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "documentation": "[FlareController] is a general-purpose interface for customizing\nthe behavior of a Flare animation at runtime.\n\nIt provides three methods\n- [initialize()] is called at initialization time.\n- [setViewTransform()] and [advance()] are called every frame.\n\n[FlareController]s can be attached to [FlareActor] widgets\nas an optional parameter.\ne.g.:\n```\nFlareActor(\n \"flare_file.flr\",\n controller: _myCustomController\n)\n```\n\nA basic implementation can be found in [FlareControls].", "detail": "", "kind": 7, "label": "FlareController" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_actor.dart", "libraryId": 267, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareActor", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlareActor" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_actor.dart", "libraryId": 267, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareAnimationLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlareAnimationLayer" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_actor.dart", "libraryId": 267, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareActorRenderObject", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "FlareActorRenderObject" }, { "data": { "autoImportDisplayUri": "package:flare_flutter/flare_controls.dart", "libraryId": 266, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FlareControls", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999996", "preselect": null, "documentation": "[FlareControls] is a concrete implementation of the [FlareController].\n\nThis controller will provide some basic functionality, such as\nplaying an animation, and advancing every frame. If multiple animations are\nplaying at the same time, this controller will mix them.", "detail": "", "kind": 7, "label": "FlareControls" }, { "data": { "autoImportDisplayUri": "package:sensors/sensors.dart", "libraryId": 265, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserAccelerometerEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "UserAccelerometerEvent" }, { "data": { "autoImportDisplayUri": "package:sensors/sensors.dart", "libraryId": 265, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GyroscopeEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "GyroscopeEvent" }, { "data": { "autoImportDisplayUri": "package:sensors/sensors.dart", "libraryId": 265, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccelerometerEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999993", "preselect": null, "detail": "", "kind": 7, "label": "AccelerometerEvent" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Wrapper around a class that implements [Map] that only exposes `Map`\nmembers.\n\nA simple wrapper that delegates all `Map` members to the map provided in the\nconstructor.\n\nBase for delegating map implementations like [UnmodifiableMapView].", "detail": "", "kind": 7, "label": "MapView" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedListEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An object that can be an element in a [LinkedList].\n\nAll elements of a `LinkedList` must extend this class.\nThe class provides the internal links that link elements together\nin the `LinkedList`, and a reference to the linked list itself\nthat an element is currently part of.\n\nAn entry can be in at most one linked list at a time.\nWhile an entry is in a linked list, the [list] property points to that\nlinked list, and otherwise the `list` property is `null`.\n\nWhen created, an entry is not in any linked list.", "detail": "", "kind": 7, "label": "LinkedListEntry" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableMapView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Map] that disallow modifying the map.\n\nA wrapper around a `Map` that forwards all members to the map provided in\nthe constructor, except for operations that modify the map.\nModifying operations throw instead.", "detail": "", "kind": 7, "label": "UnmodifiableMapView" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base implementation of [Set].\n\nThis class provides a base implementation of a `Set` that depends only\non the abstract members: [add], [contains], [lookup], [remove],\n[iterator], [length] and [toSet].\n\nSome of the methods assume that `toSet` creates a modifiable set.\nIf using this base class for an unmodifiable set,\nwhere `toSet` should return an unmodifiable set,\nit's necessary to reimplement\n[retainAll], [union], [intersection] and [difference].\n\nImplementations of `Set` using this base should consider also implementing\n`clear` in constant time. The default implementation works by removing every\nelement.", "detail": "", "kind": 7, "label": "SetBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableMapBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Basic implementation of an unmodifiable [Map].\n\nThis class has a basic implementation of all but two of the members of\nan umodifiable [Map].\nA simple unmodifiable `Map` class can be implemented by extending this\nclass and implementing `keys` and `operator[]`.\n\nModifying operations throw when used.\nThe remaining non-modifying operations are implemented in terms of `keys`\nand `operator[]`.\n\nThe `keys` iterable should have efficient [Iterable.length] and\n[Iterable.contains] operations, and it should catch concurrent modifications\nof the keys while iterating.\n\nA more efficient implementation is usually possible by overriding\nsome of the other members as well.", "detail": "", "kind": 7, "label": "UnmodifiableMapBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleLinkedQueueEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An entry in a doubly linked list. It contains a pointer to the next\nentry, the previous entry, and the boxed element.", "detail": "", "kind": 7, "label": "DoubleLinkedQueueEntry" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for implementing a [Map].\n\nThis class has a basic implementation of all but five of the members of\n[Map].\nA basic `Map` class can be implemented by extending this class and\nimplementing `keys`, `operator[]`, `operator[]=`, `remove` and `clear`.\nThe remaining operations are implemented in terms of these five.\n\nThe `keys` iterable should have efficient [Iterable.length] and\n[Iterable.contains] operations, and it should catch concurrent modifications\nof the keys while iterating.\n\nA more efficient implementation is usually possible by overriding\nsome of the other members as well.", "detail": "", "kind": 7, "label": "MapBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HashSet", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An unordered hash-table based [Set] implementation.\n\nThe elements of a `HashSet` must have consistent equality\nand hashCode implementations. This means that the equals operation\nmust define a stable equivalence relation on the elements (reflexive,\nsymmetric, transitive, and consistent over time), and that the hashCode\nmust consistent with equality, so that the same for objects that are\nconsidered equal.\n\nThe set allows `null` as an element.\n\nMost simple operations on `HashSet` are done in (potentially amortized)\nconstant time: [add], [contains], [remove], and [length], provided the hash\ncodes of objects are well distributed.\n\nThe iteration order of the set is not specified and depends on\nthe hashcodes of the provided elements. However, the order is stable:\nmultiple iterations over the same set produce the same order, as long as\nthe set is not modified.", "detail": "", "kind": 7, "label": "HashSet" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListQueue", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "List based [Queue].\n\nKeeps a cyclic buffer of elements, and grows to a larger buffer when\nit fills up. This guarantees constant time peek and remove operations, and\namortized constant time add operations.\n\nThe structure is efficient for any queue or stack usage.", "detail": "", "kind": 7, "label": "ListQueue" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Abstract implementation of a list.\n\n`ListBase` can be used as a base class for implementing the `List`\ninterface.\n\nAll operations are defined in terms of `length`, `operator[]`,\n`operator[]=` and `length=`, which need to be implemented.\n\n*NOTICE*: Forwarding just these four operations to a normal growable [List]\n(as created by `new List()`) will give very bad performance for `add` and\n`addAll` operations of `ListBase`. These operations are implemented by\nincreasing the length of the list by one for each `add` operation, and\nrepeatedly increasing the length of a growable list is not efficient.\nTo avoid this, either override 'add' and 'addAll' to also forward directly\nto the growable list, or, preferably, use `DelegatingList` from\n\"package:collection/wrappers.dart\" instead.", "detail": "", "kind": 7, "label": "ListBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HashMap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A hash-table based implementation of [Map].\n\nThe keys of a `HashMap` must have consistent [Object.==]\nand [Object.hashCode] implementations. This means that the `==` operator\nmust define a stable equivalence relation on the keys (reflexive,\nsymmetric, transitive, and consistent over time), and that `hashCode`\nmust be the same for objects that are considered equal by `==`.\n\nThe map allows `null` as a key.\n\nIterating the map's keys, values or entries (through [forEach])\nmay happen in any order.\nThe iteration order only changes when the map is modified.\nValues are iterated in the same order as their associated keys,\nso iterating the [keys] and [values] in parallel\nwill give matching key and value pairs.", "detail": "", "kind": 7, "label": "HashMap" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "This [Iterable] mixin implements all [Iterable] members except `iterator`.\n\nAll other methods are implemented in terms of `iterator`.", "detail": "", "kind": 7, "label": "IterableMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ListMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base implementation of a [List] class.\n\n`ListMixin` can be used as a mixin to make a class implement\nthe `List` interface.\n\nThis implements all read operations using only the `length` and\n`operator[]` members. It implements write operations using those and\n`length=` and `operator[]=`\n\n*NOTICE*: Forwarding just these four operations to a normal growable [List]\n(as created by `new List()`) will give very bad performance for `add` and\n`addAll` operations of `ListBase`. These operations are implemented by\nincreasing the length of the list by one for each `add` operation, and\nrepeatedly increasing the length of a growable list is not efficient.\nTo avoid this, either override 'add' and 'addAll' to also forward directly\nto the growable list, or, if possible, use `DelegatingList` from\n\"package:collection/wrappers.dart\" instead.", "detail": "", "kind": 7, "label": "ListMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedHashSet", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [LinkedHashSet] is a hash-table based [Set] implementation.\n\nThe `LinkedHashSet` also keep track of the order that elements were inserted\nin, and iteration happens in first-to-last insertion order.\n\nThe elements of a `LinkedHashSet` must have consistent [Object.==]\nand [Object.hashCode] implementations. This means that the `==` operator\nmust define a stable equivalence relation on the elements (reflexive,\nsymmetric, transitive, and consistent over time), and that `hashCode`\nmust be the same for objects that are considered equal by `==`.\n\nThe set allows `null` as an element.\n\nIteration of elements is done in element insertion order.\nAn element that was added after another will occur later in the iteration.\nAdding an element that is already in the set\ndoes not change its position in the iteration order,\nbut removing an element and adding it again,\nwill make it the last element of an iteration.\n\nMost simple operations on `HashSet` are done in (potentially amortized)\nconstant time: [add], [contains], [remove], and [length], provided the hash\ncodes of objects are well distributed..", "detail": "", "kind": 7, "label": "LinkedHashSet" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An unmodifiable [List] view of another List.\n\nThe source of the elements may be a [List] or any [Iterable] with\nefficient [Iterable.length] and [Iterable.elementAt].", "detail": "", "kind": 7, "label": "UnmodifiableListView" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DoubleLinkedQueue", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Queue] implementation based on a double-linked list.\n\nAllows constant time add, remove-at-ends and peek operations.", "detail": "", "kind": 7, "label": "DoubleLinkedQueue" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedHashMap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A hash-table based implementation of [Map].\n\nThe insertion order of keys is remembered,\nand keys are iterated in the order they were inserted into the map.\nValues are iterated in their corresponding key's order.\nChanging a key's value, when the key is already in the map,\ndoes not change the iteration order,\nbut removing the key and adding it again\nwill make it be last in the iteration order.\n\nThe keys of a `LinkedHashMap` must have consistent [Object.==]\nand [Object.hashCode] implementations. This means that the `==` operator\nmust define a stable equivalence relation on the keys (reflexive,\nsymmetric, transitive, and consistent over time), and that `hashCode`\nmust be the same for objects that are considered equal by `==`.\n\nThe map allows `null` as a key.", "detail": "", "kind": 7, "label": "LinkedHashMap" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Queue", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Queue] is a collection that can be manipulated at both ends. One\ncan iterate over the elements of a queue through [forEach] or with\nan [Iterator].\n\nIt is generally not allowed to modify the queue (add or remove entries)\nwhile an operation on the queue is being performed, for example during a\ncall to [forEach].\nModifying the queue while it is being iterated will most likely break the\niteration.\nThis goes both for using the [iterator] directly, or for iterating an\n`Iterable` returned by a method like [map] or [where].", "detail": "", "kind": 7, "label": "Queue" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Mixin implementing a [Map].\n\nThis mixin has a basic implementation of all but five of the members of\n[Map].\nA basic `Map` class can be implemented by mixin in this class and\nimplementing `keys`, `operator[]`, `operator[]=`, `remove` and `clear`.\nThe remaining operations are implemented in terms of these five.\n\nThe `keys` iterable should have efficient [Iterable.length] and\n[Iterable.contains] operations, and it should catch concurrent modifications\nof the keys while iterating.\n\nA more efficient implementation is usually possible by overriding\nsome of the other members as well.", "detail": "", "kind": 7, "label": "MapMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SplayTreeSet", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Set] of objects that can be ordered relative to each other.\n\nThe set is based on a self-balancing binary tree. It allows most operations\nin amortized logarithmic time.\n\nElements of the set are compared using the `compare` function passed in\nthe constructor, both for ordering and for equality.\nIf the set contains only an object `a`, then `set.contains(b)`\nwill return `true` if and only if `compare(a, b) == 0`,\nand the value of `a == b` is not even checked.\nIf the compare function is omitted, the objects are assumed to be\n[Comparable], and are compared using their [Comparable.compareTo] method.\nNon-comparable objects (including `null`) will not work as an element\nin that case.", "detail": "", "kind": 7, "label": "SplayTreeSet" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SetMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Mixin implementation of [Set].\n\nThis class provides a base implementation of a `Set` that depends only\non the abstract members: [add], [contains], [lookup], [remove],\n[iterator], [length] and [toSet].\n\nSome of the methods assume that `toSet` creates a modifiable set.\nIf using this mixin for an unmodifiable set,\nwhere `toSet` should return an unmodifiable set,\nit's necessary to reimplement\n[retainAll], [union], [intersection] and [difference].\n\nImplementations of `Set` using this mixin should consider also implementing\n`clear` in constant time. The default implementation works by removing every\nelement.", "detail": "", "kind": 7, "label": "SetMixin" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LinkedList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A specialized double-linked list of elements that extends [LinkedListEntry].\n\nThis is not a generic data structure. It only accepts elements that extend\nthe [LinkedListEntry] class. See the [Queue] implementations for generic\ncollections that allow constant time adding and removing at the ends.\n\nThis is not a [List] implementation. Despite its name, this class does not\nimplement the [List] interface. It does not allow constant time lookup by\nindex.\n\nBecause the elements themselves contain the links of this linked list,\neach element can be in only one list at a time. To add an element to another\nlist, it must first be removed from its current list (if any).\n\nIn return, each element knows its own place in the linked list, as well as\nwhich list it is in. This allows constant time\n[LinkedListEntry.insertAfter], [LinkedListEntry.insertBefore] and\n[LinkedListEntry.unlink] operations when all you have is the element.\n\nA `LinkedList` also allows constant time adding and removing at either end,\nand a constant time length getter.", "detail": "", "kind": 7, "label": "LinkedList" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HasNextIterator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [HasNextIterator] class wraps an [Iterator] and provides methods to\niterate over an object using `hasNext` and `next`.\n\nAn [HasNextIterator] does not implement the [Iterator] interface.", "detail": "", "kind": 7, "label": "HasNextIterator" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IterableBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for implementing [Iterable].\n\nThis class implements all methods of [Iterable], except [Iterable.iterator],\nin terms of `iterator`.", "detail": "", "kind": 7, "label": "IterableBase" }, { "data": { "autoImportDisplayUri": "dart:collection", "libraryId": 658, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SplayTreeMap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [Map] of objects that can be ordered relative to each other.\n\nThe map is based on a self-balancing binary tree. It allows most operations\nin amortized logarithmic time.\n\nKeys of the map are compared using the `compare` function passed in\nthe constructor, both for ordering and for equality.\nIf the map contains only the key `a`, then `map.containsKey(b)`\nwill return `true` if and only if `compare(a, b) == 0`,\nand the value of `a == b` is not even checked.\nIf the compare function is omitted, the objects are assumed to be\n[Comparable], and are compared using their [Comparable.compareTo] method.\nNon-comparable objects (including `null`) will not work as keys\nin that case.\n\nTo allow calling [operator []], [remove] or [containsKey] with objects\nthat are not supported by the `compare` function, an extra `isValidKey`\npredicate function can be supplied. This function is tested before\nusing the `compare` function on an argument value that may not be a [K]\nvalue. If omitted, the `isValidKey` function defaults to testing if the\nvalue is a [K].", "detail": "", "kind": 7, "label": "SplayTreeMap" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimelineSyncFunction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A typedef for the function argument to [Timeline.timeSync].", "detail": "() → T", "kind": 7, "label": "TimelineSyncFunction" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Metrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "Metrics" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Service", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Access information about the service protocol and control the web server\nthat provides access to the services provided by the Dart VM for\ndebugging and inspecting Dart programs.", "detail": "", "kind": 7, "label": "Service" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Flow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A class to represent Flow events.\n\n[Flow] objects are used to thread flow events between timeline slices,\nfor example, those created with the [Timeline] class below. Adding\n[Flow] objects cause arrows to be drawn between slices in Chrome's trace\nviewer. The arrows start at e.g [Timeline] events that are passed a\n[Flow.begin] object, go through [Timeline] events that are passed a\n[Flow.step] object, and end at [Timeline] events that are passed a\n[Flow.end] object, all having the same [Flow.id]. For example:\n\n```dart\nvar flow = Flow.begin();\nTimeline.timeSync('flow_test', () {\n doSomething();\n}, flow: flow);\n\nTimeline.timeSync('flow_test', () {\n doSomething();\n}, flow: Flow.step(flow.id));\n\nTimeline.timeSync('flow_test', () {\n doSomething();\n}, flow: Flow.end(flow.id));\n```", "detail": "", "kind": 7, "label": "Flow" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Counter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A changing value. Initial value is 0.0.", "detail": "", "kind": 7, "label": "Counter" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UserTag", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A UserTag can be used to group samples in the Observatory profiler.", "detail": "", "kind": 7, "label": "UserTag" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServiceProtocolInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Service protocol is the protocol that a client like the Observatory\ncould use to access the services provided by the Dart VM for\ndebugging and inspecting Dart programs. This class encapsulates the\nversion number and Uri for accessing this service.", "detail": "", "kind": 7, "label": "ServiceProtocolInfo" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimelineTask", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An asynchronous task on the timeline. An asynchronous task can have many\n(nested) synchronous operations. Synchronous operations can live longer than\nthe current isolate event. To pass a [TimelineTask] to another isolate,\nyou must first call [pass] to get the task id and then construct a new\n[TimelineTask] in the other isolate.", "detail": "", "kind": 7, "label": "TimelineTask" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gauge", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A measured value with a min and max. Initial value is min. Value will\nbe clamped to the interval [min, max].", "detail": "", "kind": 7, "label": "Gauge" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Metric", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Abstract [Metric] class. Metric names must be unique, are hierarchical,\nand use periods as separators. For example, 'a.b.c'. Uniqueness is only\nenforced when a Metric is registered. The name of a metric cannot contain\nthe slash ('/') character.", "detail": "", "kind": 7, "label": "Metric" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServiceExtensionResponse", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A response to a service protocol extension RPC.\n\nIf the RPC was successful, use [ServiceExtensionResponse.result], otherwise\nuse [ServiceExtensionResponse.error].", "detail": "", "kind": 7, "label": "ServiceExtensionResponse" }, { "data": { "autoImportDisplayUri": "dart:developer", "libraryId": 653, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Timeline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Add to the timeline.\n\n[Timeline]'s methods add synchronous events to the timeline. When\ngenerating a timeline in Chrome's tracing format, using [Timeline] generates\n\"Complete\" events. [Timeline]'s [startSync] and [finishSync] can be used\nexplicitly, or implicitly by wrapping a closure in [timeSync]. For example:\n\n```dart\nTimeline.startSync(\"Doing Something\");\ndoSomething();\nTimeline.finishSync();\n```\n\nOr:\n\n```dart\nTimeline.timeSync(\"Doing Something\", () {\n doSomething();\n});\n```", "detail": "", "kind": 7, "label": "Timeline" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stdout", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[Stdout] represents the [IOSink] for either `stdout` or `stderr`.\n\nIt provides a *blocking* `IOSink`, so using this to write will block until\nthe output is written.\n\nIn some situations this blocking behavior is undesirable as it does not\nprovide the same non-blocking behavior as dart:io in general exposes.\nUse the property [nonBlocking] to get an `IOSink` which has the non-blocking\nbehavior.\n\nThis class can also be used to check whether `stdout` or `stderr` is\nconnected to a terminal and query some terminal properties.\n\nThe [addError] API is inherited from [StreamSink] and calling it will result\nin an unhandled asynchronous error unless there is an error handler on\n[done].", "detail": "", "kind": 7, "label": "Stdout" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpOverrides", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "This class facilitates overriding [HttpClient] with a mock implementation.\nIt should be extended by another class in client code with overrides\nthat construct a mock implementation. The implementation in this base class\ndefaults to the actual [HttpClient] implementation. For example:\n\n```\nclass MyHttpClient implements HttpClient {\n ...\n // An implementation of the HttpClient interface\n ...\n}\n\nmain() {\n HttpOverrides.runZoned(() {\n ...\n // Operations will use MyHttpClient instead of the real HttpClient\n // implementation whenever HttpClient is used.\n ...\n }, createHttpClient: (SecurityContext c) => new MyHttpClient(c));\n}\n```", "detail": "", "kind": 7, "label": "HttpOverrides" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ContentType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Representation of a content type. An instance of [ContentType] is\nimmutable.", "detail": "", "kind": 7, "label": "ContentType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSecureSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "RawSecureSocket provides a secure (SSL or TLS) network connection.\nClient connections to a server are provided by calling\nRawSecureSocket.connect. A secure server, created with\n[RawSecureServerSocket], also returns RawSecureSocket objects representing\nthe server end of a secure connection.\nThe certificate provided by the server is checked\nusing the trusted certificates set in the SecurityContext object.\nThe default [SecurityContext] object contains a built-in set of trusted\nroot certificates for well-known certificate authorities.", "detail": "", "kind": 7, "label": "RawSecureSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpSession", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "HttpSession" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpStatus", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "HTTP status codes. Exported in dart:io and dart:html.", "detail": "", "kind": 7, "label": "HttpStatus" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpRequest", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A server-side object\nthat contains the content of and information about an HTTP request.\n\n__Note__: Check out the\n[http_server](https://pub.dartlang.org/packages/http_server)\npackage, which makes working with the low-level\ndart:io HTTP server subsystem easier.\n\n`HttpRequest` objects are generated by an [HttpServer],\nwhich listens for HTTP requests on a specific host and port.\nFor each request received, the HttpServer, which is a [Stream],\ngenerates an `HttpRequest` object and adds it to the stream.\n\nAn `HttpRequest` object delivers the body content of the request\nas a stream of byte lists.\nThe object also contains information about the request,\nsuch as the method, URI, and headers.\n\nIn the following code, an HttpServer listens\nfor HTTP requests. When the server receives a request,\nit uses the HttpRequest object's `method` property to dispatch requests.\n\n final HOST = InternetAddress.loopbackIPv4;\n final PORT = 80;\n\n HttpServer.bind(HOST, PORT).then((_server) {\n _server.listen((HttpRequest request) {\n switch (request.method) {\n case 'GET':\n handleGetRequest(request);\n break;\n case 'POST':\n ...\n }\n },\n onError: handleError); // listen() failed.\n }).catchError(handleError);\n\nAn HttpRequest object provides access to the associated [HttpResponse]\nobject through the response property.\nThe server writes its response to the body of the HttpResponse object.\nFor example, here's a function that responds to a request:\n\n void handleGetRequest(HttpRequest req) {\n HttpResponse res = req.response;\n res.write('Received request ${req.method}: ${req.uri.path}');\n res.close();\n }", "detail": "", "kind": 7, "label": "HttpRequest" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SocketDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [SocketDirection] is used as a parameter to [Socket.close] and\n[RawSocket.close] to close a socket in the specified direction(s).", "detail": "", "kind": 7, "label": "SocketDirection" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibEncoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [ZLibEncoder] encoder is used by [ZLibCodec] and [GZipCodec] to compress\ndata.", "detail": "", "kind": 7, "label": "ZLibEncoder" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RedirectException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "RedirectException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientDigestCredentials", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Represents credentials for digest authentication. Digest\nauthentication is only supported for servers using the MD5\nalgorithm and quality of protection (qop) of either \"none\" or\n\"auth\".", "detail": "", "kind": 7, "label": "HttpClientDigestCredentials" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InternetAddress", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An internet address.\n\nThis object holds an internet address. If this internet address\nis the result of a DNS lookup, the address also holds the hostname\nused to make the lookup.\nAn Internet address combined with a port number represents an\nendpoint to which a socket can connect or a listening socket can\nbind.", "detail": "", "kind": 7, "label": "InternetAddress" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SecurityContext", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The object containing the certificates to trust when making\na secure client connection, and the certificate chain and\nprivate key to serve from a secure server.\n\nThe [SecureSocket] and [SecureServerSocket] classes take a SecurityContext\nas an argument to their connect and bind methods.\n\nCertificates and keys can be added to a SecurityContext from either PEM\nor PKCS12 containers.\n\niOS note: Some methods to add, remove, and inspect certificates are not yet\nimplemented. However, the platform's built-in trusted certificates can\nbe used, by way of [SecurityContext.defaultContext].", "detail": "", "kind": 7, "label": "SecurityContext" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConnectionTask", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Returned by the `startConnect` methods on client-side socket types `S`,\n`ConnectionTask<S>` allows cancelling an attempt to connect to a host.", "detail": "", "kind": 7, "label": "ConnectionTask" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for all IO related exceptions.", "detail": "", "kind": 7, "label": "IOException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A two-way HTTP communication object for client or server applications.\n\nThe stream exposes the messages received. A text message will be of type\n`String` and a binary message will be of type `List<int>`.", "detail": "", "kind": 7, "label": "WebSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[ProcessInfo] provides methods for retrieving information about the\ncurrent process.", "detail": "", "kind": 7, "label": "ProcessInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Socket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A high-level class for communicating over a TCP socket.\n\nThe [Socket] exposes both a [Stream] and a [IOSink] interface, making it\nideal for using together with other [Stream]s.", "detail": "", "kind": 7, "label": "Socket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ServerSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [ServerSocket] represents a listening socket, and provides a\nstream of [Socket] objects, one for each connection made to the\nlistening socket.\n\nSee [Socket] for more info.", "detail": "", "kind": 7, "label": "ServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawDatagramSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawDatagramSocket] is a low-level interface to an UDP socket,\nexposing the raw events signaled by the system. It's a [Stream] of\n[RawSocketEvent]s.\n\nNote that the event [RawSocketEvent.readClosed] will never be\nreceived as an UDP socket cannot be closed by a remote peer.", "detail": "", "kind": 7, "label": "RawDatagramSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemCreateEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for newly created file system objects.", "detail": "", "kind": 7, "label": "FileSystemCreateEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A client that receives content, such as web pages, from\na server using the HTTP protocol.\n\nHttpClient contains a number of methods to send an [HttpClientRequest]\nto an Http server and receive an [HttpClientResponse] back.\nFor example, you can use the [get], [getUrl], [post], and [postUrl] methods\nfor GET and POST requests, respectively.\n\n## Making a simple GET request: an example\n\nA `getUrl` request is a two-step process, triggered by two [Future]s.\nWhen the first future completes with a [HttpClientRequest], the underlying\nnetwork connection has been established, but no data has been sent.\nIn the callback function for the first future, the HTTP headers and body\ncan be set on the request. Either the first write to the request object\nor a call to [close] sends the request to the server.\n\nWhen the HTTP response is received from the server,\nthe second future, which is returned by close,\ncompletes with an [HttpClientResponse] object.\nThis object provides access to the headers and body of the response.\nThe body is available as a stream implemented by HttpClientResponse.\nIf a body is present, it must be read. Otherwise, it leads to resource\nleaks. Consider using [HttpClientResponse.drain] if the body is unused.\n\n HttpClient client = new HttpClient();\n client.getUrl(Uri.parse(\"http://www.example.com/\"))\n .then((HttpClientRequest request) {\n // Optionally set up headers...\n // Optionally write to the request object...\n // Then call close.\n ...\n return request.close();\n })\n .then((HttpClientResponse response) {\n // Process the response.\n ...\n });\n\nThe future for [HttpClientRequest] is created by methods such as\n[getUrl] and [open].\n\n## HTTPS connections\n\nAn HttpClient can make HTTPS requests, connecting to a server using\nthe TLS (SSL) secure networking protocol. Calling [getUrl] with an\nhttps: scheme will work automatically, if the server's certificate is\nsigned by a root CA (certificate authority) on the default list of\nwell-known trusted CAs, compiled by Mozilla.\n\nTo add a custom trusted certificate authority, or to send a client\ncertificate to servers that request one, pass a [SecurityContext] object\nas the optional `context` argument to the `HttpClient` constructor.\nThe desired security options can be set on the [SecurityContext] object.\n\n## Headers\n\nAll HttpClient requests set the following header by default:\n\n Accept-Encoding: gzip\n\nThis allows the HTTP server to use gzip compression for the body if\npossible. If this behavior is not desired set the\n`Accept-Encoding` header to something else.\nTo turn off gzip compression of the response, clear this header:\n\n request.headers.removeAll(HttpHeaders.acceptEncodingHeader)\n\n## Closing the HttpClient\n\nThe HttpClient supports persistent connections and caches network\nconnections to reuse them for multiple requests whenever\npossible. This means that network connections can be kept open for\nsome time after a request has completed. Use HttpClient.close\nto force the HttpClient object to shut down and to close the idle\nnetwork connections.\n\n## Turning proxies on and off\n\nBy default the HttpClient uses the proxy configuration available\nfrom the environment, see [findProxyFromEnvironment]. To turn off\nthe use of proxies set the [findProxy] property to\n[:null:].\n\n HttpClient client = new HttpClient();\n client.findProxy = null;", "detail": "", "kind": 7, "label": "HttpClient" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base event class emitted by [FileSystemEntity.watch].", "detail": "", "kind": 7, "label": "FileSystemEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocketStatus", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "WebSocket status codes used when closing a WebSocket connection.", "detail": "", "kind": 7, "label": "WebSocketStatus" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OSError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An [OSError] object holds information about an error from the\noperating system.", "detail": "", "kind": 7, "label": "OSError" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileStat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A FileStat object represents the result of calling the POSIX stat() function\non a file system object. It is an immutable object, representing the\nsnapshotted values returned by the stat() call.", "detail": "", "kind": 7, "label": "FileStat" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RandomAccessFile", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "`RandomAccessFile` provides random access to the data in a\nfile.\n\n`RandomAccessFile` objects are obtained by calling the\n`open` method on a [File] object.\n\nA `RandomAccessFile` have both asynchronous and synchronous\nmethods. The asynchronous methods all return a `Future`\nwhereas the synchronous methods will return the result directly,\nand block the current isolate until the result is ready.\n\nAt most one asynchronous method can be pending on a given `RandomAccessFile`\ninstance at the time. If an asynchronous method is called when one is\nalready in progress a [FileSystemException] is thrown.\n\nIf an asynchronous method is pending it is also not possible to call any\nsynchronous methods. This will also throw a [FileSystemException].", "detail": "", "kind": 7, "label": "RandomAccessFile" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSocketEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Events for the [RawSocket].", "detail": "", "kind": 7, "label": "RawSocketEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "File", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A reference to a file on the file system.\n\nA File instance is an object that holds a [path] on which operations can\nbe performed.\nYou can get the parent directory of the file using the getter [parent],\na property inherited from [FileSystemEntity].\n\nCreate a new File object with a pathname to access the specified file on the\nfile system from your program.\n\n var myFile = new File('file.txt');\n\nThe File class contains methods for manipulating files and their contents.\nUsing methods in this class, you can open and close files, read to and write\nfrom them, create and delete them, and check for their existence.\n\nWhen reading or writing a file, you can use streams (with [openRead]),\nrandom access operations (with [open]),\nor convenience methods such as [readAsString],\n\nMost methods in this class occur in synchronous and asynchronous pairs,\nfor example, [readAsString] and [readAsStringSync].\nUnless you have a specific reason for using the synchronous version\nof a method, prefer the asynchronous version to avoid blocking your program.\n\n## If path is a link\n\nIf [path] is a symbolic link, rather than a file,\nthen the methods of File operate on the ultimate target of the\nlink, except for [delete] and [deleteSync], which operate on\nthe link.\n\n## Read from a file\n\nThe following code sample reads the entire contents from a file as a string\nusing the asynchronous [readAsString] method:\n\n import 'dart:async';\n import 'dart:io';\n\n void main() {\n new File('file.txt').readAsString().then((String contents) {\n print(contents);\n });\n }\n\nA more flexible and useful way to read a file is with a [Stream].\nOpen the file with [openRead], which returns a stream that\nprovides the data in the file as chunks of bytes.\nListen to the stream for data and process as needed.\nYou can use various transformers in succession to manipulate the\ndata into the required format or to prepare it for output.\n\nYou might want to use a stream to read large files,\nto manipulate the data with transformers,\nor for compatibility with another API, such as [WebSocket]s.\n\n import 'dart:io';\n import 'dart:convert';\n import 'dart:async';\n\n main() {\n final file = new File('file.txt');\n Stream<List<int>> inputStream = file.openRead();\n\n inputStream\n .transform(utf8.decoder) // Decode bytes to UTF-8.\n .transform(new LineSplitter()) // Convert stream to individual lines.\n .listen((String line) { // Process results.\n print('$line: ${line.length} bytes');\n },\n onDone: () { print('File is now closed.'); },\n onError: (e) { print(e.toString()); });\n }\n\n## Write to a file\n\nTo write a string to a file, use the [writeAsString] method:\n\n import 'dart:io';\n\n void main() {\n final filename = 'file.txt';\n new File(filename).writeAsString('some content')\n .then((File file) {\n // Do something with the file.\n });\n }\n\nYou can also write to a file using a [Stream]. Open the file with\n[openWrite], which returns an [IOSink] to which you can write data.\nBe sure to close the sink with the [IOSink.close] method.\n\n import 'dart:io';\n\n void main() {\n var file = new File('file.txt');\n var sink = file.openWrite();\n sink.write('FILE ACCESSED ${new DateTime.now()}\\n');\n\n // Close the IOSink to free system resources.\n sink.close();\n }\n\n## The use of Futures\n\nTo avoid unintentional blocking of the program,\nseveral methods use a [Future] to return a value. For example,\nthe [length] method, which gets the length of a file, returns a Future.\nUse `then` to register a callback function, which is called when\nthe value is ready.\n\n import 'dart:io';\n\n main() {\n final file = new File('file.txt');\n\n file.length().then((len) {\n print(len);\n });\n }\n\nIn addition to length, the [exists], [lastModified], [stat], and\nother methods, return Futures.\n\n## Other resources\n\n* [Dart by Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)\n provides additional task-oriented code samples that show how to use\n various API from the Directory class and the related [File] class.\n\n* [I/O for Command-Line\n Apps](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartio---io-for-command-line-apps)\n a section from _A Tour of the Dart Libraries_ covers files and directories.\n\n* [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),\n a tutorial about writing command-line apps, includes information about\n files and directories.", "detail": "", "kind": 7, "label": "File" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stdin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[Stdin] allows both synchronous and asynchronous reads from the standard\ninput stream.\n\nMixing synchronous and asynchronous reads is undefined.", "detail": "", "kind": 7, "label": "Stdin" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientCredentials", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "HttpClientCredentials" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CompressionOptions", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [CompressionOptions] class allows you to control\nthe options of WebSocket compression.", "detail": "", "kind": 7, "label": "CompressionOptions" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Datagram", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Datagram package. Data send to and received from datagram sockets\ncontains the internet address and port of the destination or source\ntogeter with the data.", "detail": "", "kind": 7, "label": "Datagram" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemDeleteEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for deletion of file system objects.", "detail": "", "kind": 7, "label": "FileSystemDeleteEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HeaderValue", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Representation of a header value in the form:\n\n [:value; parameter1=value1; parameter2=value2:]\n\n[HeaderValue] can be used to conveniently build and parse header\nvalues on this form.\n\nTo build an [:accepts:] header with the value\n\n text/plain; q=0.3, text/html\n\nuse code like this:\n\n HttpClientRequest request = ...;\n var v = new HeaderValue(\"text/plain\", {\"q\": \"0.3\"});\n request.headers.add(HttpHeaders.acceptHeader, v);\n request.headers.add(HttpHeaders.acceptHeader, \"text/html\");\n\nTo parse the header values use the [:parse:] static method.\n\n HttpRequest request = ...;\n List<String> values = request.headers[HttpHeaders.acceptHeader];\n values.forEach((value) {\n HeaderValue v = HeaderValue.parse(value);\n // Use v.value and v.parameters\n });\n\nAn instance of [HeaderValue] is immutable.", "detail": "", "kind": 7, "label": "HeaderValue" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NetworkInterface", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [NetworkInterface] represents an active network interface on the current\nsystem. It contains a list of [InternetAddress]es that are bound to the\ninterface.", "detail": "", "kind": 7, "label": "NetworkInterface" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibDecoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [ZLibDecoder] is used by [ZLibCodec] and [GZipCodec] to decompress data.", "detail": "", "kind": 7, "label": "ZLibDecoder" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpServer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A server that delivers content, such as web pages, using the HTTP protocol.\n\nThe HttpServer is a [Stream] that provides [HttpRequest] objects. Each\nHttpRequest has an associated [HttpResponse] object.\nThe server responds to a request by writing to that HttpResponse object.\nThe following example shows how to bind an HttpServer to an IPv6\n[InternetAddress] on port 80 (the standard port for HTTP servers)\nand how to listen for requests.\nPort 80 is the default HTTP port. However, on most systems accessing\nthis requires super-user privileges. For local testing consider\nusing a non-reserved port (1024 and above).\n\n import 'dart:io';\n\n main() {\n HttpServer\n .bind(InternetAddress.anyIPv6, 80)\n .then((server) {\n server.listen((HttpRequest request) {\n request.response.write('Hello, world!');\n request.response.close();\n });\n });\n }\n\nIncomplete requests, in which all or part of the header is missing, are\nignored, and no exceptions or HttpRequest objects are generated for them.\nLikewise, when writing to an HttpResponse, any [Socket] exceptions are\nignored and any future writes are ignored.\n\nThe HttpRequest exposes the request headers and provides the request body,\nif it exists, as a Stream of data. If the body is unread, it is drained\nwhen the server writes to the HttpResponse or closes it.\n\n## Bind with a secure HTTPS connection\n\nUse [bindSecure] to create an HTTPS server.\n\nThe server presents a certificate to the client. The certificate\nchain and the private key are set in the [SecurityContext]\nobject that is passed to [bindSecure].\n\n import 'dart:io';\n import \"dart:isolate\";\n\n main() {\n SecurityContext context = new SecurityContext();\n var chain =\n Platform.script.resolve('certificates/server_chain.pem')\n .toFilePath();\n var key =\n Platform.script.resolve('certificates/server_key.pem')\n .toFilePath();\n context.useCertificateChain(chain);\n context.usePrivateKey(key, password: 'dartdart');\n\n HttpServer\n .bindSecure(InternetAddress.anyIPv6,\n 443,\n context)\n .then((server) {\n server.listen((HttpRequest request) {\n request.response.write('Hello, world!');\n request.response.close();\n });\n });\n }\n\n The certificates and keys are PEM files, which can be created and\n managed with the tools in OpenSSL.\n\n## Connect to a server socket\n\nYou can use the [listenOn] constructor to attach an HTTP server to\na [ServerSocket].\n\n import 'dart:io';\n\n main() {\n ServerSocket.bind(InternetAddress.anyIPv6, 80)\n .then((serverSocket) {\n HttpServer httpserver = new HttpServer.listenOn(serverSocket);\n serverSocket.listen((Socket socket) {\n socket.write('Hello, client.');\n });\n });\n }\n\n## Other resources\n\n* HttpServer is a Stream. Refer to the [Stream] class for information\nabout the streaming qualities of an HttpServer.\nPausing the subscription of the stream, pauses at the OS level.\n\n* The [shelf](https://pub.dartlang.org/packages/shelf)\npackage on pub.dartlang.org contains a set of high-level classes that,\ntogether with this class, makes it easy to provide content through HTTP\nservers.", "detail": "", "kind": 7, "label": "HttpServer" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemMoveEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for moving of file system objects.", "detail": "", "kind": 7, "label": "FileSystemMoveEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessResult", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[ProcessResult] represents the result of running a non-interactive\nprocess started with [Process.run] or [Process.runSync].", "detail": "", "kind": 7, "label": "ProcessResult" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HandshakeException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An exception that happens in the handshake phase of establishing\na secure network connection.", "detail": "", "kind": 7, "label": "HandshakeException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientBasicCredentials", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Represents credentials for basic authentication.", "detail": "", "kind": 7, "label": "HttpClientBasicCredentials" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CertificateException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An exception that happens in the handshake phase of establishing\na secure network connection, when looking up or verifying a\ncertificate.", "detail": "", "kind": 7, "label": "CertificateException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TlsException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A secure networking exception caused by a failure in the\n TLS/SSL protocol.", "detail": "", "kind": 7, "label": "TlsException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocketException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "WebSocketException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Cookie", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Representation of a cookie. For cookies received by the server as\nCookie header values only [:name:] and [:value:] fields will be\nset. When building a cookie for the 'set-cookie' header in the server\nand when receiving cookies in the client as 'set-cookie' headers all\nfields can be used.", "detail": "", "kind": 7, "label": "Cookie" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibOption", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Exposes ZLib options for input parameters.\n\nSee http://www.zlib.net/manual.html for more documentation.", "detail": "", "kind": 7, "label": "ZLibOption" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpHeaders", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Headers for HTTP requests and responses.\n\nIn some situations, headers are immutable:\n\n* HttpRequest and HttpClientResponse always have immutable headers.\n\n* HttpResponse and HttpClientRequest have immutable headers\n from the moment the body is written to.\n\nIn these situations, the mutating methods throw exceptions.\n\nFor all operations on HTTP headers the header name is\ncase-insensitive.\n\nTo set the value of a header use the `set()` method:\n\n request.headers.set(HttpHeaders.cacheControlHeader,\n 'max-age=3600, must-revalidate');\n\nTo retrieve the value of a header use the `value()` method:\n\n print(request.headers.value(HttpHeaders.userAgentHeader));\n\nAn HttpHeaders object holds a list of values for each name\nas the standard allows. In most cases a name holds only a single value,\nThe most common mode of operation is to use `set()` for setting a value,\nand `value()` for retrieving a value.", "detail": "", "kind": 7, "label": "HttpHeaders" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DetachedSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "When detaching a socket from either the [:HttpServer:] or the\n[:HttpClient:] due to a HTTP connection upgrade there might be\nunparsed data already read from the socket. This unparsed data\ntogether with the detached socket is returned in an instance of\nthis class.", "detail": "", "kind": 7, "label": "DetachedSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessSignal", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "On Posix systems, [ProcessSignal] is used to send a specific signal\nto a child process, see [:Process.kill:].\n\nSome [ProcessSignal]s can also be watched, as a way to intercept the default\nsignal handler and implement another. See [ProcessSignal.watch] for more\ninformation.", "detail": "", "kind": 7, "label": "ProcessSignal" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SignalException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "SignalException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BytesBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Builds a list of bytes, allowing bytes and lists of bytes to be added at the\nend.\n\nUsed to efficiently collect bytes and lists of bytes.", "detail": "", "kind": 7, "label": "BytesBuilder" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOSink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A combined byte and text output.\n\nAn [IOSink] combines a [StreamSink] of bytes with a [StringSink],\nand allows easy output of both bytes and text.\n\nWriting text ([write]) and adding bytes ([add]) may be interleaved freely.\n\nWhile a stream is being added using [addStream], any further attempts\nto add or write to the [IOSink] will fail until the [addStream] completes.\n\nIt is an error to add data to the [IOSink] after the sink is closed.", "detail": "", "kind": 7, "label": "IOSink" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RedirectInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Redirect information.", "detail": "", "kind": 7, "label": "RedirectInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpConnectionInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information about an [HttpRequest], [HttpResponse], [HttpClientRequest], or\n[HttpClientResponse] connection.", "detail": "", "kind": 7, "label": "HttpConnectionInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SystemEncoding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The system encoding is the current code page on Windows and UTF-8 on Linux\nand Mac.", "detail": "", "kind": 7, "label": "SystemEncoding" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Directory", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A reference to a directory (or _folder_) on the file system.\n\nA Directory instance is an object holding a [path] on which operations can\nbe performed. The path to the directory can be [absolute] or relative.\nYou can get the parent directory using the getter [parent],\na property inherited from [FileSystemEntity].\n\nIn addition to being used as an instance to access the file system,\nDirectory has a number of static properties, such as [systemTemp],\nwhich gets the system's temporary directory, and the getter and setter\n[current], which you can use to access or change the current directory.\n\nCreate a new Directory object with a pathname to access the specified\ndirectory on the file system from your program.\n\n var myDir = new Directory('myDir');\n\nMost methods in this class occur in synchronous and asynchronous pairs,\nfor example, [create] and [createSync].\nUnless you have a specific reason for using the synchronous version\nof a method, prefer the asynchronous version to avoid blocking your program.\n\n## Create a directory\n\nThe following code sample creates a directory using the [create] method.\nBy setting the `recursive` parameter to true, you can create the\nnamed directory and all its necessary parent directories,\nif they do not already exist.\n\n import 'dart:io';\n\n void main() {\n // Creates dir/ and dir/subdir/.\n new Directory('dir/subdir').create(recursive: true)\n // The created directory is returned as a Future.\n .then((Directory directory) {\n print(directory.path);\n });\n }\n\n## List a directory\n\nUse the [list] or [listSync] methods to get the files and directories\ncontained by a directory.\nSet `recursive` to true to recursively list all subdirectories.\nSet `followLinks` to true to follow symbolic links.\nThe list method returns a [Stream] that provides FileSystemEntity\nobjects. Use the listen callback function to process each object\nas it become available.\n\n import 'dart:io';\n\n void main() {\n // Get the system temp directory.\n var systemTempDir = Directory.systemTemp;\n\n // List directory contents, recursing into sub-directories,\n // but not following symbolic links.\n systemTempDir.list(recursive: true, followLinks: false)\n .listen((FileSystemEntity entity) {\n print(entity.path);\n });\n }\n\n## The use of Futures\n\nI/O operations can block a program for some period of time while it waits for\nthe operation to complete. To avoid this, all\nmethods involving I/O have an asynchronous variant which returns a [Future].\nThis future completes when the I/O operation finishes. While the I/O\noperation is in progress, the Dart program is not blocked,\nand can perform other operations.\n\nFor example,\nthe [exists] method, which determines whether the directory exists,\nreturns a boolean value using a Future.\nUse `then` to register a callback function, which is called when\nthe value is ready.\n\n import 'dart:io';\n\n main() {\n final myDir = new Directory('dir');\n myDir.exists().then((isThere) {\n isThere ? print('exists') : print('non-existent');\n });\n }\n\n\nIn addition to exists, the [stat], [rename], and\nother methods, return Futures.\n\n## Other resources\n\n* [Dart by Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)\n provides additional task-oriented code samples that show how to use\n various API from the Directory class and the related [File] class.\n\n* [I/O for Command-Line\n Apps](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartio---io-for-command-line-apps)\n a section from _A Tour of the Dart Libraries_ covers files and directories.\n\n* [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),\n a tutorial about writing command-line apps, includes information about\n files and directories.", "detail": "", "kind": 7, "label": "Directory" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessStartMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Modes for running a new process.", "detail": "", "kind": 7, "label": "ProcessStartMode" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IOOverrides", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "This class facilitates overriding various APIs of dart:io with mock\nimplementations.\n\nThis abstract base class should be extended with overrides for the\noperations needed to construct mocks. The implementations in this base class\ndefault to the actual dart:io implementation. For example:\n\n```\nclass MyDirectory implements Directory {\n ...\n // An implementation of the Directory interface\n ...\n}\n\nmain() {\n IOOverrides.runZoned(() {\n ...\n // Operations will use MyDirectory instead of dart:io's Directory\n // implementation whenever Directory is used.\n ...\n }, createDirectory: (String path) => new MyDirectory(path));\n}\n```", "detail": "", "kind": 7, "label": "IOOverrides" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "InternetAddressType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[InternetAddressType] is the type an [InternetAddress]. Currently,\nIP version 4 (IPv4) and IP version 6 (IPv6) are supported.", "detail": "", "kind": 7, "label": "InternetAddressType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSecureServerSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The RawSecureServerSocket is a server socket, providing a stream of low-level\n[RawSecureSocket]s.\n\nSee [RawSecureSocket] for more info.", "detail": "", "kind": 7, "label": "RawSecureServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemModifyEvent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "File system event for modifications of file system objects.", "detail": "", "kind": 7, "label": "FileSystemModifyEvent" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "GZipCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [GZipCodec] encodes raw bytes to GZip compressed bytes and decodes GZip\ncompressed bytes to raw bytes.\n\nThe difference between [ZLibCodec] and [GZipCodec] is that the [GZipCodec]\nwraps the `ZLib` compressed bytes in `GZip` frames.", "detail": "", "kind": 7, "label": "GZipCodec" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "HttpException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StdoutException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "StdoutException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSocketOption", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawSocketOption] is used as a parameter to [Socket.setRawOption] and\n[RawSocket.setRawOption] to set customize the behaviour of the underlying\nsocket.\n\nIt allows for fine grained control of the socket options, and its values will\nbe passed to the underlying platform's implementation of setsockopt and\ngetsockopt.", "detail": "", "kind": 7, "label": "RawSocketOption" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Link", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "[Link] objects are references to filesystem links.\n", "detail": "", "kind": 7, "label": "Link" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemEntityType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The type of an entity on the file system, such as a file, directory, or link.\n\nThese constants are used by the [FileSystemEntity] class\nto indicate the object's type.\n", "detail": "", "kind": 7, "label": "FileSystemEntityType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientResponse", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "HTTP response for a client connection.\n\nThe body of a [HttpClientResponse] object is a\n[Stream] of data from the server. Listen to the body to handle\nthe data and be notified when the entire body is received.\n\n new HttpClient().get('localhost', 80, '/file.txt')\n .then((HttpClientRequest request) => request.close())\n .then((HttpClientResponse response) {\n response.transform(utf8.decoder).listen((contents) {\n // handle data\n });\n });", "detail": "", "kind": 7, "label": "HttpClientResponse" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawSocket] is a low-level interface to a socket, exposing the raw\nevents signaled by the system. It's a [Stream] of [RawSocketEvent]s.", "detail": "", "kind": 7, "label": "RawSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawServerSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A [RawServerSocket] represents a listening socket, and provides a\nstream of low-level [RawSocket] objects, one for each connection\nmade to the listening socket.\n\nSee [RawSocket] for more info.", "detail": "", "kind": 7, "label": "RawServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpConnectionsInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Summary statistics about an [HttpServer]s current socket connections.", "detail": "", "kind": 7, "label": "HttpConnectionsInfo" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Exception thrown when a file operation fails.", "detail": "", "kind": 7, "label": "FileSystemException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SecureSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A high-level class for communicating securely over a TCP socket, using\nTLS and SSL. The [SecureSocket] exposes both a [Stream] and an\n[IOSink] interface, making it ideal for using together with\nother [Stream]s.", "detail": "", "kind": 7, "label": "SecureSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SocketOption", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [SocketOption] is used as a parameter to [Socket.setOption] and\n[RawSocket.setOption] to set customize the behaviour of the underlying\nsocket.", "detail": "", "kind": 7, "label": "SocketOption" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpDate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Utility functions for working with dates with HTTP specific date\nformats.", "detail": "", "kind": 7, "label": "HttpDate" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpClientRequest", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "HTTP request for a client connection.\n\nTo set up a request, set the headers using the headers property\nprovided in this class and write the data to the body of the request.\nHttpClientRequest is an [IOSink]. Use the methods from IOSink,\nsuch as writeCharCode(), to write the body of the HTTP\nrequest. When one of the IOSink methods is used for the first\ntime, the request header is sent. Calling any methods that\nchange the header after it is sent throws an exception.\n\nWhen writing string data through the [IOSink] the\nencoding used is determined from the \"charset\" parameter of\nthe \"Content-Type\" header.\n\n HttpClientRequest request = ...\n request.headers.contentType\n = new ContentType(\"application\", \"json\", charset: \"utf-8\");\n request.write(...); // Strings written will be UTF-8 encoded.\n\nIf no charset is provided the default of ISO-8859-1 (Latin 1) is\nbe used.\n\n HttpClientRequest request = ...\n request.headers.add(HttpHeaders.contentTypeHeader, \"text/plain\");\n request.write(...); // Strings written will be ISO-8859-1 encoded.\n\nAn exception is thrown if you use an unsupported encoding and the\n`write()` method being used takes a string parameter.", "detail": "", "kind": 7, "label": "HttpClientRequest" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Platform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information about the environment in which the current program is running.\n\nPlatform provides information such as the operating system,\nthe hostname of the computer, the value of environment variables,\nthe path to the running program,\nand so on.\n\n## Get the URI to the current Dart script\n\nUse the [script] getter to get the URI to the currently running\nDart script.\n\n import 'dart:io' show Platform;\n\n void main() {\n // Get the URI of the script being run.\n var uri = Platform.script;\n // Convert the URI to a path.\n var path = uri.toFilePath();\n }\n\n## Get the value of an environment variable\n\nThe [environment] getter returns a the names and values of environment\nvariables in a [Map] that contains key-value pairs of strings. The Map is\nunmodifiable. This sample shows how to get the value of the `PATH`\nenvironment variable.\n\n import 'dart:io' show Platform;\n\n void main() {\n Map<String, String> envVars = Platform.environment;\n print(envVars['PATH']);\n }\n\n## Determine the OS\n\nYou can get the name of the operating system as a string with the\n[operatingSystem] getter. You can also use one of the static boolean\ngetters: [isMacOS], [isLinux], and [isWindows].\n\n import 'dart:io' show Platform, stdout;\n\n void main() {\n // Get the operating system as a string.\n String os = Platform.operatingSystem;\n // Or, use a predicate getter.\n if (Platform.isMacOS) {\n print('is a Mac');\n } else {\n print('is not a Mac');\n }\n }\n\n## Other resources\n\n[Dart by Example](https://www.dartlang.org/dart-by-example/#dart-io-and-command-line-apps)\nprovides additional task-oriented code samples that show how to use\nvarious API from the [dart:io] library.", "detail": "", "kind": 7, "label": "Platform" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileSystemEntity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The common super class for [File], [Directory], and [Link] objects.\n\n[FileSystemEntity] objects are returned from directory listing\noperations. To determine if a FileSystemEntity is a [File], a\n[Directory], or a [Link] perform a type check:\n\n if (entity is File) (entity as File).readAsStringSync();\n\nYou can also use the [type] or [typeSync] methods to determine\nthe type of a file system object.\n\nMost methods in this class occur in synchronous and asynchronous pairs,\nfor example, [exists] and [existsSync].\nUnless you have a specific reason for using the synchronous version\nof a method, prefer the asynchronous version to avoid blocking your program.\n\nHere's the exists method in action:\n\n entity.exists().then((isThere) {\n isThere ? print('exists') : print('non-existent');\n });\n\n\n## Other resources\n\n* [Dart by\n Example](https://www.dartlang.org/dart-by-example/#files-directories-and-symlinks)\n provides additional task-oriented code samples that show how to use various\n API from the [Directory] class and the [File] class, both subclasses of\n FileSystemEntity.\n\n* [I/O for Command-Line\n Apps](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartio---io-for-command-line-apps),\n a section from _A Tour of the Dart Libraries_ covers files and directories.\n\n* [Write Command-Line Apps](https://www.dartlang.org/docs/tutorials/cmdline/),\n a tutorial about writing command-line apps, includes information about\n files and directories.", "detail": "", "kind": 7, "label": "FileSystemEntity" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HttpResponse", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An HTTP response, which returns the headers and data\nfrom the server to the client in response to an HTTP request.\n\nEvery HttpRequest object provides access to the associated [HttpResponse]\nobject through the `response` property.\nThe server sends its response to the client by writing to the\nHttpResponse object.\n\n## Writing the response\n\nThis class implements [IOSink].\nAfter the header has been set up, the methods\nfrom IOSink, such as `writeln()`, can be used to write\nthe body of the HTTP response.\nUse the `close()` method to close the response and send it to the client.\n\n server.listen((HttpRequest request) {\n request.response.write('Hello, world!');\n request.response.close();\n });\n\nWhen one of the IOSink methods is used for the\nfirst time, the request header is sent. Calling any methods that\nchange the header after it is sent throws an exception.\n\n## Setting the headers\n\nThe HttpResponse object has a number of properties for setting up\nthe HTTP headers of the response.\nWhen writing string data through the IOSink, the encoding used\nis determined from the \"charset\" parameter of the\n\"Content-Type\" header.\n\n HttpResponse response = ...\n response.headers.contentType\n = new ContentType(\"application\", \"json\", charset: \"utf-8\");\n response.write(...); // Strings written will be UTF-8 encoded.\n\nIf no charset is provided the default of ISO-8859-1 (Latin 1) will\nbe used.\n\n HttpResponse response = ...\n response.headers.add(HttpHeaders.contentTypeHeader, \"text/plain\");\n response.write(...); // Strings written will be ISO-8859-1 encoded.\n\nAn exception is thrown if you use the `write()` method\nwhile an unsupported content-type is set.", "detail": "", "kind": 7, "label": "HttpResponse" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawSynchronousSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A low-level class for communicating synchronously over a TCP socket.\n\nWarning: [RawSynchronousSocket] should probably only be used to connect to\n'localhost'. The operations below will block the calling thread to wait for\na response from the network. The thread can process no other events while\nwaiting for these operations to complete. [RawSynchronousSocket] is not\nsuitable for applications that require high performance or asynchronous I/O\nsuch as a server. Instead such applications should use the non-blocking\nsockets and asynchronous operations in the Socket or RawSocket classes.", "detail": "", "kind": 7, "label": "RawSynchronousSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "X509Certificate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "X509Certificate represents an SSL certificate, with accessors to\nget the fields of the certificate.", "detail": "", "kind": 7, "label": "X509Certificate" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Process", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The means to execute a program.\n\nUse the static [start] and [run] methods to start a new process.\nThe run method executes the process non-interactively to completion.\nIn contrast, the start method allows your code to interact with the\nrunning process.\n\n## Start a process with the run method\n\nThe following code sample uses the run method to create a process\nthat runs the UNIX command `ls`, which lists the contents of a directory.\nThe run method completes with a [ProcessResult] object when the process\nterminates. This provides access to the output and exit code from the\nprocess. The run method does not return a Process object; this prevents your\ncode from interacting with the running process.\n\n import 'dart:io';\n\n main() {\n // List all files in the current directory in UNIX-like systems.\n Process.run('ls', ['-l']).then((ProcessResult results) {\n print(results.stdout);\n });\n }\n\n## Start a process with the start method\n\nThe following example uses start to create the process.\nThe start method returns a [Future] for a Process object.\nWhen the future completes the process is started and\nyour code can interact with the\nProcess: writing to stdin, listening to stdout, and so on.\n\nThe following sample starts the UNIX `cat` utility, which when given no\ncommand-line arguments, echos its input.\nThe program writes to the process's standard input stream\nand prints data from its standard output stream.\n\n import 'dart:io';\n import 'dart:convert';\n\n main() {\n Process.start('cat', []).then((Process process) {\n process.stdout\n .transform(utf8.decoder)\n .listen((data) { print(data); });\n process.stdin.writeln('Hello, world!');\n process.stdin.writeln('Hello, galaxy!');\n process.stdin.writeln('Hello, universe!');\n });\n }\n\n## Standard I/O streams\n\nAs seen in the previous code sample, you can interact with the Process's\nstandard output stream through the getter [stdout],\nand you can interact with the Process's standard input stream through\nthe getter [stdin].\nIn addition, Process provides a getter [stderr] for using the Process's\nstandard error stream.\n\nA Process's streams are distinct from the top-level streams\nfor the current program.\n\n## Exit codes\n\nCall the [exitCode] method to get the exit code of the process.\nThe exit code indicates whether the program terminated successfully\n(usually indicated with an exit code of 0) or with an error.\n\nIf the start method is used, the exitCode is available through a future\non the Process object (as shown in the example below).\nIf the run method is used, the exitCode is available\nthrough a getter on the ProcessResult instance.\n\n import 'dart:io';\n\n main() {\n Process.start('ls', ['-l']).then((process) {\n // Get the exit code from the new process.\n process.exitCode.then((exitCode) {\n print('exit code: $exitCode');\n });\n });\n }\n\n## Other resources\n\n[Dart by Example](https://www.dartlang.org/dart-by-example/#dart-io-and-command-line-apps)\nprovides additional task-oriented code samples that show how to use\nvarious API from the [dart:io] library.", "detail": "", "kind": 7, "label": "Process" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WebSocketTransformer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [WebSocketTransformer] provides the ability to upgrade a\n[HttpRequest] to a [WebSocket] connection. It supports both\nupgrading a single [HttpRequest] and upgrading a stream of\n[HttpRequest]s.\n\nTo upgrade a single [HttpRequest] use the static [upgrade] method.\n\n HttpServer server;\n server.listen((request) {\n if (...) {\n WebSocketTransformer.upgrade(request).then((websocket) {\n ...\n });\n } else {\n // Do normal HTTP request processing.\n }\n });\n\nTo transform a stream of [HttpRequest] events as it implements a\nstream transformer that transforms a stream of HttpRequest into a\nstream of WebSockets by upgrading each HttpRequest from the HTTP or\nHTTPS server, to the WebSocket protocol.\n\n server.transform(new WebSocketTransformer()).listen((webSocket) => ...);\n\nThis transformer strives to implement WebSockets as specified by RFC6455.", "detail": "", "kind": 7, "label": "WebSocketTransformer" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ProcessException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "ProcessException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StdinException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "StdinException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StdioType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The type of object a standard IO stream is attached to.", "detail": "", "kind": 7, "label": "StdioType" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The modes in which a File can be opened.", "detail": "", "kind": 7, "label": "FileMode" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FileLock", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Type of lock when requesting a lock on a file.", "detail": "", "kind": 7, "label": "FileLock" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SocketException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "SocketException" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SecureServerSocket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [SecureServerSocket] is a server socket, providing a stream of high-level\n[Socket]s.\n\nSee [SecureSocket] for more info.", "detail": "", "kind": 7, "label": "SecureServerSocket" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawZLibFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [RawZLibFilter] class provides a low-level interface to zlib.", "detail": "", "kind": 7, "label": "RawZLibFilter" }, { "data": { "autoImportDisplayUri": "dart:io", "libraryId": 606, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZLibCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The [ZLibCodec] encodes raw bytes to ZLib compressed bytes and decodes ZLib\ncompressed bytes to raw bytes.", "detail": "", "kind": 7, "label": "ZLibCodec" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Capability", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An unforgeable object that comes back as equal when passed through other\nisolates.\n\nSending a capability object to another isolate, and getting it back,\nwill produce an object that is equal to the original.\nThere is no other way to create objects equal to a capability object.\n\nCapabilities can be used as access guards: A remote isolate can send\na request for an operation, but it is only allowed if the request contains\nthe correct capability object.\n\nThis allows exposing the same interface to multiple clients,\nbut restricting some operations to only those clients\nthat have also been given the corresponding capability.\n\nCapabilities can be used inside a single isolate,\nbut they have no advantage over\njust using `new Object` to create a unique object,\nand it offers no real security against other code\nrunning in the same isolate.", "detail": "", "kind": 7, "label": "Capability" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Isolate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An isolated Dart execution context.\n\nAll Dart code runs in an isolate, and code can access classes and values\nonly from the same isolate. Different isolates can communicate by sending\nvalues through ports (see [ReceivePort], [SendPort]).\n\nAn `Isolate` object is a reference to an isolate, usually different from\nthe current isolate.\nIt represents, and can be used to control, the other isolate.\n\nWhen spawning a new isolate, the spawning isolate receives an `Isolate`\nobject representing the new isolate when the spawn operation succeeds.\n\nIsolates run code in its own event loop, and each event may run smaller tasks\nin a nested microtask queue.\n\nAn `Isolate` object allows other isolates to control the event loop\nof the isolate that it represents, and to inspect the isolate,\nfor example by pausing the isolate or by getting events when the isolate\nhas an uncaught error.\n\nThe [controlPort] identifies and gives access to controlling the isolate,\nand the [pauseCapability] and [terminateCapability] guard access\nto some control operations.\nFor example, calling [pause] on an `Isolate` object created without a\n[pauseCapability], has no effect.\n\nThe `Isolate` object provided by a spawn operation will have the\ncontrol port and capabilities needed to control the isolate.\nNew isolate objects can be created without some of these capabilities\nif necessary, using the [Isolate.Isolate] constructor.\n\nAn `Isolate` object cannot be sent over a `SendPort`, but the control port\nand capabilities can be sent, and can be used to create a new functioning\n`Isolate` object in the receiving port's isolate.", "detail": "", "kind": 7, "label": "Isolate" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RawReceivePort", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "detail": "", "kind": 7, "label": "RawReceivePort" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ReceivePort", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Together with [SendPort], the only means of communication between isolates.\n\n[ReceivePort]s have a `sendPort` getter which returns a [SendPort].\nAny message that is sent through this [SendPort]\nis delivered to the [ReceivePort] it has been created from. There, the\nmessage is dispatched to the `ReceivePort`'s listener.\n\nA [ReceivePort] is a non-broadcast stream. This means that it buffers\nincoming messages until a listener is registered. Only one listener can\nreceive messages. See [Stream.asBroadcastStream] for transforming the port\nto a broadcast stream.\n\nA [ReceivePort] may have many [SendPort]s.", "detail": "", "kind": 7, "label": "ReceivePort" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IsolateSpawnException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Thrown when an isolate cannot be created.", "detail": "", "kind": 7, "label": "IsolateSpawnException" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RemoteError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Description of an error from another isolate.\n\nThis error has the same `toString()` and `stackTrace.toString()` behavior\nas the original error, but has no other features of the original error.", "detail": "", "kind": 7, "label": "RemoteError" }, { "data": { "autoImportDisplayUri": "dart:isolate", "libraryId": 604, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SendPort", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Sends messages to its [ReceivePort]s.\n\n[SendPort]s are created from [ReceivePort]s. Any message sent through\na [SendPort] is delivered to its corresponding [ReceivePort]. There might be\nmany [SendPort]s for the same [ReceivePort].\n\n[SendPort]s can be transmitted to other isolates, and they preserve equality\nwhen sent.", "detail": "", "kind": 7, "label": "SendPort" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Codec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Codec] encodes and (if supported) decodes data.\n\nCodecs can be fused. For example fusing [json] and [utf8] produces\nan encoder that can convert Json objects directly to bytes, or can decode\nbytes directly to json objects.\n\nFused codecs generally attempt to optimize the operations and can be faster\nthan executing each step of an encoding separately.", "detail": "", "kind": 7, "label": "Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Utf8Encoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts strings to their UTF-8 code units (a list of\nunsigned 8-bit integers).", "detail": "", "kind": 7, "label": "Utf8Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonUnsupportedObjectError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by JSON serialization if an object cannot be serialized.\n\nThe [unsupportedObject] field holds that object that failed to be serialized.\n\nIf an object isn't directly serializable, the serializer calls the `toJson`\nmethod on the object. If that call fails, the error will be stored in the\n[cause] field. If the call returns an object that isn't directly\nserializable, the [cause] is null.", "detail": "", "kind": 7, "label": "JsonUnsupportedObjectError" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Base64Codec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [base64](https://tools.ietf.org/html/rfc4648) encoder and decoder.\n\nA [Base64Codec] allows base64 encoding bytes into ASCII strings and\ndecoding valid encodings back to bytes.\n\nThis implementation only handles the simplest RFC 4648 base64 and base64url\nencodings.\nIt does not allow invalid characters when decoding and it requires,\nand generates, padding so that the input is always a multiple of four\ncharacters.", "detail": "", "kind": 7, "label": "Base64Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringConversionSinkMixin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides a mixin for converters that need to accept String\ninputs.", "detail": "", "kind": 7, "label": "StringConversionSinkMixin" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonCyclicError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Reports that an object could not be stringified due to cyclic references.\n\nAn object that references itself cannot be serialized by\n[JsonCodec.encode]/[JsonEncoder.convert].\nWhen the cycle is detected, a [JsonCyclicError] is thrown.", "detail": "", "kind": 7, "label": "JsonCyclicError" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteConversionSinkBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides a base-class for converters that need to accept byte\ninputs.", "detail": "", "kind": 7, "label": "ByteConversionSinkBase" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Base64Decoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Decoder for base64 encoded data.\n\nThis decoder accepts both base64 and base64url (\"url-safe\") encodings.\n\nThe encoding is required to be properly padded.", "detail": "", "kind": 7, "label": "Base64Decoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringConversionSink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides an interface for converters to\nefficiently transmit String data.\n\nInstead of limiting the interface to one non-chunked String it accepts\npartial strings or can be transformed into a byte sink that\naccepts UTF-8 code units.\n\nThis abstract class will likely get more methods over time. Implementers are\nurged to extend [StringConversionSinkBase] or to mix in\n[StringConversionSinkMixin], to ensure that their class covers the newly\nadded methods.", "detail": "", "kind": 7, "label": "StringConversionSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsciiCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An [AsciiCodec] allows encoding strings as ASCII bytes\nand decoding ASCII bytes to strings.", "detail": "", "kind": 7, "label": "AsciiCodec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonDecoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class parses JSON strings and builds the corresponding objects.", "detail": "", "kind": 7, "label": "JsonDecoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Converter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Converter] converts data from one representation into another.\n\nIt is recommended that implementations of `Converter` extend this class,\nto inherit any further methods that may be added to the class.", "detail": "", "kind": 7, "label": "Converter" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonEncoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts JSON objects to strings.", "detail": "", "kind": 7, "label": "JsonEncoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Base64Encoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Base64 and base64url encoding converter.\n\nEncodes lists of bytes using base64 or base64url encoding.\n\nThe results are ASCII strings using a restricted alphabet.", "detail": "", "kind": 7, "label": "Base64Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsciiEncoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts strings of only ASCII characters to bytes.", "detail": "", "kind": 7, "label": "AsciiEncoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringConversionSinkBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides a base-class for converters that need to accept String\ninputs.", "detail": "", "kind": 7, "label": "StringConversionSinkBase" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonCodec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [JsonCodec] encodes JSON objects to strings and decodes strings to\nJSON objects.\n\nExamples:\n\n var encoded = json.encode([1, 2, { \"a\": null }]);\n var decoded = json.decode('[\"foo\", { \"bar\": 499 }]');", "detail": "", "kind": 7, "label": "JsonCodec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Latin1Decoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts Latin-1 bytes (lists of unsigned 8-bit integers)\nto a string.", "detail": "", "kind": 7, "label": "Latin1Decoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Utf8Codec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Utf8Codec] encodes strings to utf-8 code units (bytes) and decodes\nUTF-8 code units to strings.", "detail": "", "kind": 7, "label": "Utf8Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Encoding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Open-ended Encoding enum.", "detail": "", "kind": 7, "label": "Encoding" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Latin1Encoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts strings of only ISO Latin-1 characters to bytes.", "detail": "", "kind": 7, "label": "Latin1Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClosableStringSink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [ClosableStringSink] extends the [StringSink] interface by adding a\n`close` method.", "detail": "", "kind": 7, "label": "ClosableStringSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "LineSplitter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [StreamTransformer] that splits a [String] into individual lines.\n\nA line is terminated by either a CR (U+000D), a LF (U+000A), a\nCR+LF sequence (DOS line ending),\nand a final non-empty line can be ended by the end of the string.\n\nThe returned lines do not contain the line terminators.", "detail": "", "kind": 7, "label": "LineSplitter" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HtmlEscapeMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "HTML escape modes.\n\nAllows specifying a mode for HTML escaping that depend on the context\nwhere the escaped result is going to be used.\nThe relevant contexts are:\n\n* as text content of an HTML element.\n* as value of a (single- or double-) quoted attribute value.\n\nAll modes require escaping of `&` (ampersand) characters, and may\nenable escaping of more characters.\n\nCustom escape modes can be created using the [HtmlEscapeMode.HtmlEscapeMode]\nconstructor.", "detail": "", "kind": 7, "label": "HtmlEscapeMode" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteConversionSink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The [ByteConversionSink] provides an interface for converters to\nefficiently transmit byte data.\n\nInstead of limiting the interface to one non-chunked list of bytes it\naccepts its input in chunks (themselves being lists of bytes).\n\nThis abstract class will likely get more methods over time. Implementers are\nurged to extend or mix in [ByteConversionSinkBase] to ensure that their\nclass covers the newly added methods.", "detail": "", "kind": 7, "label": "ByteConversionSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ChunkedConversionSink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [ChunkedConversionSink] is used to transmit data more efficiently between\ntwo converters during chunked conversions.\n\nThe basic `ChunkedConversionSink` is just a [Sink], and converters should\nwork with a plain `Sink`, but may work more efficiently with certain\nspecialized types of `ChunkedConversionSink`.\n\nIt is recommended that implementations of `ChunkedConversionSink` extend\nthis class, to inherit any further methods that may be added to the class.", "detail": "", "kind": 7, "label": "ChunkedConversionSink" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "JsonUtf8Encoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Encoder that encodes a single object as a UTF-8 encoded JSON string.\n\nThis encoder works equivalently to first converting the object to\na JSON string, and then UTF-8 encoding the string, but without\ncreating an intermediate string.", "detail": "", "kind": 7, "label": "JsonUtf8Encoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HtmlEscape", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Converter which escapes characters with special meaning in HTML.\n\nThe converter finds characters that are significant in HTML source and\nreplaces them with corresponding HTML entities.\n\nThe characters that need escaping in HTML are:\n\n* `&` (ampersand) always need to be escaped.\n* `<` (less than) and '>' (greater than) when inside an element.\n* `\"` (quote) when inside a double-quoted attribute value.\n* `'` (apostrophe) when inside a single-quoted attribute value.\n Apostrophe is escaped as `'` instead of `'` since\n not all browsers understand `'`.\n* `/` (slash) is recommended to be escaped because it may be used\n to terminate an element in some HTML dialects.\n\nEscaping `>` (greater than) isn't necessary, but the result is often\nfound to be easier to read if greater-than is also escaped whenever\nless-than is.", "detail": "", "kind": 7, "label": "HtmlEscape" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Utf8Decoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class converts UTF-8 code units (lists of unsigned 8-bit integers)\nto a string.", "detail": "", "kind": 7, "label": "Utf8Decoder" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Latin1Codec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Latin1Codec] encodes strings to ISO Latin-1 (aka ISO-8859-1) bytes\nand decodes Latin-1 bytes to strings.", "detail": "", "kind": 7, "label": "Latin1Codec" }, { "data": { "autoImportDisplayUri": "dart:convert", "libraryId": 590, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsciiDecoder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "AsciiDecoder" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EventSink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A [Sink] that supports adding errors.\n\nThis makes it suitable for capturing the results of asynchronous\ncomputations, which can complete with a value or an error.\n\nThe [EventSink] has been designed to handle asynchronous events from\n[Stream]s. See, for example, [Stream.eventTransformed] which uses\n`EventSink`s to transform events.", "detail": "", "kind": 7, "label": "EventSink" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FutureOr", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A type representing values that are either `Future<T>` or `T`.\n\nThis class declaration is a public stand-in for an internal\nfuture-or-value generic type. References to this class are resolved to the\ninternal type.\n\nIt is a compile-time error for any class to extend, mix in or implement\n`FutureOr`.\n\nNote: the `FutureOr<T>` type is interpreted as `dynamic` in non strong-mode.\n\n# Examples\n``` dart\n// The `Future<T>.then` function takes a callback [f] that returns either\n// an `S` or a `Future<S>`.\nFuture<S> then<S>(FutureOr<S> f(T x), ...);\n\n// `Completer<T>.complete` takes either a `T` or `Future<T>`.\nvoid complete(FutureOr<T> value);\n```\n\n# Advanced\nThe `FutureOr<int>` type is actually the \"type union\" of the types `int` and\n`Future<int>`. This type union is defined in such a way that\n`FutureOr<Object>` is both a super- and sub-type of `Object` (sub-type\nbecause `Object` is one of the types of the union, super-type because\n`Object` is a super-type of both of the types of the union). Together it\nmeans that `FutureOr<Object>` is equivalent to `Object`.\n\nAs a corollary, `FutureOr<Object>` is equivalent to\n`FutureOr<FutureOr<Object>>`, `FutureOr<Future<Object>>` is equivalent to\n`Future<Object>`.", "detail": "", "kind": 7, "label": "FutureOr" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A controller with the stream it controls.\n\nThis controller allows sending data, error and done events on\nits [stream].\nThis class can be used to create a simple stream that others\ncan listen on, and to push events to that stream.\n\nIt's possible to check whether the stream is paused or not, and whether\nit has subscribers or not, as well as getting a callback when either of\nthese change.", "detail": "", "kind": 7, "label": "StreamController" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamTransformer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Transforms a Stream.\n\nWhen a stream's [Stream.transform] method is invoked with a\n[StreamTransformer], the stream calls the [bind] method on the provided\ntransformer. The resulting stream is then returned from the\n[Stream.transform] method.\n\nConceptually, a transformer is simply a function from [Stream] to [Stream]\nthat is encapsulated into a class.\n\nIt is good practice to write transformers that can be used multiple times.\n\nAll other transforming methods on [Stream], such as [Stream.map],\n[Stream.where] or [Stream.expand] can be implemented using\n[Stream.transform]. A [StreamTransformer] is thus very powerful but often\nalso a bit more complicated to use.", "detail": "", "kind": 7, "label": "StreamTransformer" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RunUnaryHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T arg) f, T arg) → R", "kind": 7, "label": "RunUnaryHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegisterBinaryCallbackHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T1 arg1, T2 arg2) f) → ZoneBinaryCallback<R, T1, T2>", "kind": 7, "label": "RegisterBinaryCallbackHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Future", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An object representing a delayed computation.\n\nA [Future] is used to represent a potential value, or error,\nthat will be available at some time in the future.\nReceivers of a [Future] can register callbacks\nthat handle the value or error once it is available.\nFor example:\n\n Future<int> future = getFuture();\n future.then((value) => handleValue(value))\n .catchError((error) => handleError(error));\n\nA [Future] can be completed in two ways:\nwith a value (\"the future succeeds\")\nor with an error (\"the future fails\").\nUsers can install callbacks for each case.\n\nIn some cases we say that a future is completed with another future.\nThis is a short way of stating that the future is completed in the same way,\nwith the same value or error,\nas the other future once that completes.\nWhenever a function in the core library may complete a future\n(for example [Completer.complete] or [new Future.value]),\nthen it also accepts another future and does this work for the developer.\n\nThe result of registering a pair of callbacks is a new Future (the\n\"successor\") which in turn is completed with the result of invoking the\ncorresponding callback.\nThe successor is completed with an error if the invoked callback throws.\nFor example:\n```\nFuture<int> successor = future.then((int value) {\n // Invoked when the future is completed with a value.\n return 42; // The successor is completed with the value 42.\n },\n onError: (e) {\n // Invoked when the future is completed with an error.\n if (canHandle(e)) {\n return 499; // The successor is completed with the value 499.\n } else {\n throw e; // The successor is completed with the error e.\n }\n });\n```\n\nIf a future does not have a successor when it completes with an error,\nit forwards the error message to the global error-handler.\nThis behavior makes sure that no error is silently dropped.\nHowever, it also means that error handlers should be installed early,\nso that they are present as soon as a future is completed with an error.\nThe following example demonstrates this potential bug:\n```\nvar future = getFuture();\nnew Timer(new Duration(milliseconds: 5), () {\n // The error-handler is not attached until 5 ms after the future has\n // been received. If the future fails before that, the error is\n // forwarded to the global error-handler, even though there is code\n // (just below) to eventually handle the error.\n future.then((value) { useValue(value); },\n onError: (e) { handleError(e); });\n});\n```\n\nWhen registering callbacks, it's often more readable to register the two\ncallbacks separately, by first using [then] with one argument\n(the value handler) and using a second [catchError] for handling errors.\nEach of these will forward the result that they don't handle\nto their successors, and together they handle both value and error result.\nIt also has the additional benefit of the [catchError] handling errors in the\n[then] value callback too.\nUsing sequential handlers instead of parallel ones often leads to code that\nis easier to reason about.\nIt also makes asynchronous code very similar to synchronous code:\n```\n// Synchronous code.\ntry {\n int value = foo();\n return bar(value);\n} catch (e) {\n return 499;\n}\n```\n\nEquivalent asynchronous code, based on futures:\n```\nFuture<int> future = new Future(foo); // Result of foo() as a future.\nfuture.then((int value) => bar(value))\n .catchError((e) => 499);\n```\n\nSimilar to the synchronous code, the error handler (registered with\n[catchError]) is handling any errors thrown by either `foo` or `bar`.\nIf the error-handler had been registered as the `onError` parameter of\nthe `then` call, it would not catch errors from the `bar` call.\n\nFutures can have more than one callback-pair registered. Each successor is\ntreated independently and is handled as if it was the only successor.\n\nA future may also fail to ever complete. In that case, no callbacks are\ncalled.", "detail": "", "kind": 7, "label": "Future" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamConsumer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Abstract interface for a \"sink\" accepting multiple entire streams.\n\nA consumer can accept a number of consecutive streams using [addStream],\nand when no further data need to be added, the [close] method tells the\nconsumer to complete its work and shut down.\n\nThe [Stream.pipe] accepts a `StreamConsumer` and will pass the stream\nto the consumer's [addStream] method. When that completes, it will\ncall [close] and then complete its own returned future.", "detail": "", "kind": 7, "label": "StreamConsumer" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamIterator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An [Iterator] like interface for the values of a [Stream].\n\nThis wraps a [Stream] and a subscription on the stream. It listens\non the stream, and completes the future returned by [moveNext] when the\nnext value becomes available.\n\nThe stream may be paused between calls to [moveNext].", "detail": "", "kind": 7, "label": "StreamIterator" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZoneSpecification", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "This class provides the specification for a forked zone.\n\nWhen forking a new zone (see [Zone.fork]) one can override the default\nbehavior of the zone by providing callbacks. These callbacks must be\ngiven in an instance of this class.\n\nHandlers have the same signature as the same-named methods on [Zone] but\nreceive three additional arguments:\n\n 1. the zone the handlers are attached to (the \"self\" zone).\n 2. a [ZoneDelegate] to the parent zone.\n 3. the zone that first received the request (before the request was\n bubbled up).\n\nHandlers can either stop propagation the request (by simply not calling the\nparent handler), or forward to the parent zone, potentially modifying the\narguments on the way.", "detail": "", "kind": 7, "label": "ZoneSpecification" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "[Stream] wrapper that only exposes the [Stream] interface.", "detail": "", "kind": 7, "label": "StreamView" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamSink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A object that accepts stream events both synchronously and asynchronously.\n\nA [StreamSink] combines the methods from [StreamConsumer] and [EventSink].\n\nThe [EventSink] methods can't be used while the [addStream] is called.\nAs soon as the [addStream]'s [Future] completes with a value, the\n[EventSink] methods can be used again.\n\nIf [addStream] is called after any of the [EventSink] methods, it'll\nbe delayed until the underlying system has consumed the data added by the\n[EventSink] methods.\n\nWhen [EventSink] methods are used, the [done] [Future] can be used to\ncatch any errors.\n\nWhen [close] is called, it will return the [done] [Future].", "detail": "", "kind": 7, "label": "StreamSink" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Timer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A count-down timer that can be configured to fire once or repeatedly.\n\nThe timer counts down from the specified duration to 0.\nWhen the timer reaches 0, the timer invokes the specified callback function.\nUse a periodic timer to repeatedly count down the same interval.\n\nA negative duration is treated the same as a duration of 0.\nIf the duration is statically known to be 0, consider using [run].\n\nFrequently the duration is either a constant or computed as in the\nfollowing example (taking advantage of the multiplication operator of\nthe [Duration] class):\n```dart\nconst timeout = const Duration(seconds: 3);\nconst ms = const Duration(milliseconds: 1);\n\nstartTimeout([int milliseconds]) {\n var duration = milliseconds == null ? timeout : ms * milliseconds;\n return new Timer(duration, handleTimeout);\n}\n...\nvoid handleTimeout() { // callback function\n ...\n}\n```\nNote: If Dart code using Timer is compiled to JavaScript, the finest\ngranularity available in the browser is 4 milliseconds.\n\nSee [Stopwatch] for measuring elapsed time.", "detail": "", "kind": 7, "label": "Timer" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stream", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A source of asynchronous data events.\n\nA Stream provides a way to receive a sequence of events.\nEach event is either a data event, also called an *element* of the stream,\nor an error event, which is a notification that something has failed.\nWhen a stream has emitted all its event,\na single \"done\" event will notify the listener that the end has been reached.\n\nYou [listen] on a stream to make it start generating events,\nand to set up listeners that receive the events.\nWhen you listen, you receive a [StreamSubscription] object\nwhich is the active object providing the events,\nand which can be used to stop listening again,\nor to temporarily pause events from the subscription.\n\nThere are two kinds of streams: \"Single-subscription\" streams and\n\"broadcast\" streams.\n\n*A single-subscription stream* allows only a single listener during the whole\nlifetime of the stream.\nIt doesn't start generating events until it has a listener,\nand it stops sending events when the listener is unsubscribed,\neven if the source of events could still provide more.\n\nListening twice on a single-subscription stream is not allowed, even after\nthe first subscription has been canceled.\n\nSingle-subscription streams are generally used for streaming chunks of\nlarger contiguous data like file I/O.\n\n*A broadcast stream* allows any number of listeners, and it fires\nits events when they are ready, whether there are listeners or not.\n\nBroadcast streams are used for independent events/observers.\n\nIf several listeners want to listen to a single subscription stream,\nuse [asBroadcastStream] to create a broadcast stream on top of the\nnon-broadcast stream.\n\nOn either kind of stream, stream transformations, such as [where] and\n[skip], return the same type of stream as the one the method was called on,\nunless otherwise noted.\n\nWhen an event is fired, the listener(s) at that time will receive the event.\nIf a listener is added to a broadcast stream while an event is being fired,\nthat listener will not receive the event currently being fired.\nIf a listener is canceled, it immediately stops receiving events.\nListening on a broadcast stream can be treated as listening on a new stream\ncontaining only the events that have not yet been emitted when the [listen]\ncall occurs.\nFor example, the [first] getter listens to the stream, then returns the first\nevent that listener receives.\nThis is not necessarily the first even emitted by the stream, but the first\nof the *remaining* events of the broadcast stream.\n\nWhen the \"done\" event is fired, subscribers are unsubscribed before\nreceiving the event. After the event has been sent, the stream has no\nsubscribers. Adding new subscribers to a broadcast stream after this point\nis allowed, but they will just receive a new \"done\" event as soon\nas possible.\n\nStream subscriptions always respect \"pause\" requests. If necessary they need\nto buffer their input, but often, and preferably, they can simply request\ntheir input to pause too.\n\nThe default implementation of [isBroadcast] returns false.\nA broadcast stream inheriting from [Stream] must override [isBroadcast]\nto return `true`.", "detail": "", "kind": 7, "label": "Stream" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "HandleUncaughtErrorHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, Object error, StackTrace stackTrace) → void", "kind": 7, "label": "HandleUncaughtErrorHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ZoneDelegate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An adapted view of the parent zone.\n\nThis class allows the implementation of a zone method to invoke methods on\nthe parent zone while retaining knowledge of the originating zone.\n\nCustom zones (created through [Zone.fork] or [runZoned]) can provide\nimplementations of most methods of zones. This is similar to overriding\nmethods on [Zone], except that this mechanism doesn't require subclassing.\n\nA custom zone function (provided through a [ZoneSpecification]) typically\nrecords or wraps its parameters and then delegates the operation to its\nparent zone using the provided [ZoneDelegate].\n\nWhile zones have access to their parent zone (through [Zone.parent]) it is\nrecommended to call the methods on the provided parent delegate for two\nreasons:\n1. the delegate methods take an additional `zone` argument which is the\n zone the action has been initiated in.\n2. delegate calls are more efficient, since the implementation knows how\n to skip zones that would just delegate to their parents.", "detail": "", "kind": 7, "label": "ZoneDelegate" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamTransformerBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Base class for implementing [StreamTransformer].\n\nContains default implementations of every method except [bind].", "detail": "", "kind": 7, "label": "StreamTransformerBase" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SynchronousStreamController", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A stream controller that delivers its events synchronously.\n\nA synchronous stream controller is intended for cases where\nan already asynchronous event triggers an event on a stream.\n\nInstead of adding the event to the stream in a later microtask,\ncausing extra latency, the event is instead fired immediately by the\nsynchronous stream controller, as if the stream event was\nthe current event or microtask.\n\nThe synchronous stream controller can be used to break the contract\non [Stream], and it must be used carefully to avoid doing so.\n\nThe only advantage to using a [SynchronousStreamController] over a\nnormal [StreamController] is the improved latency.\nOnly use the synchronous version if the improvement is significant,\nand if its use is safe. Otherwise just use a normal stream controller,\nwhich will always have the correct behavior for a [Stream], and won't\naccidentally break other code.\n\nAdding events to a synchronous controller should only happen as the\nvery last part of the handling of the original event.\nAt that point, adding an event to the stream is equivalent to\nreturning to the event loop and adding the event in the next microtask.\n\nEach listener callback will be run as if it was a top-level event\nor microtask. This means that if it throws, the error will be reported as\nuncaught as soon as possible.\nThis is one reason to add the event as the last thing in the original event\nhandler - any action done after adding the event will delay the report of\nerrors in the event listener callbacks.\n\nIf an event is added in a setting that isn't known to be another event,\nit may cause the stream's listener to get that event before the listener\nis ready to handle it. We promise that after calling [Stream.listen],\nyou won't get any events until the code doing the listen has completed.\nCalling [add] in response to a function call of unknown origin may break\nthat promise.\n\nAn [onListen] callback from the controller is *not* an asynchronous event,\nand adding events to the controller in the `onListen` callback is always\nwrong. The events will be delivered before the listener has even received\nthe subscription yet.\n\nThe synchronous broadcast stream controller also has a restrictions that a\nnormal stream controller does not:\nThe [add], [addError], [close] and [addStream] methods *must not* be\ncalled while an event is being delivered.\nThat is, if a callback on a subscription on the controller's stream causes\na call to any of the functions above, the call will fail.\nA broadcast stream may have more than one listener, and if an\nevent is added synchronously while another is being also in the process\nof being added, the latter event might reach some listeners before\nthe former. To prevent that, an event cannot be added while a previous\nevent is being fired.\nThis guarantees that an event is fully delivered when the\nfirst [add], [addError] or [close] returns,\nand further events will be delivered in the correct order.\n\nThis still only guarantees that the event is delivered to the subscription.\nIf the subscription is paused, the actual callback may still happen later,\nand the event will instead be buffered by the subscription.\nBarring pausing, and the following buffered events that haven't been\ndelivered yet, callbacks will be called synchronously when an event is added.\n\nAdding an event to a synchronous non-broadcast stream controller while\nanother event is in progress may cause the second event to be delayed\nand not be delivered synchronously, and until that event is delivered,\nthe controller will not act synchronously.", "detail": "", "kind": 7, "label": "SynchronousStreamController" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TimeoutException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Thrown when a scheduled timeout happens while waiting for an async result.", "detail": "", "kind": 7, "label": "TimeoutException" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegisterCallbackHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function() f) → ZoneCallback<R>", "kind": 7, "label": "RegisterCallbackHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RunHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function() f) → R", "kind": 7, "label": "RunHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeferredLibrary", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Indicates that loading of [libraryName] is deferred.\n\nThis class is obsolete. Instead use the syntax:\nimport \"library.dart\" deferred as prefix;", "detail": "(Deprecated) ", "kind": 7, "label": "DeferredLibrary" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StreamSubscription", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A subscription on events from a [Stream].\n\nWhen you listen on a [Stream] using [Stream.listen],\na [StreamSubscription] object is returned.\n\nThe subscription provides events to the listener,\nand holds the callbacks used to handle the events.\nThe subscription can also be used to unsubscribe from the events,\nor to temporarily pause the events from the stream.", "detail": "", "kind": 7, "label": "StreamSubscription" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegisterUnaryCallbackHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T arg) f) → ZoneUnaryCallback<R, T>", "kind": 7, "label": "RegisterUnaryCallbackHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Zone", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A zone represents an environment that remains stable across asynchronous\ncalls.\n\nCode is always executed in the context of a zone, available as\n[Zone.current]. The initial `main` function runs in the context of the\ndefault zone ([Zone.root]). Code can be run in a different zone using either\n[runZoned], to create a new zone, or [Zone.run] to run code in the context of\nan existing zone likely created using [Zone.fork].\n\nDevelopers can create a new zone that overrides some of the functionality of\nan existing zone. For example, custom zones can replace of modify the\nbehavior of `print`, timers, microtasks or how uncaught errors are handled.\n\nThe [Zone] class is not subclassable, but users can provide custom zones by\nforking an existing zone (usually [Zone.current]) with a [ZoneSpecification].\nThis is similar to creating a new class that extends the base `Zone` class\nand that overrides some methods, except without actually creating a new\nclass. Instead the overriding methods are provided as functions that\nexplicitly take the equivalent of their own class, the \"super\" class and the\n`this` object as parameters.\n\nAsynchronous callbacks always run in the context of the zone where they were\nscheduled. This is implemented using two steps:\n1. the callback is first registered using one of [registerCallback],\n [registerUnaryCallback], or [registerBinaryCallback]. This allows the zone\n to record that a callback exists and potentially modify it (by returning a\n different callback). The code doing the registration (e.g., `Future.then`)\n also remembers the current zone so that it can later run the callback in\n that zone.\n2. At a later point the registered callback is run in the remembered zone.\n\nThis is all handled internally by the platform code and most users don't need\nto worry about it. However, developers of new asynchronous operations,\nprovided by the underlying system or through native extensions, must follow\nthe protocol to be zone compatible.\n\nFor convenience, zones provide [bindCallback] (and the corresponding\n[bindUnaryCallback] and [bindBinaryCallback]) to make it easier to respect\nthe zone contract: these functions first invoke the corresponding `register`\nfunctions and then wrap the returned function so that it runs in the current\nzone when it is later asynchronously invoked.\n\nSimilarly, zones provide [bindCallbackGuarded] (and the corresponding\n[bindUnaryCallbackGuarded] and [bindBinaryCallbackGuarded]), when the\ncallback should be invoked through [Zone.runGuarded].", "detail": "", "kind": 7, "label": "Zone" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RunBinaryHandler", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "(Zone self, ZoneDelegate parent, Zone zone, R Function(T1 arg1, T2 arg2) f, T1 arg1, T2 arg2) → R", "kind": 7, "label": "RunBinaryHandler" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DeferredLoadException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Thrown when a deferred library fails to load.", "detail": "", "kind": 7, "label": "DeferredLoadException" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AsyncError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Pair of error and stack trace. Returned by [Zone.errorCallback].", "detail": "", "kind": 7, "label": "AsyncError" }, { "data": { "autoImportDisplayUri": "dart:async", "libraryId": 1, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Completer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A way to produce Future objects and to complete them later\nwith a value or error.\n\nMost of the time, the simplest way to create a future is to just use\none of the [Future] constructors to capture the result of a single\nasynchronous computation:\n```\nnew Future(() { doSomething(); return result; });\n```\nor, if the future represents the result of a sequence of asynchronous\ncomputations, they can be chained using [Future.then] or similar functions\non [Future]:\n```\nFuture doStuff(){\n return someAsyncOperation().then((result) {\n return someOtherAsyncOperation(result);\n });\n}\n```\nIf you do need to create a Future from scratch — for example,\nwhen you're converting a callback-based API into a Future-based\none — you can use a Completer as follows:\n```\nclass AsyncOperation {\n Completer _completer = new Completer();\n\n Future<T> doOperation() {\n _startOperation();\n return _completer.future; // Send future object back to client.\n }\n\n // Something calls this when the value is ready.\n void _finishOperation(T result) {\n _completer.complete(result);\n }\n\n // If something goes wrong, call this.\n void _errorHappened(error) {\n _completer.completeError(error);\n }\n}\n```", "detail": "", "kind": 7, "label": "Completer" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint32ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint32List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint32ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int32List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 32-bit signed integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 32 bits,\ninterpreted as a signed 32-bit two's complement integer with values in the\nrange -2147483648 to 2147483647.", "detail": "", "kind": 7, "label": "Int32List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat32ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float32List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat32ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt32x4ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int32x4List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt32x4ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt64ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int64List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt64ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat64x2ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float64x2List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat64x2ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt16ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int16List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt16ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int16List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 16-bit signed integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 16 bits,\ninterpreted as a signed 16-bit two's complement integer with values in the\nrange -32768 to +32767.", "detail": "", "kind": 7, "label": "Int16List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat64ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float64List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat64ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int64List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 64-bit signed integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 64 bits,\ninterpreted as a signed 64-bit two's complement integer with values in the\nrange -9223372036854775808 to +9223372036854775807.", "detail": "", "kind": 7, "label": "Int64List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int32x4", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Int32x4 and operations.\n\nInt32x4 stores 4 32-bit bit-masks in \"lanes\".\nThe lanes are \"x\", \"y\", \"z\", and \"w\" respectively.", "detail": "", "kind": 7, "label": "Int32x4" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypedData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A typed view of a sequence of bytes.", "detail": "", "kind": 7, "label": "TypedData" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int8List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 8-bit signed integers.\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low eight bits,\ninterpreted as a signed 8-bit two's complement integer with values in the\nrange -128 to +127.", "detail": "", "kind": 7, "label": "Int8List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float32x4List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of Float32x4 numbers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation will be considerably more\nspace- and time-efficient than the default [List] implementation.", "detail": "", "kind": 7, "label": "Float32x4List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt8ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int8List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt8ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint8ClampedListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint8ClampedList] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint8ClampedListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableByteDataView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A read-only view of a [ByteData].", "detail": "", "kind": 7, "label": "UnmodifiableByteDataView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float32List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of IEEE 754 single-precision binary floating-point\nnumbers that is viewable as a [TypedData].\n\nFor long lists, this\nimplementation can be considerably more space- and time-efficient than\nthe default [List] implementation.\n\nDouble values stored in the list are converted to the nearest\nsingle-precision value. Values read are converted to a double\nvalue with the same value.", "detail": "", "kind": 7, "label": "Float32List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length, random-access sequence of bytes that also provides random\nand unaligned access to the fixed-width integers and floating point\nnumbers represented by those bytes.\n\n`ByteData` may be used to pack and unpack data from external sources\n(such as networks or files systems), and to process large quantities\nof numerical data more efficiently than would be possible\nwith ordinary [List] implementations.\n`ByteData` can save space, by eliminating the need for object headers,\nand time, by eliminating the need for data copies.\nFinally, `ByteData` may be used to intentionally reinterpret the bytes\nrepresenting one arithmetic type as another.\nFor example this code fragment determine what 32-bit signed integer\nis represented by the bytes of a 32-bit floating point number:\n\n var buffer = new Uint8List(8).buffer;\n var bdata = new ByteData.view(buffer);\n bdata.setFloat32(0, 3.04);\n int huh = bdata.getInt32(0);", "detail": "", "kind": 7, "label": "ByteData" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableInt32ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Int32List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableInt32ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float64x2", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Float64x2 immutable value type and operations.\n\nFloat64x2 stores 2 64-bit floating point values in \"lanes\".\nThe lanes are \"x\" and \"y\" respectively.", "detail": "", "kind": 7, "label": "Float64x2" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint8ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint8List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint8ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableByteBufferView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A read-only view of a [ByteBuffer].", "detail": "", "kind": 7, "label": "UnmodifiableByteBufferView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint16ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint16List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint16ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint64List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 64-bit unsigned integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 64 bits,\ninterpreted as an unsigned 64-bit integer with values in the\nrange 0 to 18446744073709551615.", "detail": "", "kind": 7, "label": "Uint64List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint8ClampedList", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 8-bit unsigned integers.\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are clamped to an unsigned eight bit value.\nThat is, all values below zero are stored as zero\nand all values above 255 are stored as 255.", "detail": "", "kind": 7, "label": "Uint8ClampedList" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ByteBuffer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A sequence of bytes underlying a typed data object.\n\nUsed to process large quantities of binary or numerical data\nmore efficiently using a typed view.", "detail": "", "kind": 7, "label": "ByteBuffer" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float64List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of IEEE 754 double-precision binary floating-point\nnumbers that is viewable as a [TypedData].\n\nFor long lists, this\nimplementation can be considerably more space- and time-efficient than\nthe default [List] implementation.", "detail": "", "kind": 7, "label": "Float64List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint8List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 8-bit unsigned integers.\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low eight bits,\ninterpreted as an unsigned 8-bit integer with values in the\nrange 0 to 255.", "detail": "", "kind": 7, "label": "Uint8List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Int32x4List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of Int32x4 numbers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation will be considerably more\nspace- and time-efficient than the default [List] implementation.", "detail": "", "kind": 7, "label": "Int32x4List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableUint64ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Uint64List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableUint64ListView" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint32List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 32-bit unsigned integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 32 bits,\ninterpreted as an unsigned 32-bit integer with values in the\nrange 0 to 4294967295.", "detail": "", "kind": 7, "label": "Uint32List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uint16List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of 16-bit unsigned integers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation can be considerably\nmore space- and time-efficient than the default [List] implementation.\n\nIntegers stored in the list are truncated to their low 16 bits,\ninterpreted as an unsigned 16-bit integer with values in the\nrange 0 to 65535.", "detail": "", "kind": 7, "label": "Uint16List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float64x2List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A fixed-length list of Float64x2 numbers that is viewable as a\n[TypedData].\n\nFor long lists, this implementation will be considerably more\nspace- and time-efficient than the default [List] implementation.", "detail": "", "kind": 7, "label": "Float64x2List" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Endian", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Describes endianness to be used when accessing or updating a\nsequence of bytes.", "detail": "", "kind": 7, "label": "Endian" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Float32x4", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Float32x4 immutable value type and operations.\n\nFloat32x4 stores 4 32-bit floating point values in \"lanes\".\nThe lanes are \"x\", \"y\", \"z\", and \"w\" respectively.", "detail": "", "kind": 7, "label": "Float32x4" }, { "data": { "autoImportDisplayUri": "dart:typed_data", "libraryId": 51, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnmodifiableFloat32x4ListView", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "View of a [Float32x4List] that disallows modification.", "detail": "", "kind": 7, "label": "UnmodifiableFloat32x4ListView" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rectangle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A class for representing two-dimensional rectangles whose properties are\nimmutable.", "detail": "", "kind": 7, "label": "Rectangle" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Point", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A utility class for representing two-dimensional positions.", "detail": "", "kind": 7, "label": "Point" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Random", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A generator of random bool, int, or double values.\n\nThe default implementation supplies a stream of pseudo-random bits that are\nnot suitable for cryptographic purposes.\n\nUse the [Random.secure]() constructor for cryptographic purposes.", "detail": "", "kind": 7, "label": "Random" }, { "data": { "autoImportDisplayUri": "dart:math", "libraryId": 584, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MutableRectangle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A class for representing two-dimensional axis-aligned rectangles with\nmutable properties.", "detail": "", "kind": 7, "label": "MutableRectangle" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TypeError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the runtime system when a type assertion fails.", "detail": "", "kind": 7, "label": "TypeError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Comparator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The signature of a generic comparison function.\n\nA comparison function represents an ordering on a type of objects.\nA total ordering on a type means that for two values, either they\nare equal or one is greater than the other (and the latter must then be\nsmaller than the former).\n\nA [Comparator] function represents such a total ordering by returning\n\n* a negative integer if [a] is smaller than [b],\n* zero if [a] is equal to [b], and\n* a positive integer if [a] is greater than [b].", "detail": "(T a, T b) → int", "kind": 7, "label": "Comparator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Match", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A result from searching within a string.\n\nA Match or an [Iterable] of Match objects is returned from [Pattern]\nmatching methods.\n\nThe following example finds all matches of a [RegExp] in a [String]\nand iterates through the returned iterable of Match objects.\n\n RegExp exp = new RegExp(r\"(\\w+)\");\n String str = \"Parse my string\";\n Iterable<Match> matches = exp.allMatches(str);\n for (Match m in matches) {\n String match = m.group(0);\n print(match);\n }\n\nThe output of the example is:\n\n Parse\n my\n string\n\nSome patterns, regular expressions in particular, may record substrings\nthat were part of the matching. These are called _groups_ in the Match\nobject. Some patterns may never have any groups, and their matches always\nhave zero [groupCount].", "detail": "", "kind": 7, "label": "Match" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Symbol", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Opaque name used by mirrors, invocations and [Function.apply].", "detail": "", "kind": 7, "label": "Symbol" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Set", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A collection of objects in which each object can occur only once.\n\nThat is, for each object of the element type, the object is either considered\nto be in the set, or to _not_ be in the set.\n\nSet implementations may consider some elements indistinguishable. These\nelements are treated as being the same for any operation on the set.\n\nThe default [Set] implementation, [LinkedHashSet], considers objects\nindistinguishable if they are equal with regard to\noperator [Object.==].\n\nIterating over elements of a set may be either unordered\nor ordered in some way. Examples:\n\n* A [HashSet] is unordered, which means that its iteration order is\n unspecified,\n* [LinkedHashSet] iterates in the insertion order of its elements, and\n* a sorted set like [SplayTreeSet] iterates the elements in sorted order.\n\nIt is generally not allowed to modify the set (add or remove elements) while\nan operation on the set is being performed, for example during a call to\n[forEach] or [containsAll]. Nor is it allowed to modify the set while\niterating either the set itself or any [Iterable] that is backed by the set,\nsuch as the ones returned by methods like [where] and [map].\n\nIt is generally not allowed to modify the equality of elements (and thus not\ntheir hashcode) while they are in the set. Some specialized subtypes may be\nmore permissive, in which case they should document this behavior.", "detail": "", "kind": 7, "label": "Set" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StateError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The operation was not allowed by the current state of the object.\n\nThis is a generic error used for a variety of different erroneous\nactions. The message should be descriptive.", "detail": "", "kind": 7, "label": "StateError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Deprecated", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The annotation `@Deprecated('migration')` marks a feature as deprecated.\n\nThe annotation [deprecated] is a shorthand for deprecating until\nan unspecified \"next release\" without migration instructions.\n\nThe intent of the `@Deprecated` annotation is to inform users of a feature\nthat they should change their code, even if it is currently still working\ncorrectly.\n\nA deprecated feature is scheduled to be removed at a later time, possibly\nspecified in [message]. A deprecated feature should not be used, code using\nit will break at some point in the future. If existing code is using the\nfeature it should be rewritten to not use the deprecated feature.\n\nA deprecated feature should document how the same effect can be achieved in\n[message], so the programmer knows how to rewrite the code.\n\nThe `@Deprecated` annotation applies to libraries, top-level declarations\n(variables, getters, setters, functions, classes and typedefs),\nclass-level declarations (variables, getters, setters, methods, operators or\nconstructors, whether static or not), named optional arguments and\ntrailing optional positional parameters.\n\nDeprecation is transitive:\n\n - If a library is deprecated, so is every member of it.\n - If a class is deprecated, so is every member of it.\n - If a variable is deprecated, so are its implicit getter and setter.\n\n\nA tool that processes Dart source code may report when:\n\n- the code imports a deprecated library.\n- the code exports a deprecated library, or any deprecated member of\n  a non-deprecated library.\n- the code refers statically to a deprecated declaration.\n- the code dynamically uses a member of an object with a statically known\n type, where the member is deprecated on the static type of the object.\n- the code dynamically calls a method with an argument where the\n corresponding optional parameter is deprecated on the object's static type.\n\n\nIf the deprecated use is inside a library, class or method which is itself\ndeprecated, the tool should not bother the user about it.\nA deprecated feature is expected to use other deprecated features.", "detail": "", "kind": 7, "label": "Deprecated" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "double", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A double-precision floating point number.\n\nRepresentation of Dart doubles containing double specific constants\nand operations and specializations of operations inherited from\n[num]. Dart doubles are 64-bit floating-point numbers as specified in the\nIEEE 754 standard.\n\nThe [double] type is contagious. Operations on [double]s return\n[double] results.\n\nIt is a compile-time error for a class to attempt to extend or implement\ndouble.", "detail": "", "kind": 7, "label": "double" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackTrace", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An interface implemented by all stack trace objects.\n\nA [StackTrace] is intended to convey information to the user about the call\nsequence that triggered an exception.\n\nThese objects are created by the runtime, it is not possible to create\nthem programmatically.", "detail": "", "kind": 7, "label": "StackTrace" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "pragma", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A hint to tools.\n\nTools that work with Dart programs may accept hints to guide their behavior\nas `pragma` annotations on declarations.\nEach tool decides which hints it accepts, what they mean, and whether and\nhow they apply to sub-parts of the annotated entity.\n\nTools that recognize pragma hints should pick a pragma prefix to identify\nthe tool. They should recognize any hint with a [name] starting with their\nprefix followed by `:` as if it was intended for that tool. A hint with a\nprefix for another tool should be ignored (unless compatibility with that\nother tool is a goal).\n\nA tool may recognize unprefixed names as well, if they would recognize that\nname with their own prefix in front.\n\nIf the hint can be parameterized, an extra [options] object can be added as well.\n\nFor example:\n\n```dart\n@pragma('Tool:pragma-name', [param1, param2, ...])\nclass Foo { }\n\n@pragma('OtherTool:other-pragma')\nvoid foo() { }\n```\n\nHere class Foo is annotated with a Tool specific pragma 'pragma-name' and\nfunction foo is annotated with a pragma 'other-pragma' specific to OtherTool.\n", "detail": "", "kind": 7, "label": "pragma" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RangeError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown due to an index being outside a valid range.", "detail": "", "kind": 7, "label": "RangeError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RuneIterator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "[Iterator] for reading runes (integer Unicode code points) out of a Dart\nstring.", "detail": "", "kind": 7, "label": "RuneIterator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegExp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A regular expression pattern.\n\nRegular expressions are [Pattern]s, and can as such be used to match strings\nor parts of strings.\n\nDart regular expressions have the same syntax and semantics as\nJavaScript regular expressions. See\n<http://ecma-international.org/ecma-262/5.1/#sec-15.10>\nfor the specification of JavaScript regular expressions.\n\n[firstMatch] is the main implementation method that applies a regular\nexpression to a string and returns the first [Match]. All\nother methods in [RegExp] can build on it.\n\nUse [allMatches] to look for all matches of a regular expression in\na string.\n\nThe following example finds all matches of a regular expression in\na string.\n```dart\nRegExp exp = new RegExp(r\"(\\w+)\");\nString str = \"Parse my string\";\nIterable<Match> matches = exp.allMatches(str);\n```\n\nNote the use of a _raw string_ (a string prefixed with `r`)\nin the example above. Use a raw string to treat each character in a string\nas a literal character.", "detail": "", "kind": 7, "label": "RegExp" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "bool", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The reserved words `true` and `false` denote objects that are the only two\ninstances of this class.\n\nIt is a compile-time error for a class to attempt to extend or implement\nbool.", "detail": "", "kind": 7, "label": "bool" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Future", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An object representing a delayed computation.\n\nA [Future] is used to represent a potential value, or error,\nthat will be available at some time in the future.\nReceivers of a [Future] can register callbacks\nthat handle the value or error once it is available.\nFor example:\n\n Future<int> future = getFuture();\n future.then((value) => handleValue(value))\n .catchError((error) => handleError(error));\n\nA [Future] can be completed in two ways:\nwith a value (\"the future succeeds\")\nor with an error (\"the future fails\").\nUsers can install callbacks for each case.\n\nIn some cases we say that a future is completed with another future.\nThis is a short way of stating that the future is completed in the same way,\nwith the same value or error,\nas the other future once that completes.\nWhenever a function in the core library may complete a future\n(for example [Completer.complete] or [new Future.value]),\nthen it also accepts another future and does this work for the developer.\n\nThe result of registering a pair of callbacks is a new Future (the\n\"successor\") which in turn is completed with the result of invoking the\ncorresponding callback.\nThe successor is completed with an error if the invoked callback throws.\nFor example:\n```\nFuture<int> successor = future.then((int value) {\n // Invoked when the future is completed with a value.\n return 42; // The successor is completed with the value 42.\n },\n onError: (e) {\n // Invoked when the future is completed with an error.\n if (canHandle(e)) {\n return 499; // The successor is completed with the value 499.\n } else {\n throw e; // The successor is completed with the error e.\n }\n });\n```\n\nIf a future does not have a successor when it completes with an error,\nit forwards the error message to the global error-handler.\nThis behavior makes sure that no error is silently dropped.\nHowever, it also means that error handlers should be installed early,\nso that they are present as soon as a future is completed with an error.\nThe following example demonstrates this potential bug:\n```\nvar future = getFuture();\nnew Timer(new Duration(milliseconds: 5), () {\n // The error-handler is not attached until 5 ms after the future has\n // been received. If the future fails before that, the error is\n // forwarded to the global error-handler, even though there is code\n // (just below) to eventually handle the error.\n future.then((value) { useValue(value); },\n onError: (e) { handleError(e); });\n});\n```\n\nWhen registering callbacks, it's often more readable to register the two\ncallbacks separately, by first using [then] with one argument\n(the value handler) and using a second [catchError] for handling errors.\nEach of these will forward the result that they don't handle\nto their successors, and together they handle both value and error result.\nIt also has the additional benefit of the [catchError] handling errors in the\n[then] value callback too.\nUsing sequential handlers instead of parallel ones often leads to code that\nis easier to reason about.\nIt also makes asynchronous code very similar to synchronous code:\n```\n// Synchronous code.\ntry {\n int value = foo();\n return bar(value);\n} catch (e) {\n return 499;\n}\n```\n\nEquivalent asynchronous code, based on futures:\n```\nFuture<int> future = new Future(foo); // Result of foo() as a future.\nfuture.then((int value) => bar(value))\n .catchError((e) => 499);\n```\n\nSimilar to the synchronous code, the error handler (registered with\n[catchError]) is handling any errors thrown by either `foo` or `bar`.\nIf the error-handler had been registered as the `onError` parameter of\nthe `then` call, it would not catch errors from the `bar` call.\n\nFutures can have more than one callback-pair registered. Each successor is\ntreated independently and is handled as if it was the only successor.\n\nA future may also fail to ever complete. In that case, no callbacks are\ncalled.", "detail": "", "kind": 7, "label": "Future" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Provisional", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An annotation class that was used during development of Dart 2.\n\nShould not be used any more.", "detail": "(Deprecated) ", "kind": 7, "label": "Provisional" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RegExpMatch", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A regular expression match.\n\nRegular expression matches are [Match]es, but also include the ability\nto retrieve the names for any named capture groups and to retrieve\nmatches for named capture groups by name instead of their index.", "detail": "", "kind": 7, "label": "RegExpMatch" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ArgumentError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when a function is passed an unacceptable argument.", "detail": "", "kind": 7, "label": "ArgumentError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnimplementedError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Thrown by operations that have not been implemented yet.\n\nThis [Error] is thrown by unfinished code that hasn't yet implemented\nall the features it needs.\n\nIf a class is not intending to implement the feature, it should throw\nan [UnsupportedError] instead. This error is only intended for\nuse during development.", "detail": "", "kind": 7, "label": "UnimplementedError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NoSuchMethodError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the default implementation of [:noSuchMethod:] on [Object].", "detail": "", "kind": 7, "label": "NoSuchMethodError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CastError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the runtime system when a cast operation fails.", "detail": "", "kind": 7, "label": "CastError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "int", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An integer number.\n\nThe default implementation of `int` is 64-bit two's complement integers\nwith operations that wrap to that range on overflow.\n\n**Note:** When compiling to JavaScript, integers are restricted to values\nthat can be represented exactly by double-precision floating point values.\nThe available integer values include all integers between -2^53 and 2^53,\nand some integers with larger magnitude. That includes some integers larger\nthan 2^63.\nThe behavior of the operators and methods in the [int]\nclass therefore sometimes differs between the Dart VM and Dart code\ncompiled to JavaScript. For example, the bitwise operators truncate their\noperands to 32-bit integers when compiled to JavaScript.\n\nClasses cannot extend, implement, or mix in `int`.", "detail": "", "kind": 7, "label": "int" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "num", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An integer or floating-point number.\n\nIt is a compile-time error for any type other than [int] or [double]\nto attempt to extend or implement num.", "detail": "", "kind": 7, "label": "num" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Sink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A generic destination for data.\n\nMultiple data values can be put into a sink, and when no more data is\navailable, the sink should be closed.\n\nThis is a generic interface that other data receivers can implement.", "detail": "", "kind": 7, "label": "Sink" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringBuffer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A class for concatenating strings efficiently.\n\nAllows for the incremental building of a string using write*() methods.\nThe strings are concatenated to a single string only when [toString] is\ncalled.", "detail": "", "kind": 7, "label": "StringBuffer" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BidirectionalIterator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An Iterator that allows moving backwards as well as forwards.", "detail": "", "kind": 7, "label": "BidirectionalIterator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Error", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error objects thrown in the case of a program failure.\n\nAn `Error` object represents a program failure that the programmer\nshould have avoided.\n\nExamples include calling a function with invalid arguments,\nor even with the wrong number of arguments,\nor calling it at a time when it is not allowed.\n\nThese are not errors that a caller should expect or catch -\nif they occur, the program is erroneous,\nand terminating the program may be the safest response.\n\nWhen deciding that a function throws an error,\nthe conditions where it happens should be clearly described,\nand they should be detectable and predictable,\nso the programmer using the function can avoid triggering the error.\n\nSuch descriptions often uses words like\n\"must\" or \"must not\" to describe the condition,\nand if you see words like that in a function's documentation,\nthen not satisfying the requirement\nis very likely to cause an error to be thrown.\n\nExample (from [String.contains]):\n\n `startIndex` must not be negative or greater than `length`.\n\nIn this case, an error will be thrown if `startIndex` is negative\nor too large.\n\nIf the conditions are not detectable before calling a function,\nthe called function should not throw an `Error`.\nIt may still throw a value,\nbut the caller will have to catch the thrown value,\neffectively making it an alternative result rather than an error.\nThe thrown object can choose to implement [Exception]\nto document that it represents an exceptional, but not erroneous, occurrence,\nbut it has no other effect than documentation.\n\nAll non-`null` values can be thrown in Dart.\nObjects extending `Error` are handled specially:\nThe first time they are thrown,\nthe stack trace at the throw point is recorded\nand stored in the error object.\nIt can be retrieved using the [stackTrace] getter.\nAn error object that merely implements `Error`, and doesn't extend it,\nwill not store the stack trace automatically.\n\nError objects are also used for system wide failures\nlike stack overflow or an out-of-memory situation.\n\nSince errors are not created to be caught,\nthere is no need for subclasses to distinguish the errors.\nInstead subclasses have been created in order to make groups\nof related errors easy to create with consistent error messages.\nFor example, the [String.contains] method will use a [RangeError]\nif its `startIndex` isn't in the range `0..length`,\nwhich is easily created by `new RangeError.range(startIndex, 0, length)`.", "detail": "", "kind": 7, "label": "Error" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FallThroughError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when control reaches the end of a switch case.\n\nThe Dart specification requires this error to be thrown when\ncontrol reaches the end of a switch case (except the last case\nof a switch) without meeting a break or similar end of the control\nflow.", "detail": "", "kind": 7, "label": "FallThroughError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StringSink", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "StringSink" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IndexError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A specialized [RangeError] used when an index is not in the range\n`0..indexable.length-1`.\n\nAlso contains the indexable object, its length at the time of the error,\nand the invalid index itself.", "detail": "", "kind": 7, "label": "IndexError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Map", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A collection of key/value pairs, from which you retrieve a value\nusing its associated key.\n\nThere is a finite number of keys in the map,\nand each key has exactly one value associated with it.\n\nMaps, and their keys and values, can be iterated.\nThe order of iteration is defined by the individual type of map.\nExamples:\n\n* The plain [HashMap] is unordered (no order is guaranteed),\n* the [LinkedHashMap] iterates in key insertion order,\n* and a sorted map like [SplayTreeMap] iterates the keys in sorted order.\n\nIt is generally not allowed to modify the map (add or remove keys) while\nan operation is being performed on the map, for example in functions called\nduring a [forEach] or [putIfAbsent] call.\nModifying the map while iterating the keys or values\nmay also break the iteration.\n\nIt is generally not allowed to modify the equality of keys (and thus not\ntheir hashcode) while they are in the map. Some specialized subtypes may be\nmore permissive, in which case they should document this behavior.", "detail": "", "kind": 7, "label": "Map" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Duration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A span of time, such as 27 days, 4 hours, 12 minutes, and 3 seconds.\n\nA `Duration` represents a difference from one point in time to another. The\nduration may be \"negative\" if the difference is from a later time to an\nearlier.\n\nDurations are context independent. For example, a duration of 2 days is\nalways 48 hours, even when it is added to a `DateTime` just when the\ntime zone is about to do a daylight-savings switch. (See [DateTime.add]).\n\nDespite the same name, a `Duration` object does not implement \"Durations\"\nas specified by ISO 8601. In particular, a duration object does not keep\ntrack of the individually provided members (such as \"days\" or \"hours\"), but\nonly uses these arguments to compute the length of the corresponding time\ninterval.\n\nTo create a new Duration object, use this class's single constructor\ngiving the appropriate arguments:\n```dart\nDuration fastestMarathon = new Duration(hours:2, minutes:3, seconds:2);\n```\nThe [Duration] is the sum of all individual parts.\nThis means that individual parts can be larger than the next-bigger unit.\nFor example, [inMinutes] can be greater than 59.\n```dart\nassert(fastestMarathon.inMinutes == 123);\n```\nAll individual parts are allowed to be negative.\n\nUse one of the properties, such as [inDays],\nto retrieve the integer value of the Duration in the specified time unit.\nNote that the returned value is rounded down.\nFor example,\n```dart\nDuration aLongWeekend = new Duration(hours:88);\nassert(aLongWeekend.inDays == 3);\n```\nThis class provides a collection of arithmetic\nand comparison operators,\nplus a set of constants useful for converting time units.\n\nSee [DateTime] to represent a point in time.\nSee [Stopwatch] to measure time-spans.", "detail": "", "kind": 7, "label": "Duration" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stopwatch", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A simple stopwatch interface to measure elapsed time.", "detail": "", "kind": 7, "label": "Stopwatch" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Invocation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Representation of the invocation of a member on an object.\n\nThis is the type of objects passed to [Object.noSuchMethod] when\nan object doesn't support the member invocation that was attempted\non it.", "detail": "", "kind": 7, "label": "Invocation" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UriData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A way to access the structure of a `data:` URI.\n\nData URIs are non-hierarchical URIs that can contain any binary data.\nThey are defined by [RFC 2397](https://tools.ietf.org/html/rfc2397).\n\nThis class allows parsing the URI text and extracting individual parts of the\nURI, as well as building the URI text from structured parts.", "detail": "", "kind": 7, "label": "UriData" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AssertionError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown by the runtime system when an assert statement fails.", "detail": "", "kind": 7, "label": "AssertionError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Exception", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A marker interface implemented by all core library exceptions.\n\nAn [Exception] is intended to convey information to the user about a failure,\nso that the error can be addressed programmatically. It is intended to be\ncaught, and it should contain useful data fields.\n\nCreating instances of [Exception] directly with [:new Exception(\"message\"):]\nis discouraged, and only included as a temporary measure during development,\nuntil the actual exceptions used by a library are done.", "detail": "", "kind": 7, "label": "Exception" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Uri", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A parsed URI, such as a URL.\n\n**See also:**\n\n* [URIs][uris] in the [library tour][libtour]\n* [RFC-3986](http://tools.ietf.org/html/rfc3986)\n\n[uris]: https://www.dartlang.org/docs/dart-up-and-running/ch03.html#uris\n[libtour]: https://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html", "detail": "", "kind": 7, "label": "Uri" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IntegerDivisionByZeroException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "IntegerDivisionByZeroException" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "DateTime", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An instant in time, such as July 20, 1969, 8:18pm GMT.\n\nDateTimes can represent time values that are at a distance of at most\n100,000,000 days from epoch (1970-01-01 UTC): -271821-04-20 to 275760-09-13.\n\nCreate a DateTime object by using one of the constructors\nor by parsing a correctly formatted string,\nwhich complies with a subset of ISO 8601.\nNote that hours are specified between 0 and 23,\nas in a 24-hour clock.\nFor example:\n\n```\nvar now = new DateTime.now();\nvar berlinWallFell = new DateTime.utc(1989, 11, 9);\nvar moonLanding = DateTime.parse(\"1969-07-20 20:18:04Z\"); // 8:18pm\n```\n\nA DateTime object is anchored either in the UTC time zone\nor in the local time zone of the current computer\nwhen the object is created.\n\nOnce created, neither the value nor the time zone\nof a DateTime object may be changed.\n\nYou can use properties to get\nthe individual units of a DateTime object.\n\n```\nassert(berlinWallFell.month == 11);\nassert(moonLanding.hour == 20);\n```\n\nFor convenience and readability,\nthe DateTime class provides a constant for each day and month\nname - for example, [august] and [friday].\nYou can use these constants to improve code readability:\n\n```\nvar berlinWallFell = new DateTime.utc(1989, DateTime.november, 9);\nassert(berlinWallFell.weekday == DateTime.thursday);\n```\n\nDay and month values begin at 1, and the week starts on Monday.\nThat is, the constants [january] and [monday] are both 1.\n\n## Working with UTC and local time\n\nA DateTime object is in the local time zone\nunless explicitly created in the UTC time zone.\n\n```\nvar dDay = new DateTime.utc(1944, 6, 6);\n```\n\nUse [isUtc] to determine whether a DateTime object is based in UTC.\nUse the methods [toLocal] and [toUtc]\nto get the equivalent date/time value specified in the other time zone.\nUse [timeZoneName] to get an abbreviated name of the time zone\nfor the DateTime object.\nTo find the difference\nbetween UTC and the time zone of a DateTime object\ncall [timeZoneOffset].\n\n## Comparing DateTime objects\n\nThe DateTime class contains several handy methods,\nsuch as [isAfter], [isBefore], and [isAtSameMomentAs],\nfor comparing DateTime objects.\n\n```\nassert(berlinWallFell.isAfter(moonLanding) == true);\nassert(berlinWallFell.isBefore(moonLanding) == false);\n```\n\n## Using DateTime with Duration\n\nUse the [add] and [subtract] methods with a [Duration] object\nto create a new DateTime object based on another.\nFor example, to find the date that is sixty days (24 * 60 hours) after today,\nwrite:\n\n```\nvar now = new DateTime.now();\nvar sixtyDaysFromNow = now.add(new Duration(days: 60));\n```\n\nTo find out how much time is between two DateTime objects use\n[difference], which returns a [Duration] object:\n\n```\nvar difference = berlinWallFell.difference(moonLanding);\nassert(difference.inDays == 7416);\n```\n\nThe difference between two dates in different time zones\nis just the number of nanoseconds between the two points in time.\nIt doesn't take calendar days into account.\nThat means that the difference between two midnights in local time may be\nless than 24 hours times the number of days between them,\nif there is a daylight saving change in between.\nIf the difference above is calculated using Australian local time, the\ndifference is 7415 days and 23 hours, which is only 7415 whole days as\nreported by `inDays`.\n\n## Other resources\n\nSee [Duration] to represent a span of time.\nSee [Stopwatch] to measure timespans.\n\nThe DateTime class does not provide internationalization.\nTo internationalize your code, use\nthe [intl](https://pub.dartlang.org/packages/intl) package.\n", "detail": "", "kind": 7, "label": "DateTime" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "String", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A sequence of UTF-16 code units.\n\nStrings are mainly used to represent text. A character may be represented by\nmultiple code points, each code point consisting of one or two code\nunits. For example the Papua New Guinea flag character requires four code\nunits to represent two code points, but should be treated like a single\ncharacter: \"🇵🇬\". Platforms that do not support the flag character may show\nthe letters \"PG\" instead. If the code points are swapped, it instead becomes\nthe Guadeloupe flag \"🇬🇵\" (\"GP\").\n\nA string can be either single or multiline. Single line strings are\nwritten using matching single or double quotes, and multiline strings are\nwritten using triple quotes. The following are all valid Dart strings:\n\n 'Single quotes';\n \"Double quotes\";\n 'Double quotes in \"single\" quotes';\n \"Single quotes in 'double' quotes\";\n\n '''A\n multiline\n string''';\n\n \"\"\"\n Another\n multiline\n string\"\"\";\n\nStrings are immutable. Although you cannot change a string, you can perform\nan operation on a string and assign the result to a new string:\n\n var string = 'Dart is fun';\n var newString = string.substring(0, 5);\n\nYou can use the plus (`+`) operator to concatenate strings:\n\n 'Dart ' + 'is ' + 'fun!'; // 'Dart is fun!'\n\nYou can also use adjacent string literals for concatenation:\n\n 'Dart ' 'is ' 'fun!'; // 'Dart is fun!'\n\nYou can use `${}` to interpolate the value of Dart expressions\nwithin strings. The curly braces can be omitted when evaluating identifiers:\n\n string = 'dartlang';\n '$string has ${string.length} letters'; // 'dartlang has 8 letters'\n\nA string is represented by a sequence of Unicode UTF-16 code units\naccessible through the [codeUnitAt] or the [codeUnits] members:\n\n string = 'Dart';\n string.codeUnitAt(0); // 68\n string.codeUnits; // [68, 97, 114, 116]\n\nThe string representation of code units is accessible through the index\noperator:\n\n string[0]; // 'D'\n\nThe characters of a string are encoded in UTF-16. Decoding UTF-16, which\ncombines surrogate pairs, yields Unicode code points. Following a similar\nterminology to Go, we use the name 'rune' for an integer representing a\nUnicode code point. Use the [runes] property to get the runes of a string:\n\n string.runes.toList(); // [68, 97, 114, 116]\n\nFor a character outside the Basic Multilingual Plane (plane 0) that is\ncomposed of a surrogate pair, [runes] combines the pair and returns a\nsingle integer. For example, the Unicode character for a\nmusical G-clef ('𝄞') with rune value 0x1D11E consists of a UTF-16 surrogate\npair: `0xD834` and `0xDD1E`. Using [codeUnits] returns the surrogate pair,\nand using `runes` returns their combined value:\n\n var clef = '\\u{1D11E}';\n clef.codeUnits; // [0xD834, 0xDD1E]\n clef.runes.toList(); // [0x1D11E]\n\nThe String class can not be extended or implemented. Attempting to do so\nyields a compile-time error.\n\n## Other resources\n\nSee [StringBuffer] to efficiently build a string incrementally. See\n[RegExp] to work with regular expressions.\n\nAlso see:\n\n* [Dart Cookbook](https://www.dartlang.org/docs/cookbook/#strings)\n for String examples and recipes.\n* [Dart Up and Running](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#strings-and-regular-expressions)", "detail": "", "kind": 7, "label": "String" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CyclicInitializationError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when a lazily initialized variable cannot be initialized.\n\nA static/library variable with an initializer expression is initialized\nthe first time it is read. If evaluating the initializer expression causes\nanother read of the variable, this error is thrown.", "detail": "", "kind": 7, "label": "CyclicInitializationError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Expando", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An [Expando] allows adding new properties to objects.\n\nDoes not work on numbers, strings, booleans or null.\n\nAn `Expando` does not hold on to the added property value after an object\nbecomes inaccessible.\n\nSince you can always create a new number that is identical to an existing\nnumber, it means that an expando property on a number could never be\nreleased. To avoid this, expando properties cannot be added to numbers.\nThe same argument applies to strings, booleans and null, which also have\nliterals that evaluate to identical values when they occur more than once.\n\nThere is no restriction on other classes, even for compile time constant\nobjects. Be careful if adding expando properties to compile time constants,\nsince they will stay alive forever.", "detail": "", "kind": 7, "label": "Expando" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Function", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The base class for all function types.\n\nA function value, or an instance of a class with a \"call\" method, is a\nsubtype of a function type, and as such, a subtype of [Function].", "detail": "", "kind": 7, "label": "Function" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Type", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Runtime representation of a type.", "detail": "", "kind": 7, "label": "Type" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Comparable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Interface used by types that have an intrinsic ordering.\n\nThe [compareTo] operation defines a total ordering of objects,\nwhich can be used for ordering and sorting.\n\nThe [Comparable] interface should be used for the natural ordering of a type.\nIf a type can be ordered in more than one way,\nand none of them is the obvious natural ordering,\nthen it might be better not to use the [Comparable] interface,\nand to provide separate [Comparator]s instead.\n\nIt is recommended that the order of a [Comparable] agrees\nwith its operator [operator ==] equality (`a.compareTo(b) == 0` iff `a == b`),\nbut this is not a requirement.\nFor example, [double] and [DateTime] have `compareTo` methods\nthat do not agree with operator [operator ==].\nFor doubles the [compareTo] method is more precise than the equality,\nand for [DateTime] it is less precise.\n\nExamples:\n\n (0.0).compareTo(-0.0); // => 1\n 0.0 == -0.0; // => true\n var dt = new DateTime.now();\n var dt2 = dt.toUtc();\n dt == dt2; // => false\n dt.compareTo(dt2); // => 0\n\nThe [Comparable] interface does not imply the existence\nof the comparison operators `<`, `<=`, `>` and `>=`.\nThese should only be defined\nif the ordering is a less-than/greater-than ordering,\nthat is, an ordering where you would naturally\nuse the words \"less than\" about the order of two elements.\n\nIf the equality operator and [compareTo] disagree,\nthe comparison operators should follow the equality operator,\nand will likely also disagree with [compareTo].\nOtherwise they should match the [compareTo] method,\nso that `a < b` iff `a.compareTo(b) < 0`.\n\nThe [double] class defines comparison operators\nthat are compatible with equality.\nThe operators differ from `double.compareTo` on -0.0 and NaN.\n\nThe [DateTime] class has no comparison operators, instead it has the more\nprecisely named [DateTime.isBefore] and [DateTime.isAfter].", "detail": "", "kind": 7, "label": "Comparable" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Iterator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An interface for getting items, one at a time, from an object.\n\nThe for-in construct transparently uses `Iterator` to test for the end\nof the iteration, and to get each item (or _element_).\n\nIf the object iterated over is changed during the iteration, the\nbehavior is unspecified.\n\nThe `Iterator` is initially positioned before the first element.\nBefore accessing the first element the iterator must thus be advanced using\n[moveNext] to point to the first element.\nIf no element is left, then [moveNext] returns false, [current]\nreturns `null`, and all further calls to [moveNext] will also return false.\n\nA typical usage of an Iterator looks as follows:\n\n var it = obj.iterator;\n while (it.moveNext()) {\n use(it.current);\n }\n\n**See also:**\n[Iteration](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html#iteration)\nin the [library tour](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html)", "detail": "", "kind": 7, "label": "Iterator" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ConcurrentModificationError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error occurring when a collection is modified during iteration.\n\nSome modifications may be allowed for some collections, so each collection\n([Iterable] or similar collection of values) should declare which operations\nare allowed during an iteration.", "detail": "", "kind": 7, "label": "ConcurrentModificationError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AbstractClassInstantiationError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when trying to instantiate an abstract class.", "detail": "", "kind": 7, "label": "AbstractClassInstantiationError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BigInt", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An arbitrarily large integer.", "detail": "", "kind": 7, "label": "BigInt" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "UnsupportedError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The operation was not allowed by the object.\n\nThis [Error] is thrown when an instance cannot implement one of the methods\nin its signature.", "detail": "", "kind": 7, "label": "UnsupportedError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Iterable", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A collection of values, or \"elements\", that can be accessed sequentially.\n\nThe elements of the iterable are accessed by getting an [Iterator]\nusing the [iterator] getter, and using it to step through the values.\nStepping with the iterator is done by calling [Iterator.moveNext],\nand if the call returns `true`,\nthe iterator has now moved to the next element,\nwhich is then available as [Iterator.current].\nIf the call returns `false`, there are no more elements,\nand `iterator.current` returns `null`.\n\nYou can create more than one iterator from the same `Iterable`.\nEach time `iterator` is read, it returns a new iterator,\nand different iterators can be stepped through independently,\neach giving access to all the elements of the iterable.\nThe iterators of the same iterable *should* provide the same values\nin the same order (unless the underlying collection is modified between\nthe iterations, which some collections allow).\n\nYou can also iterate over the elements of an `Iterable`\nusing the for-in loop construct, which uses the `iterator` getter behind the\nscenes.\nFor example, you can iterate over all of the keys of a [Map],\nbecause `Map` keys are iterable.\n\n Map kidsBooks = {'Matilda': 'Roald Dahl',\n 'Green Eggs and Ham': 'Dr Seuss',\n 'Where the Wild Things Are': 'Maurice Sendak'};\n for (var book in kidsBooks.keys) {\n print('$book was written by ${kidsBooks[book]}');\n }\n\nThe [List] and [Set] classes are both `Iterable`,\nas are most classes in the `dart:collection` library.\n\nSome [Iterable] collections can be modified.\nAdding an element to a `List` or `Set` will change which elements it\ncontains, and adding a new key to a `Map` changes the elements of [Map.keys].\nIterators created after the change will provide the new elements, and may\nor may not preserve the order of existing elements\n(for example, a [HashSet] may completely change its order when a single\nelement is added).\n\nChanging a collection *while* it is being iterated\nis generally *not* allowed.\nDoing so will break the iteration, which is typically signalled\nby throwing a [ConcurrentModificationError]\nthe next time [Iterator.moveNext] is called.\nThe current value of [Iterator.current] getter\nshould not be affected by the change in the collection,\nthe `current` value was set by the previous call to [Iterator.moveNext].\n\nSome iterables compute their elements dynamically every time they are\niterated, like the one returned by [Iterable.generate] or the iterable\nreturned by a `sync*` generator function. If the computation doesn't depend\non other objects that may change, then the generated sequence should be\nthe same one every time it's iterated.\n\nThe members of `Iterable`, other than `iterator` itself,\nwork by looking at the elements of the iterable.\nThis can be implemented by running through the [iterator], but some classes\nmay have more efficient ways of finding the result\n(like [last] or [length] on a [List], or [contains] on a [Set]).\n\nThe methods that return another `Iterable` (like [map] and [where])\nare all *lazy* - they will iterate the original (as necessary)\nevery time the returned iterable is iterated, and not before.\n\nSince an iterable may be iterated more than once, it's not recommended to\nhave detectable side-effects in the iterator.\nFor methods like [map] and [where], the returned iterable will execute the\nargument function on every iteration, so those functions should also not\nhave side effects.", "detail": "", "kind": 7, "label": "Iterable" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FormatException", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Exception thrown when a string or some other data does not have an expected\nformat and cannot be parsed or processed.", "detail": "", "kind": 7, "label": "FormatException" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "List", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An indexable collection of objects with a length.\n\nSubclasses of this class implement different kinds of lists.\nThe most common kinds of lists are:\n\n* Fixed-length list.\n An error occurs when attempting to use operations\n that can change the length of the list.\n\n* Growable list. Full implementation of the API defined in this class.\n\nThe default growable list, as returned by `new List()` or `[]`, keeps\nan internal buffer, and grows that buffer when necessary. This guarantees\nthat a sequence of [add] operations will each execute in amortized constant\ntime. Setting the length directly may take time proportional to the new\nlength, and may change the internal capacity so that a following add\noperation will need to immediately increase the buffer capacity.\nOther list implementations may have different performance behavior.\n\nThe following code illustrates that some List implementations support\nonly a subset of the API.\n\n List<int> fixedLengthList = new List(5);\n fixedLengthList.length = 0; // Error\n fixedLengthList.add(499); // Error\n fixedLengthList[0] = 87;\n List<int> growableList = [1, 2];\n growableList.length = 0;\n growableList.add(499);\n growableList[0] = 87;\n\nLists are [Iterable]. Iteration occurs over values in index order. Changing\nthe values does not affect iteration, but changing the valid\nindices—that is, changing the list's length—between iteration\nsteps causes a [ConcurrentModificationError]. This means that only growable\nlists can throw ConcurrentModificationError. If the length changes\ntemporarily and is restored before continuing the iteration, the iterator\ndoes not detect it.\n\nIt is generally not allowed to modify the list's length (adding or removing\nelements) while an operation on the list is being performed,\nfor example during a call to [forEach] or [sort].\nChanging the list's length while it is being iterated, either by iterating it\ndirectly or through iterating an [Iterable] that is backed by the list, will\nbreak the iteration.", "detail": "", "kind": 7, "label": "List" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Stream", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A source of asynchronous data events.\n\nA Stream provides a way to receive a sequence of events.\nEach event is either a data event, also called an *element* of the stream,\nor an error event, which is a notification that something has failed.\nWhen a stream has emitted all its event,\na single \"done\" event will notify the listener that the end has been reached.\n\nYou [listen] on a stream to make it start generating events,\nand to set up listeners that receive the events.\nWhen you listen, you receive a [StreamSubscription] object\nwhich is the active object providing the events,\nand which can be used to stop listening again,\nor to temporarily pause events from the subscription.\n\nThere are two kinds of streams: \"Single-subscription\" streams and\n\"broadcast\" streams.\n\n*A single-subscription stream* allows only a single listener during the whole\nlifetime of the stream.\nIt doesn't start generating events until it has a listener,\nand it stops sending events when the listener is unsubscribed,\neven if the source of events could still provide more.\n\nListening twice on a single-subscription stream is not allowed, even after\nthe first subscription has been canceled.\n\nSingle-subscription streams are generally used for streaming chunks of\nlarger contiguous data like file I/O.\n\n*A broadcast stream* allows any number of listeners, and it fires\nits events when they are ready, whether there are listeners or not.\n\nBroadcast streams are used for independent events/observers.\n\nIf several listeners want to listen to a single subscription stream,\nuse [asBroadcastStream] to create a broadcast stream on top of the\nnon-broadcast stream.\n\nOn either kind of stream, stream transformations, such as [where] and\n[skip], return the same type of stream as the one the method was called on,\nunless otherwise noted.\n\nWhen an event is fired, the listener(s) at that time will receive the event.\nIf a listener is added to a broadcast stream while an event is being fired,\nthat listener will not receive the event currently being fired.\nIf a listener is canceled, it immediately stops receiving events.\nListening on a broadcast stream can be treated as listening on a new stream\ncontaining only the events that have not yet been emitted when the [listen]\ncall occurs.\nFor example, the [first] getter listens to the stream, then returns the first\nevent that listener receives.\nThis is not necessarily the first even emitted by the stream, but the first\nof the *remaining* events of the broadcast stream.\n\nWhen the \"done\" event is fired, subscribers are unsubscribed before\nreceiving the event. After the event has been sent, the stream has no\nsubscribers. Adding new subscribers to a broadcast stream after this point\nis allowed, but they will just receive a new \"done\" event as soon\nas possible.\n\nStream subscriptions always respect \"pause\" requests. If necessary they need\nto buffer their input, but often, and preferably, they can simply request\ntheir input to pause too.\n\nThe default implementation of [isBroadcast] returns false.\nA broadcast stream inheriting from [Stream] must override [isBroadcast]\nto return `true`.", "detail": "", "kind": 7, "label": "Stream" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MapEntry", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A key/value pair representing an entry in a [Map].", "detail": "", "kind": 7, "label": "MapEntry" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StackOverflowError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "StackOverflowError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Pattern", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "An interface for basic searches within strings.", "detail": "", "kind": 7, "label": "Pattern" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "NullThrownError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "Error thrown when attempting to throw [:null:].", "detail": "", "kind": 7, "label": "NullThrownError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OutOfMemoryError", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "detail": "", "kind": 7, "label": "OutOfMemoryError" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Object", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The base class for all Dart objects.\n\nBecause Object is the root of the Dart class hierarchy,\nevery other Dart class is a subclass of Object.\n\nWhen you define a class, you should override [toString]\nto return a string describing an instance of that class.\nYou might also need to define [hashCode] and [operator ==], as described in the\n[Implementing map\nkeys](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#implementing-map-keys)\nsection of the [library\ntour](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html).", "detail": "", "kind": 7, "label": "Object" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Runes", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The runes (integer Unicode code points) of a [String].", "detail": "", "kind": 7, "label": "Runes" }, { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Null", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "The reserved word [:null:] denotes an object that is the sole instance of\nthis class.\n\nIt is a compile-time error for a class to attempt to extend or implement\nNull.", "detail": "", "kind": 7, "label": "Null" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBaseline", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A horizontal line used for aligning text.", "detail": "", "kind": 13, "label": "TextBaseline" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "IsolateNameServer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Static methods to allow for simple sharing of [SendPort]s across [Isolate]s.\n\nAll isolates share a global mapping of names to ports. An isolate can\nregister a [SendPort] with a given name using [registerPortWithName];\nanother isolate can then look up that port using [lookupPortByName].\n\nTo create a [SendPort], first create a [ReceivePort], then use\n[ReceivePort.sendPort].\n\nSince multiple isolates can each obtain the same [SendPort] associated with\na particular [ReceivePort], the protocol built on top of this mechanism\nshould typically consist of a single message. If more elaborate two-way\ncommunication or multiple-message communication is necessary, it is\nrecommended to establish a separate communication channel in that first\nmessage (e.g. by passing a dedicated [SendPort]).", "detail": "", "kind": 7, "label": "IsolateNameServer" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeCap", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Styles to use for line endings.\n\nSee also:\n\n * [Paint.strokeCap] for how this value is used.\n * [StrokeJoin] for the different kinds of line segment joins.", "detail": "", "kind": 13, "label": "StrokeCap" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Tangent", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The geometric description of a tangent: the angle at a point.\n\nSee also:\n * [PathMetric.getTangentForOffset], which returns the tangent of an offset along a path.", "detail": "", "kind": 7, "label": "Tangent" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Vertices", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A set of vertex data used by [Canvas.drawVertices].", "detail": "", "kind": 7, "label": "Vertices" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlurStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Styles to use for blurs in [MaskFilter] objects.", "detail": "", "kind": 13, "label": "BlurStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AccessibilityFeatures", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Additional accessibility features that may be enabled by the platform.\n\nIt is not possible to enable these settings from Flutter, instead they are\nused by the platform to indicate that additional accessibility features are\nenabled.", "detail": "", "kind": 7, "label": "AccessibilityFeatures" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathMetrics", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An iterable collection of [PathMetric] objects describing a [Path].\n\nA [PathMetrics] object is created by using the [Path.computeMetrics] method,\nand represents the path as it stood at the time of the call. Subsequent\nmodifications of the path do not affect the [PathMetrics] object.\n\nEach path metric corresponds to a segment, or contour, of a path.\n\nFor example, a path consisting of a [Path.lineTo], a [Path.moveTo], and\nanother [Path.lineTo] will contain two contours and thus be represented by\ntwo [PathMetric] objects.\n\nWhen iterating across a [PathMetrics]' contours, the [PathMetric] objects are only\nvalid until the next one is obtained.", "detail": "", "kind": 7, "label": "PathMetrics" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxWidthStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines various ways to horizontally bound the boxes returned by\n[Paragraph.getBoxesForRange].", "detail": "", "kind": 13, "label": "BoxWidthStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PixelFormat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The format of pixel data given to [decodeImageFromPixels].", "detail": "", "kind": 13, "label": "PixelFormat" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDirection", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A direction in which text flows.\n\nSome languages are written from the left to the right (for example, English,\nTamil, or Chinese), while others are written from the right to the left (for\nexample Aramaic, Hebrew, or Urdu). Some are also written in a mixture, for\nexample Arabic is mostly written right-to-left, with numerals written\nleft-to-right.\n\nThe text direction must be provided to APIs that render text or lay out\nboxes horizontally, so that they can determine which direction to start in:\neither right-to-left, [TextDirection.rtl]; or left-to-right,\n[TextDirection.ltr].\n\n## Design discussion\n\nFlutter is designed to address the needs of applications written in any of\nthe world's currently-used languages, whether they use a right-to-left or\nleft-to-right writing direction. Flutter does not support other writing\nmodes, such as vertical text or boustrophedon text, as these are rarely used\nin computer programs.\n\nIt is common when developing user interface frameworks to pick a default\ntext direction — typically left-to-right, the direction most familiar to the\nengineers working on the framework — because this simplifies the development\nof applications on the platform. Unfortunately, this frequently results in\nthe platform having unexpected left-to-right biases or assumptions, as\nengineers will typically miss places where they need to support\nright-to-left text. This then results in bugs that only manifest in\nright-to-left environments.\n\nIn an effort to minimize the extent to which Flutter experiences this\ncategory of issues, the lowest levels of the Flutter framework do not have a\ndefault text reading direction. Any time a reading direction is necessary,\nfor example when text is to be displayed, or when a\nwriting-direction-dependent value is to be interpreted, the reading\ndirection must be explicitly specified. Where possible, such as in `switch`\nstatements, the right-to-left case is listed first, to avoid the impression\nthat it is an afterthought.\n\nAt the higher levels (specifically starting at the widgets library), an\nambient [Directionality] is introduced, which provides a default. Thus, for\ninstance, a [Text] widget in the scope of a [MaterialApp] widget does not\nneed to be given an explicit writing direction. The [Directionality.of]\nstatic method can be used to obtain the ambient text direction for a\nparticular [BuildContext].\n\n### Known left-to-right biases in Flutter\n\nDespite the design intent described above, certain left-to-right biases have\nnonetheless crept into Flutter's design. These include:\n\n * The [Canvas] origin is at the top left, and the x-axis increases in a\n left-to-right direction.\n\n * The default localization in the widgets and material libraries is\n American English, which is left-to-right.\n\n### Visual properties vs directional properties\n\nMany classes in the Flutter framework are offered in two versions, a\nvisually-oriented variant, and a text-direction-dependent variant. For\nexample, [EdgeInsets] is described in terms of top, left, right, and bottom,\nwhile [EdgeInsetsDirectional] is described in terms of top, start, end, and\nbottom, where start and end correspond to right and left in right-to-left\ntext and left and right in left-to-right text.\n\nThere are distinct use cases for each of these variants.\n\nText-direction-dependent variants are useful when developing user interfaces\nthat should \"flip\" with the text direction. For example, a paragraph of text\nin English will typically be left-aligned and a quote will be indented from\nthe left, while in Arabic it will be right-aligned and indented from the\nright. Both of these cases are described by the direction-dependent\n[TextAlign.start] and [EdgeInsetsDirectional.start].\n\nIn contrast, the visual variants are useful when the text direction is known\nand not affected by the reading direction. For example, an application\ngiving driving directions might show a \"turn left\" arrow on the left and a\n\"turn right\" arrow on the right — and would do so whether the application\nwas localized to French (left-to-right) or Hebrew (right-to-left).\n\nIn practice, it is also expected that many developers will only be\ntargeting one language, and in that case it may be simpler to think in\nvisual terms.", "detail": "", "kind": 13, "label": "TextDirection" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Rect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable, 2D, axis-aligned, floating-point rectangle whose coordinates\nare relative to a given origin.\n\nA Rect can be created with one its constructors or from an [Offset] and a\n[Size] using the `&` operator:\n\n```dart\nRect myRect = const Offset(1.0, 2.0) & const Size(3.0, 4.0);\n```", "detail": "", "kind": 7, "label": "Rect" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsAction", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The possible actions that can be conveyed from the operating system\naccessibility APIs to a semantics node.", "detail": "", "kind": 7, "label": "SemanticsAction" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paragraph", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A paragraph of text.\n\nA paragraph retains the size and position of each glyph in the text and can\nbe efficiently resized and painted.\n\nTo create a [Paragraph] object, use a [ParagraphBuilder].\n\nParagraphs can be displayed on a [Canvas] using the [Canvas.drawParagraph]\nmethod.", "detail": "", "kind": 7, "label": "Paragraph" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextBox", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A rectangle enclosing a run of text.\n\nThis is similar to [Rect] but includes an inherent [TextDirection].", "detail": "", "kind": 7, "label": "TextBox" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Scene", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object representing a composited scene.\n\nTo create a Scene object, use a [SceneBuilder].\n\nScene objects can be displayed on the screen using the\n[Window.render] method.", "detail": "", "kind": 7, "label": "Scene" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ColorFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A description of a color filter to apply when drawing a shape or compositing\na layer with a particular [Paint]. A color filter is a function that takes\ntwo colors, and outputs one color. When applied during compositing, it is\nindependently applied to each pixel of the layer being drawn before the\nentire layer is merged with the destination.\n\nInstances of this class are used with [Paint.colorFilter] on [Paint]\nobjects.", "detail": "", "kind": 7, "label": "ColorFilter" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "EngineLayer", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A handle for the framework to hold and retain an engine layer across frames.", "detail": "", "kind": 7, "label": "EngineLayer" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RSTransform", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A transform consisting of a translation, a rotation, and a uniform scale.\n\nUsed by [Canvas.drawAtlas]. This is a more efficient way to represent these\nsimple transformations than a full matrix.", "detail": "", "kind": 7, "label": "RSTransform" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Brightness", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Describes the contrast of a theme or color palette.", "detail": "", "kind": 13, "label": "Brightness" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BoxHeightStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines various ways to vertically bound the boxes returned by\n[Paragraph.getBoxesForRange].", "detail": "", "kind": 13, "label": "BoxHeightStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrameCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onBeginFrame].", "detail": "(Duration duration) → void", "kind": 7, "label": "FrameCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object that determines the size, position, and rendering of text.\n\nSee also:\n\n * [TextStyle](https://api.flutter.dev/flutter/painting/TextStyle-class.html), the class in the [painting] library.\n", "detail": "", "kind": 7, "label": "TextStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParagraphStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object that determines the configuration used by\n[ParagraphBuilder] to position lines within a [Paragraph] of text.", "detail": "", "kind": 7, "label": "ParagraphStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FilterQuality", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Quality levels for image filters.\n\nSee [Paint.filterQuality].", "detail": "", "kind": 13, "label": "FilterQuality" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsUpdate", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An opaque object representing a batch of semantics updates.\n\nTo create a SemanticsUpdate object, use a [SemanticsUpdateBuilder].\n\nSemantics updates can be applied to the system's retained semantics tree\nusing the [Window.updateSemantics] method.", "detail": "", "kind": 7, "label": "SemanticsUpdate" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageDecoderCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Callback signature for [decodeImageFromList].", "detail": "(Image result) → void", "kind": 7, "label": "ImageDecoderCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathMetric", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Utilities for measuring a [Path] and extracting sub-paths.\n\nIterate over the object returned by [Path.computeMetrics] to obtain\n[PathMetric] objects.\n\nOnce created, the methods on this class will only be valid while the\niterator is at the contour for which they were created. It will also only be\nvalid for the path as it was specified when [Path.computeMetrics] was called.\nIf additional contours are added or any contours are updated, the metrics\nneed to be recomputed. Previously created metrics will still refer to a\nsnapshot of the path at the time they were computed, rather than to the\nactual metrics for the new mutations to the path.", "detail": "", "kind": 7, "label": "PathMetric" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParagraphBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Builds a [Paragraph] containing text with the given styling information.\n\nTo set the paragraph's alignment, truncation, and ellipsizing behavior, pass\nan appropriately-configured [ParagraphStyle] object to the [new\nParagraphBuilder] constructor.\n\nThen, call combinations of [pushStyle], [addText], and [pop] to add styled\ntext to the object.\n\nFinally, call [build] to obtain the constructed [Paragraph] object. After\nthis point, the builder is no longer usable.\n\nAfter constructing a [Paragraph], call [Paragraph.layout] on it and then\npaint it with [Canvas.drawParagraph].", "detail": "", "kind": 7, "label": "ParagraphBuilder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Codec", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A handle to an image codec.\n\nThis class is created by the engine, and should not be instantiated\nor extended directly.\n\nTo obtain an instance of the [Codec] interface, see\n[instantiateImageCodec].", "detail": "", "kind": 7, "label": "Codec" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TileMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines what happens at the edge of the gradient.\n\nA gradient is defined along a finite inner area. In the case of a linear\ngradient, it's between the parallel lines that are orthogonal to the line\ndrawn between two points. In the case of radial gradients, it's the disc\nthat covers the circle centered on a particular point up to a given radius.\n\nThis enum is used to define how the gradient should paint the regions\noutside that defined inner area.\n\nSee also:\n\n * [painting.Gradient], the superclass for [LinearGradient] and\n [RadialGradient], as used by [BoxDecoration] et al, which works in\n relative coordinates and can create a [Shader] representing the gradient\n for a particular [Rect] on demand.\n * [dart:ui.Gradient], the low-level class used when dealing with the\n [Paint.shader] property directly, with its [new Gradient.linear] and [new\n Gradient.radial] constructors.", "detail": "", "kind": 13, "label": "TileMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformMessageCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onPlatformMessage].", "detail": "(String name, ByteData data, PlatformMessageResponseCallback callback) → void", "kind": 7, "label": "PlatformMessageCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ClipOp", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines how a new clip region should be merged with the existing clip\nregion.\n\nUsed by [Canvas.clipRect].", "detail": "", "kind": 13, "label": "ClipOp" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SceneHost", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "(Fuchsia-only) Hosts content provided by another application.", "detail": "", "kind": 7, "label": "SceneHost" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDeviceKind", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The kind of pointer device.", "detail": "", "kind": 13, "label": "PointerDeviceKind" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontWeight", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The thickness of the glyphs used to draw the text", "detail": "", "kind": 7, "label": "FontWeight" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Picture", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An object representing a sequence of recorded graphical operations.\n\nTo create a [Picture], use a [PictureRecorder].\n\nA [Picture] can be placed in a [Scene] using a [SceneBuilder], via\nthe [SceneBuilder.addPicture] method. A [Picture] can also be\ndrawn into a [Canvas], using the [Canvas.drawPicture] method.", "detail": "", "kind": 7, "label": "Picture" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "WindowPadding", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A representation of distances for each of the four edges of a rectangle,\nused to encode the view insets and padding that applications should place\naround their user interface, as exposed by [Window.viewInsets] and\n[Window.padding]. View insets and padding are preferably read via\n[MediaQuery.of].\n\nFor a generic class that represents distances around a rectangle, see the\n[EdgeInsets] class.\n\nSee also:\n\n * [WidgetsBindingObserver], for a widgets layer mechanism to receive\n notifications when the padding changes.\n * [MediaQuery.of], for the preferred mechanism for accessing these values.\n * [Scaffold], which automatically applies the padding in material design\n applications.", "detail": "", "kind": 7, "label": "WindowPadding" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsFlag", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A Boolean value that can be associated with a semantics node.", "detail": "", "kind": 7, "label": "SemanticsFlag" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "OffsetBase", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for [Size] and [Offset], which are both ways to describe\na distance as a two-dimensional axis-aligned vector.", "detail": "", "kind": 7, "label": "OffsetBase" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Color", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable 32 bit color value in ARGB format.\n\nConsider the light teal of the Flutter logo. It is fully opaque, with a red\nchannel value of 0x42 (66), a green channel value of 0xA5 (165), and a blue\nchannel value of 0xF5 (245). In the common \"hash syntax\" for color values,\nit would be described as `#42A5F5`.\n\nHere are some ways it could be constructed:\n\n```dart\nColor c = const Color(0xFF42A5F5);\nColor c = const Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5);\nColor c = const Color.fromARGB(255, 66, 165, 245);\nColor c = const Color.fromRGBO(66, 165, 245, 1.0);\n```\n\nIf you are having a problem with `Color` wherein it seems your color is just\nnot painting, check to make sure you are specifying the full 8 hexadecimal\ndigits. If you only specify six, then the leading two digits are assumed to\nbe zero, which means fully-transparent:\n\n```dart\nColor c1 = const Color(0xFFFFFF); // fully transparent white (invisible)\nColor c2 = const Color(0xFFFFFFFF); // fully opaque white (visible)\n```\n\nSee also:\n\n * [Colors](https://docs.flutter.io/flutter/material/Colors-class.html), which\n defines the colors found in the Material Design specification.", "detail": "", "kind": 7, "label": "Color" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Offset", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable 2D floating-point offset.\n\nGenerally speaking, Offsets can be interpreted in two ways:\n\n1. As representing a point in Cartesian space a specified distance from a\n separately-maintained origin. For example, the top-left position of\n children in the [RenderBox] protocol is typically represented as an\n [Offset] from the top left of the parent box.\n\n2. As a vector that can be applied to coordinates. For example, when\n painting a [RenderObject], the parent is passed an [Offset] from the\n screen's origin which it can add to the offsets of its children to find\n the [Offset] from the screen's origin to each of the children.\n\nBecause a particular [Offset] can be interpreted as one sense at one time\nthen as the other sense at a later time, the same class is used for both\nsenses.\n\nSee also:\n\n * [Size], which represents a vector describing the size of a rectangle.", "detail": "", "kind": 7, "label": "Offset" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "MaskFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A mask filter to apply to shapes as they are painted. A mask filter is a\nfunction that takes a bitmap of color pixels, and returns another bitmap of\ncolor pixels.\n\nInstances of this class are used with [Paint.maskFilter] on [Paint] objects.", "detail": "", "kind": 7, "label": "MaskFilter" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAlign", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Whether and how to align text horizontally.", "detail": "", "kind": 13, "label": "TextAlign" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "AppLifecycleState", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "States that an application can be in.\n\nThe values below describe notifications from the operating system.\nApplications should not expect to always receive all possible\nnotifications. For example, if the users pulls out the battery from the\ndevice, no notification will be sent before the application is suddenly\nterminated, along with the rest of the operating system.\n\nSee also:\n\n * [WidgetsBindingObserver], for a mechanism to observe the lifecycle state\n from the widgets layer.", "detail": "", "kind": 13, "label": "AppLifecycleState" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrokeJoin", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Styles to use for line segment joins.\n\nThis only affects line joins for polygons drawn by [Canvas.drawPath] and\nrectangles, not points drawn as lines with [Canvas.drawPoints].\n\nSee also:\n\n* [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is\n used.\n* [StrokeCap] for the different kinds of line endings.", "detail": "", "kind": 13, "label": "StrokeJoin" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Gradient", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that renders a color gradient.\n\nThere are several types of gradients, represented by the various constructors\non this class.\n\nSee also:\n\n * [Gradient](https://api.flutter.dev/flutter/painting/Gradient-class.html), the class in the [painting] library.\n", "detail": "", "kind": 7, "label": "Gradient" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Size", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Holds a 2D floating-point size.\n\nYou can think of this as an [Offset] from the origin.", "detail": "", "kind": 7, "label": "Size" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PluginUtilities", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Functionality for Flutter plugin authors.\n\nSee also:\n\n * [IsolateNameServer], which provides utilities for dealing with\n [Isolate]s.", "detail": "", "kind": 7, "label": "PluginUtilities" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Window", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The most basic interface to the host operating system's user interface.\n\nThere is a single Window instance in the system, which you can\nobtain from the [window] property.", "detail": "", "kind": 7, "label": "Window" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PlatformMessageResponseCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for responses to platform messages.\n\nUsed as a parameter to [Window.sendPlatformMessage] and\n[Window.onPlatformMessage].", "detail": "(ByteData data) → void", "kind": 7, "label": "PlatformMessageResponseCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FrameInfo", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information for a single frame of an animation.\n\nTo obtain an instance of the [FrameInfo] interface, see\n[Codec.getNextFrame].", "detail": "", "kind": 7, "label": "FrameInfo" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "RRect", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An immutable rounded rectangle with the custom radii for all four corners.", "detail": "", "kind": 7, "label": "RRect" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "CallbackHandle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A wrapper for a raw callback handle.\n\nThis is the return type for [PluginUtilities.getCallbackHandle].", "detail": "", "kind": 7, "label": "CallbackHandle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextAffinity", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A way to disambiguate a [TextPosition] when its offset could match two\ndifferent locations in the rendered string.\n\nFor example, at an offset where the rendered text wraps, there are two\nvisual positions that the offset could represent: one prior to the line\nbreak (at the end of the first line) and one after the line break (at the\nstart of the second line). A text affinity disambiguates between these two\ncases.\n\nThis affects only line breaks caused by wrapping, not explicit newline\ncharacters. For newline characters, the position is fully specified by the\noffset alone, and there is no ambiguity.\n\n[TextAffinity] also affects bidirectional text at the interface between LTR\nand RTL text. Consider the following string, where the lowercase letters\nwill be displayed as LTR and the uppercase letters RTL: \"helloHELLO\". When\nrendered, the string would appear visually as \"helloOLLEH\". An offset of 5\nwould be ambiguous without a corresponding [TextAffinity]. Looking at the\nstring in code, the offset represents the position just after the \"o\" and\njust before the \"H\". When rendered, this offset could be either in the\nmiddle of the string to the right of the \"o\" or at the end of the string to\nthe right of the \"H\".", "detail": "", "kind": 13, "label": "TextAffinity" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VertexMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of triangles.\n\nUsed by [Canvas.drawVertices].", "detail": "", "kind": 13, "label": "VertexMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Canvas", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An interface for recording graphical operations.\n\n[Canvas] objects are used in creating [Picture] objects, which can\nthemselves be used with a [SceneBuilder] to build a [Scene]. In\nnormal usage, however, this is all handled by the framework.\n\nA canvas has a current transformation matrix which is applied to all\noperations. Initially, the transformation matrix is the identity transform.\nIt can be modified using the [translate], [scale], [rotate], [skew],\nand [transform] methods.\n\nA canvas also has a current clip region which is applied to all operations.\nInitially, the clip region is infinite. It can be modified using the\n[clipRect], [clipRRect], and [clipPath] methods.\n\nThe current transform and clip can be saved and restored using the stack\nmanaged by the [save], [saveLayer], and [restore] methods.", "detail": "", "kind": 7, "label": "Canvas" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Radius", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A radius for either circular or elliptical shapes.", "detail": "", "kind": 7, "label": "Radius" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathMetricIterator", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Tracks iteration from one segment of a path to the next for measurement.", "detail": "", "kind": 7, "label": "PathMetricIterator" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerChange", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "How the pointer has changed since the last report.", "detail": "", "kind": 13, "label": "PointerChange" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Image", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Opaque handle to raw decoded image data (pixels).\n\nTo obtain an [Image] object, use [instantiateImageCodec].\n\nTo draw an [Image], use one of the methods on the [Canvas] class, such as\n[Canvas.drawImage].\n\nSee also:\n\n * [Image](https://api.flutter.dev/flutter/widgets/Image-class.html), the class in the [widgets] library.\n", "detail": "", "kind": 7, "label": "Image" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Paint", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A description of the style to use when drawing on a [Canvas].\n\nMost APIs on [Canvas] take a [Paint] object to describe the style\nto use for that operation.", "detail": "", "kind": 7, "label": "Paint" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsUpdateBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An object that creates [SemanticsUpdate] objects.\n\nOnce created, the [SemanticsUpdate] objects can be passed to\n[Window.updateSemantics] to update the semantics conveyed to the user.", "detail": "", "kind": 7, "label": "SemanticsUpdateBuilder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "BlendMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Algorithms to use when painting on the canvas.\n\nWhen drawing a shape or image onto a canvas, different algorithms can be\nused to blend the pixels. The different values of [BlendMode] specify\ndifferent such algorithms.\n\nEach algorithm has two inputs, the _source_, which is the image being drawn,\nand the _destination_, which is the image into which the source image is\nbeing composited. The destination is often thought of as the _background_.\nThe source and destination both have four color channels, the red, green,\nblue, and alpha channels. These are typically represented as numbers in the\nrange 0.0 to 1.0. The output of the algorithm also has these same four\nchannels, with values computed from the source and destination.\n\nThe documentation of each value below describes how the algorithm works. In\neach case, an image shows the output of blending a source image with a\ndestination image. In the images below, the destination is represented by an\nimage with horizontal lines and an opaque landscape photograph, and the\nsource is represented by an image with vertical lines (the same lines but\nrotated) and a bird clip-art image. The [src] mode shows only the source\nimage, and the [dst] mode shows only the destination image. In the\ndocumentation below, the transparency is illustrated by a checkerboard\npattern. The [clear] mode drops both the source and destination, resulting\nin an output that is entirely transparent (illustrated by a solid\ncheckerboard pattern).\n\nThe horizontal and vertical bars in these images show the red, green, and\nblue channels with varying opacity levels, then all three color channels\ntogether with those same varying opacity levels, then all three color\nchannels set to zero with those varying opacity levels, then two bars showing\na red/green/blue repeating gradient, the first with full opacity and the\nsecond with partial opacity, and finally a bar with the three color channels\nset to zero but the opacity varying in a repeating gradient.\n\n## Application to the [Canvas] API\n\nWhen using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the\n[Paint] given to the [Canvas.saveLayer] will be applied when\n[Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new\nlayer onto which shapes and images are painted; when [Canvas.restore] is\ncalled, that layer is then composited onto the parent layer, with the source\nbeing the most-recently-drawn shapes and images, and the destination being\nthe parent layer. (For the first [Canvas.saveLayer] call, the parent layer\nis the canvas itself.)\n\nSee also:\n\n * [Paint.blendMode], which uses [BlendMode] to define the compositing\n strategy.", "detail": "", "kind": 13, "label": "BlendMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecoration", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A linear decoration to draw near the text.", "detail": "", "kind": 7, "label": "TextDecoration" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageFilter", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A filter operation to apply to a raster image.\n\nSee also:\n\n * [BackdropFilter], a widget that applies [ImageFilter] to its rendering.\n * [SceneBuilder.pushBackdropFilter], which is the low-level API for using\n this class.", "detail": "", "kind": 7, "label": "ImageFilter" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PaintingStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Strategies for painting shapes and paths on a canvas.\n\nSee [Paint.style].", "detail": "", "kind": 13, "label": "PaintingStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Base class for objects such as [Gradient] and [ImageShader] which\ncorrespond to shaders as used by [Paint.shader].", "detail": "", "kind": 7, "label": "Shader" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDataPacketCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onPointerDataPacket].", "detail": "(PointerDataPacket packet) → void", "kind": 7, "label": "PointerDataPacketCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextPosition", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A position in a string of text.\n\nA TextPosition can be used to locate a position in a string in code (using\nthe [offset] property), and it can also be used to locate the same position\nvisually in a rendered string of text (using [offset] and, when needed to\nresolve ambiguity, [affinity]).\n\nThe location of an offset in a rendered string is ambiguous in two cases.\nOne happens when rendered text is forced to wrap. In this case, the offset\nwhere the wrap occurs could visually appear either at the end of the first\nline or the beginning of the second line. The second way is with\nbidirectional text. An offset at the interface between two different text\ndirections could have one of two locations in the rendered text.\n\nSee the documentation for [TextAffinity] for more information on how\nTextAffinity disambiguates situations like these.", "detail": "", "kind": 7, "label": "TextPosition" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointMode", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Defines how a list of points is interpreted when drawing a set of points.\n\nUsed by [Canvas.drawPoints].", "detail": "", "kind": 13, "label": "PointMode" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "VoidCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature of callbacks that have no arguments and return no data.", "detail": "() → void", "kind": 7, "label": "VoidCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SemanticsActionCallback", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Signature for [Window.onSemanticsAction].", "detail": "(int id, SemanticsAction action, ByteData args) → void", "kind": 7, "label": "SemanticsActionCallback" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "FontStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Whether to slant the glyphs in the font", "detail": "", "kind": 13, "label": "FontStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathOperation", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Strategies for combining paths.\n\nSee also:\n\n* [Path.combine], which uses this enum to decide how to combine two paths.", "detail": "", "kind": 13, "label": "PathOperation" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PictureRecorder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Records a [Picture] containing a sequence of graphical operations.\n\nTo begin recording, construct a [Canvas] to record the commands.\nTo end recording, use the [PictureRecorder.endRecording] method.", "detail": "", "kind": 7, "label": "PictureRecorder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerDataPacket", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A sequence of reports about the state of pointers.", "detail": "", "kind": 7, "label": "PointerDataPacket" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Locale", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "An identifier used to select a user's language and formatting preferences.\n\nThis represents a [Unicode Language\nIdentifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)\n(i.e. without Locale extensions), except variants are not supported.\n\nLocales are canonicalized according to the \"preferred value\" entries in the\n[IANA Language Subtag\nRegistry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).\nFor example, `const Locale('he')` and `const Locale('iw')` are equal and\nboth have the [languageCode] `he`, because `iw` is a deprecated language\nsubtag that was replaced by the subtag `he`.\n\nSee also:\n\n * [Window.locale], which specifies the system's currently selected\n [Locale].", "detail": "", "kind": 7, "label": "Locale" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "StrutStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "See also:\n\n * [StrutStyle](https://api.flutter.dev/flutter/painting/StrutStyle-class.html), the class in the [painting] library.\n", "detail": "", "kind": 7, "label": "StrutStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Path", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A complex, one-dimensional subset of a plane.\n\nA path consists of a number of sub-paths, and a _current point_.\n\nSub-paths consist of segments of various types, such as lines,\narcs, or beziers. Sub-paths can be open or closed, and can\nself-intersect.\n\nClosed sub-paths enclose a (possibly discontiguous) region of the\nplane based on the current [fillType].\n\nThe _current point_ is initially at the origin. After each\noperation adding a segment to a sub-path, the current point is\nupdated to the end of that segment.\n\nPaths can be drawn on canvases using [Canvas.drawPath], and can\nused to create clip regions using [Canvas.clipPath].", "detail": "", "kind": 7, "label": "Path" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "SceneBuilder", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Builds a [Scene] containing the given visuals.\n\nA [Scene] can then be rendered using [Window.render].\n\nTo draw graphical operations onto a [Scene], first create a\n[Picture] using a [PictureRecorder] and a [Canvas], and then add\nit to the scene using [addPicture].", "detail": "", "kind": 7, "label": "SceneBuilder" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Clip", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Different ways to clip a widget's content.", "detail": "", "kind": 13, "label": "Clip" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerSignalKind", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The kind of [PointerDeviceKind.signal].", "detail": "", "kind": 13, "label": "PointerSignalKind" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ParagraphConstraints", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Layout constraints for [Paragraph] objects.\n\nInstances of this class are typically used with [Paragraph.layout].\n\nThe only constraint that can be specified is the [width]. See the discussion\nat [width] for more details.", "detail": "", "kind": 7, "label": "ParagraphConstraints" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PointerData", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Information about the state of a pointer.", "detail": "", "kind": 7, "label": "PointerData" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "Shadow", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A single shadow.\n\nMultiple shadows are stacked together in a [TextStyle].", "detail": "", "kind": 7, "label": "Shadow" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "TextDecorationStyle", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The style in which to draw a text decoration", "detail": "", "kind": 13, "label": "TextDecorationStyle" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "PathFillType", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "Determines the winding rule that decides how the interior of a [Path] is\ncalculated.\n\nThis enum is used by the [Path.fillType] property.", "detail": "", "kind": 13, "label": "PathFillType" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageByteFormat", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "The format in which image bytes should be returned when using\n[Image.toByteData].", "detail": "", "kind": 13, "label": "ImageByteFormat" }, { "data": { "autoImportDisplayUri": "dart:ui", "libraryId": 28, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "ImageShader", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999997", "preselect": null, "documentation": "A shader (as used by [Paint.shader]) that tiles an image.", "detail": "", "kind": 7, "label": "ImageShader" } ] [Trace - 12:35:35 PM] Received response 'textDocument/hover - (118)' in 820ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:35 PM] Received response 'textDocument/hover - (119)' in 822ms. Result: { "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\ncalcurate(dynamic double) → void\n```", "kind": "markdown" } } [Trace - 12:35:35 PM] Sending notification 'textDocument/didSave'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 31 }, "text": null } [Trace - 12:35:36 PM] Received response 'textDocument/hover - (120)' in 598ms. Result: { "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } }, "contents": { "value": "```dart\ndynamic double\n```", "kind": "markdown" } } [Trace - 12:35:36 PM] Received response 'textDocument/documentHighlight - (121)' in 599ms. Result: [ { "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } } ] [Trace - 12:35:36 PM] Received response 'textDocument/codeAction - (117)' in 610ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:35:36 PM] Received response 'textDocument/hover - (122)' in 329ms. Result: { "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } }, "contents": { "value": "```dart\ndynamic double\n```", "kind": "markdown" } } [Trace - 12:35:36 PM] Received response 'textDocument/signatureHelp - (123)' in 329ms. Result: null [Trace - 12:35:36 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:36 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "A function body must be provided.", "source": "dart", "code": "missing_function_body", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:36 PM] Received notification 'window/showMessage'. Params: { "message": "Unknown method textDocument/didSave", "type": 1 } [Trace - 12:35:36 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:36 PM] Sending request 'textDocument/codeAction - (124)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 24 } }, "context": { "diagnostics": [] } } [Trace - 12:35:36 PM] Sending request 'textDocument/hover - (125)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:36 PM] Sending request 'textDocument/hover - (126)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:36 PM] Sending request 'textDocument/hover - (127)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 17 } } [Trace - 12:35:36 PM] Received response 'textDocument/codeAction - (124)' in 156ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:35:36 PM] Received response 'textDocument/hover - (125)' in 156ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:36 PM] Received response 'textDocument/hover - (126)' in 156ms. Result: { "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\ncalcurate(dynamic double) → void\n```", "kind": "markdown" } } [Trace - 12:35:36 PM] Received response 'textDocument/hover - (127)' in 157ms. Result: { "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } }, "contents": { "value": "```dart\ndynamic double\n```", "kind": "markdown" } } [Trace - 12:35:36 PM] Sending request 'textDocument/hover - (128)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 23 } } [Trace - 12:35:36 PM] Sending request 'textDocument/signatureHelp - (129)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 23 } } [Trace - 12:35:36 PM] Received response 'textDocument/hover - (128)' in 161ms. Result: { "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } }, "contents": { "value": "```dart\ndynamic double\n```", "kind": "markdown" } } [Trace - 12:35:36 PM] Received response 'textDocument/signatureHelp - (129)' in 160ms. Result: null [Trace - 12:35:38 PM] Sending request 'completionItem/resolve - (130)'. Params: { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "double", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "sortText": "999994", "preselect": null, "documentation": "A double-precision floating point number.\n\nRepresentation of Dart doubles containing double specific constants\nand operations and specializations of operations inherited from\n[num]. Dart doubles are 64-bit floating-point numbers as specified in the\nIEEE 754 standard.\n\nThe [double] type is contagious. Operations on [double]s return\n[double] results.\n\nIt is a compile-time error for a class to attempt to extend or implement\ndouble.", "detail": "", "kind": 7, "label": "double" } [Trace - 12:35:38 PM] Received response 'completionItem/resolve - (130)' in 50ms. Result: { "data": { "autoImportDisplayUri": "dart:core", "libraryId": 549, "offset": 2700, "file": "/Users/s04407/OSS/flutter_compass/lib/main.dart" }, "commitCharacters": [], "additionalTextEdits": [], "textEdit": { "newText": "double", "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } } }, "insertTextFormat": 1, "insertText": "double", "sortText": "999994", "documentation": "A double-precision floating point number.\n\nRepresentation of Dart doubles containing double specific constants\nand operations and specializations of operations inherited from\n[num]. Dart doubles are 64-bit floating-point numbers as specified in the\nIEEE 754 standard.\n\nThe [double] type is contagious. Operations on [double]s return\n[double] results.\n\nIt is a compile-time error for a class to attempt to extend or implement\ndouble.", "detail": "Auto import from 'dart:core'", "kind": 7, "label": "double" } [Trace - 12:35:38 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 32 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 17 }, "end": { "line": 96, "character": 23 } }, "rangeLength": 6, "text": "" } ] } [Trace - 12:35:38 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 33 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 17 }, "end": { "line": 96, "character": 17 } }, "rangeLength": 0, "text": "double" } ] } [Trace - 12:35:38 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 34 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 17 }, "end": { "line": 96, "character": 23 } }, "rangeLength": 6, "text": "" } ] } [Trace - 12:35:38 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 35 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 17 }, "end": { "line": 96, "character": 17 } }, "rangeLength": 0, "text": "double" } ] } [Trace - 12:35:38 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:38 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } }, { "message": "A function body must be provided.", "source": "dart", "code": "missing_function_body", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:38 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "A function body must be provided.", "source": "dart", "code": "missing_function_body", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:38 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:38 PM] Sending request 'textDocument/codeAction - (131)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 24 } }, "context": { "diagnostics": [] } } [Trace - 12:35:38 PM] Sending request 'textDocument/hover - (132)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:38 PM] Sending request 'textDocument/hover - (133)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:38 PM] Sending request 'textDocument/hover - (134)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 17 } } [Trace - 12:35:39 PM] Received response 'textDocument/codeAction - (131)' in 56ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:35:39 PM] Received response 'textDocument/hover - (132)' in 57ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:39 PM] Received response 'textDocument/hover - (133)' in 57ms. Result: { "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\ncalcurate(dynamic double) → void\n```", "kind": "markdown" } } [Trace - 12:35:39 PM] Received response 'textDocument/hover - (134)' in 59ms. Result: { "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } }, "contents": { "value": "```dart\ndynamic double\n```", "kind": "markdown" } } [Trace - 12:35:39 PM] Sending notification 'textDocument/didSave'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 35 }, "text": null } [Trace - 12:35:39 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:39 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "A function body must be provided.", "source": "dart", "code": "missing_function_body", "severity": 1, "range": { "end": { "character": 6, "line": 98 }, "start": { "character": 2, "line": 98 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 137 }, "start": { "character": 9, "line": 137 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 144 }, "start": { "character": 9, "line": 144 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:39 PM] Received notification 'window/showMessage'. Params: { "message": "Unknown method textDocument/didSave", "type": 1 } [Trace - 12:35:39 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:39 PM] Sending request 'textDocument/codeAction - (135)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 24 } }, "context": { "diagnostics": [] } } [Trace - 12:35:39 PM] Sending request 'textDocument/hover - (136)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:39 PM] Sending request 'textDocument/hover - (137)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:39 PM] Sending request 'textDocument/hover - (138)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 17 } } [Trace - 12:35:40 PM] Received response 'textDocument/codeAction - (135)' in 73ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:35:40 PM] Received response 'textDocument/hover - (136)' in 74ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:40 PM] Received response 'textDocument/hover - (137)' in 74ms. Result: { "range": { "end": { "character": 16, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\ncalcurate(dynamic double) → void\n```", "kind": "markdown" } } [Trace - 12:35:40 PM] Received response 'textDocument/hover - (138)' in 76ms. Result: { "range": { "end": { "character": 23, "line": 96 }, "start": { "character": 17, "line": 96 } }, "contents": { "value": "```dart\ndynamic double\n```", "kind": "markdown" } } [Trace - 12:35:41 PM] Sending notification 'textDocument/didChange'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 36 }, "contentChanges": [ { "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 98, "character": 0 } }, "rangeLength": 26, "text": "" } ] } [Trace - 12:35:42 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:42 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 135 }, "start": { "character": 9, "line": 135 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 142 }, "start": { "character": 9, "line": 142 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:42 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null } [Trace - 12:35:42 PM] Sending request 'textDocument/codeAction - (139)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "range": { "start": { "line": 96, "character": 0 }, "end": { "line": 96, "character": 69 } }, "context": { "diagnostics": [] } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (140)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 2 } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (141)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 7 } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (142)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 19 } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (143)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 26 } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (144)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 32 } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (145)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 39 } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (146)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 46 } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (147)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 51 } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (148)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 59 } } [Trace - 12:35:42 PM] Sending request 'textDocument/hover - (149)'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" }, "position": { "line": 96, "character": 61 } } [Trace - 12:35:42 PM] Received response 'textDocument/codeAction - (139)' in 77ms. Result: [ { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.sortMembers", "title": "Sort Members" }, "kind": "source.sortMembers", "title": "Sort Members" }, { "command": { "arguments": [ "/Users/s04407/OSS/flutter_compass/lib/main.dart" ], "command": "edit.organizeImports", "title": "Organize Imports" }, "kind": "source.organizeImports", "title": "Organize Imports" } ] [Trace - 12:35:42 PM] Received response 'textDocument/hover - (140)' in 77ms. Result: { "range": { "end": { "character": 6, "line": 96 }, "start": { "character": 2, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:42 PM] Received response 'textDocument/hover - (141)' in 77ms. Result: { "range": { "end": { "character": 18, "line": 96 }, "start": { "character": 7, "line": 96 } }, "contents": { "value": "```dart\nsetLocation(double lati, double long, [bool weather = true]) → void\n```", "kind": "markdown" } } [Trace - 12:35:42 PM] Received response 'textDocument/hover - (142)' in 79ms. Result: { "range": { "end": { "character": 25, "line": 96 }, "start": { "character": 19, "line": 96 } }, "contents": { "value": "```dart\nabstract class double extends num\n```\n*dart.core*\n\n---\nA double-precision floating point number.\n\nRepresentation of Dart doubles containing double specific constants\nand operations and specializations of operations inherited from\n[num]. Dart doubles are 64-bit floating-point numbers as specified in the\nIEEE 754 standard.\n\nThe [double] type is contagious. Operations on [double]s return\n[double] results.\n\nIt is a compile-time error for a class to attempt to extend or implement\ndouble.", "kind": "markdown" } } [Trace - 12:35:42 PM] Received response 'textDocument/hover - (143)' in 82ms. Result: { "range": { "end": { "character": 30, "line": 96 }, "start": { "character": 26, "line": 96 } }, "contents": { "value": "```dart\ndouble lati\n```", "kind": "markdown" } } [Trace - 12:35:42 PM] Received response 'textDocument/hover - (144)' in 83ms. Result: { "range": { "end": { "character": 38, "line": 96 }, "start": { "character": 32, "line": 96 } }, "contents": { "value": "```dart\nabstract class double extends num\n```\n*dart.core*\n\n---\nA double-precision floating point number.\n\nRepresentation of Dart doubles containing double specific constants\nand operations and specializations of operations inherited from\n[num]. Dart doubles are 64-bit floating-point numbers as specified in the\nIEEE 754 standard.\n\nThe [double] type is contagious. Operations on [double]s return\n[double] results.\n\nIt is a compile-time error for a class to attempt to extend or implement\ndouble.", "kind": "markdown" } } [Trace - 12:35:42 PM] Received response 'textDocument/hover - (145)' in 85ms. Result: { "range": { "end": { "character": 43, "line": 96 }, "start": { "character": 39, "line": 96 } }, "contents": { "value": "```dart\ndouble long\n```", "kind": "markdown" } } [Trace - 12:35:42 PM] Received response 'textDocument/hover - (146)' in 86ms. Result: { "range": { "end": { "character": 50, "line": 96 }, "start": { "character": 46, "line": 96 } }, "contents": { "value": "```dart\nclass bool\n```\n*dart.core*\n\n---\nThe reserved words `true` and `false` denote objects that are the only two\ninstances of this class.\n\nIt is a compile-time error for a class to attempt to extend or implement\nbool.", "kind": "markdown" } } [Trace - 12:35:42 PM] Received response 'textDocument/hover - (147)' in 88ms. Result: { "range": { "end": { "character": 58, "line": 96 }, "start": { "character": 51, "line": 96 } }, "contents": { "value": "```dart\n[bool weather = true]\n```", "kind": "markdown" } } [Trace - 12:35:42 PM] Received response 'textDocument/hover - (148)' in 89ms. Result: null [Trace - 12:35:42 PM] Received response 'textDocument/hover - (149)' in 157ms. Result: { "range": { "end": { "character": 65, "line": 96 }, "start": { "character": 61, "line": 96 } }, "contents": { "value": "", "kind": "markdown" } } [Trace - 12:35:44 PM] Sending notification 'textDocument/didSave'. Params: { "textDocument": { "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart", "version": 36 }, "text": null } [Trace - 12:35:45 PM] Received notification 'window/showMessage'. Params: { "message": "Unknown method textDocument/didSave", "type": 1 } [Trace - 12:35:45 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": true } [Trace - 12:35:45 PM] Received notification 'textDocument/publishDiagnostics'. Params: { "diagnostics": [ { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 16, "line": 135 }, "start": { "character": 9, "line": 135 } } }, { "message": "Name non-constant identifiers using lowerCamelCase.", "source": "dart", "code": "non_constant_identifier_names", "severity": 3, "range": { "end": { "character": 14, "line": 142 }, "start": { "character": 9, "line": 142 } } } ], "uri": "file:///Users/s04407/OSS/flutter_compass/lib/main.dart" } [Trace - 12:35:45 PM] Received notification '$/analyzerStatus'. Params: { "isAnalyzing": null }